Python3的100多个Python挑战性编程练习题【收藏就对了】

1.等级说明

1级初学者

初学者是指刚刚完成Python入门课程的人。他可以使用1或2个Python类或函数解决一些问题。通常,答案可以直接在教科书中找到。

2级中级

中级是指刚刚学习过Python,但已经具有相对较强的编程背景的人。他应该能够解决可能涉及3或3个Python类或函数的问题。答案不能直接在教科书中找到。

3级高级。

他应该使用Python通过更丰富的库函数,数据结构和算法来解决更复杂的问题。他应该使用几种Python标准软件包和高级技术来解决该问题。

2.问题模板

问题提示解决方案

3.问题

问题1

1级

问题:编写一个程序,查找所有此类数字,它们可以被7整除,但不能是5的倍数,介于2000和3200之间(均包括在内)。获得的数字应以逗号分隔的顺序打印在一行上。

提示:考虑使用范围(#begin,#end)方法

解决方案:

升= []

为 我 在 范围(2000,3201):

如果(我%7 == 0)和(我%5 =!0):

    升。追加(str(i))

打印(‘,’。join(l))

问题2

1级

问题:编写一个程序,可以计算给定数字的阶乘。结果应以逗号分隔的顺序打印在一行上。假设将以下输入提供给程序:8然后,输出应为:40320

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

def fact(x):

如果 x  ==  0:

    返回 1

返回 x  *  fact(x  -  1)

x = int(输入())

打印(事实(x))

问题3

1级

问题:使用给定的整数n,编写程序以生成包含(i,i * i)的字典,该字典的值应为1到n之间的整数(都包括在内)。然后程序应打印字典。假设将以下输入提供给程序:8然后,输出应为:{1:1、2:4、3:9、4:16、5:25、6:36、7:49、8:64 }

提示:如果将输入数据提供给问题,则应假定它是控制台输入。考虑使用dict()

解决方案:

n = int(输入())

d =字典()

对于 i 在 范围(1,n + 1)中:

d [ i ] = i * i

打印(d)

问题4

1级

问题:编写一个程序,该程序从控制台接受一系列逗号分隔的数字,并生成包含每个数字的列表和元组。假设将以下输入提供给程序:34,67,55,33,12,98然后,输出应为:[‘34’,‘67’,‘55’,‘33’,‘12’,’ 98’](“ 34”,“ 67”,“ 55”,“ 33”,“ 12”,“ 98”)

提示:如果将输入数据提供给问题,则应假定它是控制台输入。tuple()方法可以将列表转换为元组

解决方案:

值=输入()

l =值。split(“,”)

t =元组(l)

打印(l)

打印(t)

问题5

1级

问题:定义一个至少具有两个方法的类:getString:从控制台输入中获取字符串printString:以大写形式打印该字符串。还请包括简单的测试功能来测试类方法。

提示:使用init方法构造一些参数

解决方案:

类 InputOutString(object):

def  __init__(self):

    self。s  =  “”

def  getString(self):

    self。s  = 输入()


高清 PRINTSTRING(个体经营):

    打印(自我。小号。上())

strObj = InputOutString()

strObj。getString()

strObj。printString()

问题6

2级

问题:编写一个程序,根据给定的公式计算并打印该值:Q = [(2 * C * D)/ H]的平方根以下是C和H的固定值:C为50。H为30 。D是变量,其值应以逗号分隔的顺序输入到程序中。示例假定给程序提供了以下逗号分隔的输入序列:100,150,180程序的输出应为:18,22,24

提示:如果接收到的输出为十进制形式,则应四舍五入至最接近的值(例如,如果接收到的输出为26.0,则应将其打印为26)。应假定为控制台输入。

解决方案:

进口 数学

Ç = 50

ħ = 30

值 = []

项= [ X 为 X 在 输入()。分裂(‘’)]

为 d 中 的项目:

值。追加(STR(INT(圆形(数学。SQRT(2 * ç *浮子(d)/ ħ)))))

print(‘,’。join(value))

问题7

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]]

提示:注意:如果将输入数据提供给问题,则应假定它是以逗号分隔形式的控制台输入。

解决方案:

input_str = 输入()

尺寸= [ INT(X)为 X 的 input_str。分裂(‘’)]

的rowNum =尺寸[ 0 ]

colNum =尺寸[ 1 ]

多重表 = [[ 0 为 山口 在 范围(colNum)]为 行 中 的范围(的rowNum)]

