一些python简单编程题
eg_1.
编写一个程序,根据给定的公式计算并打印值:。以下是C和H的固定值:C是50。H是30。D是一个变量,它的值应该以逗号分隔的序列输入到程序中。
例子假设程序的输入序列是逗号分隔的:100,150,180,
程序输出为:18,22,24
提示:如果接收到的输出是小数,则应四舍五入到其最近的值(例如,如果接收到的输出是26.0,则应打印为26)。在为问题提供输入数据的情况下,应该假设它是控制台输入。
- 代码:
import math
c = 30;h=20
value = []
# 输入的字符串相当于赋值给input函数
items = [x for x in input('输入数字:').split(',')]
for d in items:
# math库的sqrt平方根函数
# round四舍五入函数
value.append(str(round(math.sqrt(2*c*float(d)/ h))))
# join函数将列表value中元素以,穿插
print(','.join(value))
eg_2.
问题:编写一个程序,以2位数字,X,Y作为输入,生成一个二维数组。数组的第i行和第j列中的元素值应该是i*j。
注意:i= 0,1 . .,X - 1; j = 0, 1,Y-1。
例子假设程序有以下输入:3、5
则程序输出为:[[0,0,0,0,0],[0,1,2,3,4],[0,2,4,6,8]]
提示:注意:如果要为问题提供输入数据,应该假设它是一个控制台输入,以逗号分隔。
- 代码:
a,b = [int(k) for k in input('').split(',')]
li=[]
for i in range(a):
li.append([i*j for j in range(b)])
print(li)
这里我是按照二维数组在python中呈现的方式,每行中来添加各列的数据。
在做这题时我看到一个答主先把二维数组构建出来再赋值,也是一种方法。我把代码贴上来,最下边把链接放上。
print('请输入两个数字:')
input_str = input()
dimensions=[int(x) for x in input_str.split(',')]
rowNum=dimensions[0]
colNum=dimensions[1]
multilist = [[0 for col in range(colNum)] for row in range(rowNum)]
for row in range(rowNum):
for col in range(colNum):
multilist[row][col]= row*col
print (multilist)
eg_3
问题:编写一个程序,接受一行序列作为输入,并在将句子中的所有字符大写后打印行。
假设向程序提供以下输入:
Hello world
Practice makes perfect
则输出为:
HELLO WORLD
PRACTICE MAKES PERFECT
提示:在为问题提供输入数据的情况下,应该假设它是控制台输入。
没有具体明确输入的行数时,while Ture的用法:
lines = []
while True:
s = input()
if s:
lines.append(s.upper())
else:
break;
for sentence in lines:
print(sentence)
eg_4.
问题:编写一个程序,接受一系列逗号分隔的4位二进制数作为输入,然后检查它们是否可被5整除。 可被5整除的数字将以逗号分隔的顺序打印。
例:
0100,0011,1010,1001
那么输出应该是:
1010
注意:假设数据由控制台输入。
代码:
li = [x for x in input().split(',')]
ak=[]
for i in li:
if not int(i, 2)%5:
ak.append(i)
print(ak)
注:int(a,b),b是进制数,默认为十进制。将b进制的数以十进制方式转换。
eg_5.
题:编写一个程序,它将找到1000到3000之间的所有这些数字(均包括在内),这样数字的每个数字都是偶数。
获得的数字应以逗号分隔的顺序打印在一行上。
- 代码:
for i in range(1000,3001):
if i%10%2==0 and i//10%10%2==0 and i//100%10%2==0 and i//1000%10%2==0:
print(i)
再贴一种:
values = []
for i in range(1000, 3001):
s = str(i)
if (int(s[0])%2==0) and (int(s[1])%2==0) and (int(s[2])%2==0) and (int(s[3])%2==0):
values.append(s)
print (",".join(values))
eg_6.(特别有意思的拼接)
题:编写一个程序,计算a + aa + aaa + aaaa的值,给定的数字作为a的值。假设为程序提供了以下输入:
9 然后,输出应该是: 11106
- 代码:
a = input('请输入一个数字:')
n1 = int( "{}".format(a))
n2 = int( "{}{}".format(a,a))
n3 = int( "{}{}{}".format(a,a,a))
n4 = int( "{}{}{}{}".format(a,a,a,a))
print (n1+n2+n3+n4)
再贴一种:
print('请输入一个数字:')
a = input()
n1 = int( "%s" % a )
n2 = int( "%s%s" % (a,a) )
n3 = int( "%s%s%s" % (a,a,a) )
n4 = int( "%s%s%s%s" % (a,a,a,a) )
print (n1+n2+n3+n4)
eg_7.
题:使用列表推导来对列表中的每个奇数。 该列表由一系列逗号分隔的数字输入。
假设为程序提供了以下输入:
1,2,3,4,5,6,7,8,9
然后,输出应该是:
1,3,5,7,9
- 代码:
li=[x for x in input().split(',') if int(x)%2!=0]
题:编写一个程序,根据控制台输入的事务日志计算银行帐户的净金额。 事务日志格式如下所示:
D 100
W 200
D表示存款,而W表示提款。
假设为程序提供了以下输入:
D 300
D 300
W 200
D 100
然后,输出应该是:
500
提示:如果输入数据被提供给问题,则应该假定它是控制台输入。
- 代码:
money=0
while True:
x = input()
if x:
a, b = x.split(' ')
if a.lower() == 'd':
money+=int(b)
else:
money-=int(b)
else:
break
print(money)
注意这时候的input后边不能直接跟split函数,否则会报错。
上一篇: 一些写过的python题