一些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函数,否则会报错。

100+Python编程题给你练(附答案)

你可能感兴趣的:(一些python简单编程题)