对于 行 中 的范围(的rowNum):

用于 山口 在 范围(colNum):

    多重表[行] [山口] = 行*山口

打印(多列表)

问题8

2级

问题:编写一个程序,该程序接受以逗号分隔的单词序列作为输入,并在按字母顺序对单词进行排序后以逗号分隔的顺序打印这些单词。假设向程序提供了以下输入:Without,hello,bag,world然后,输出应为:bag,hello,without,world

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

项= [ X 为 X 在 输入()。split(‘,’))

项目。sort()

print(‘,’。join(项目))

问题9

2级

问题:编写一个程序,接受行的顺序作为输入,并在将句子中的所有字符都大写之后打印行。假定向程序提供了以下输入:Hello world Practice使完美,然后,输出应为:HELLO WORLD PRACTICE完美无缺

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

lines = [],

而 True:

s  =  input(),

如果 s:

    lines。追加(小号。上())

其他:

    休息;

对于 句子 的 线路:

打印(句子)

问题10

2级

问题:编写一个程序,该程序接受一系列由空格分隔的单词作为输入,并在删除所有重复的单词并将其按字母数字顺序排序后打印这些单词。假定向程序提供了以下输入:hello world and实践再次使完美和hello world然后,输出应为:again and hello使完美实践的世界

提示:如果将输入数据提供给问题,则应假定它是控制台输入。我们使用set容器自动删除重复的数据,然后使用sorted()对数据进行排序。

解决方案:

š = 输入()

词语 = [字 为 字 在 小号。split(“”)]

print(“”。join(排序(列表(set(单词)))))

问题11

2级

问题:编写一个程序,该程序接受用逗号分隔的4位二进制数字序列作为输入,然后检查它们是否可被5整除。被5整除的数字将以逗号分隔的顺序打印。示例:0100,0011,1010,1001然后输出应为:1010注意:假设数据是由控制台输入的。

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

值 = []

项= [ X 为 X 在 输入()。在项目中为p的split(‘,’)]

intp = int(p,2),

如果不是intp %5:

    value。追加(p)     

print(‘,’。join(value))

问题12

2级

问题:编写一个程序,查找所有介于1000和3000之间的数字(包括两者),以使数字的每个数字均为偶数。获得的数字应以逗号分隔的顺序打印在一行上。

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

值 = []

为 我 在 范围(1000,3001:)

小号 =  STR(我)

如果(INT(小号[ 0 ]) %2 == 0)和(INT(小号[ 1 ]) %2 == 0)和(int(s [ 2 ])%2 == 0)和(int(s [ 3 ])%2 == 0):

    值。追加(小号)

打印(“” 。联接(值))

问题13

2级

问题:编写一个接受句子并计算字母和数字数量的程序。假设将以下输入提供给程序:hello world!123然后,输出应为:字母10位3

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

s = 输入()

d = {对于C in s的{ DIGITS“:0,” LETTERS“:0 }

if c。isdigit():

    d [ “ DIGITS” ] + = 1 elif c。isalpha():

    d [ “ LETTERS” ] + = 1 else:

    通过打印(“ LETTERS”,d [ “ LETTERS”   

])

打印(“ DIGITS”,d [ “ DIGITS” ])

问题14

2级

问题:编写一个接受句子的程序,并计算大写字母和小写字母的数量。假设向程序提供了以下输入:Hello world!然后,输出应为:UPPER CASE 1 LOWER CASE 9

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

s = input()

d = {对于c in s的{大写“:0,”小写“:0 }

if c。isupper():

    d [ “大写” ] + = 1 elif c。islower():

    d [ “ LOWER CASE” ] + = 1 else:

    通过打印(“ UPPER CASE”,d [   

“大写” ])

打印(“小写”,d [ “小写” ])

问题15

2级

问题:编写一个程序,以给定的数字作为a的值来计算a + aa + aaa + aaaa的值。假设将以下输入提供给程序:9然后,输出应为:11106

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

a = 输入()

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))

打印(n1 + n2+ n3 + n4)

问题16

2级

问题:使用列表理解将列表中的每个奇数平方。该列表由逗号分隔的数字序列输入。假设将以下输入提供给程序:1,2,3,4,5,6,7,8,9然后,输出应为:1,3,5,7,9

提示:如果将输入数据提供给问题,则应假定它是控制台输入。

解决方案:

值 = 输入()

数 = [ X 为 X 中 的值。如果int(x)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值