欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一些python简单编程题

程序员文章站 2022-07-15 08:10:48
...

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编程题给你练(附答案)