Python
近期,不少朋友向我咨询Python的习题资料。于是,小黄鸭为大家整理出来了完整350道Python的练习题目。
这些题目不仅覆盖了Python的基础知识,也涉及了一些进阶的算法问题。大家可以根据个人进度选择适合的题目进行练习。
内容包括:数据类型篇、基础语法篇、内置函数篇、 字符串方法、 排序算法篇、简单算法篇、中等难度算法篇、地狱难度算法篇。
值得一提的是,每道题目后都附有详尽的解答和步骤分析,供大家参考。不妨一试身手,看看自己的Python水平究竟如何~
【文末领取】
一共350道(附答案及解析),练完你就牛了!
1、求最大公约数和最小公倍数。难度:容易
两个数的最大公约数是两个数的公共因子中最大的那个数;两个数的最小公倍数
则是能够同时被两个数整除的最小的那个数。
输入:(120 和 60 是通过键盘输⼊的)
x = 120
y = 60
输出:
60 和 120 的最大公约数是:60
60 和 120 的最小公倍数是:120
答案:
1 x = int(input('x = '))2 y = int(input('y = '))34# 如果 x 大于 y 就交换 x 和 y 的值5if x > y:6# 通过下面的操作将 y 的值赋给 x, 将 x 的值赋给 y7 temp = y8 y = x9 x = temp10# 从两个数中较的数开始做递减的循环1112for factor inrange(x, 0, -1):13 if x % factor == 0 and y % factor == 0:14 print('{}和{}的最大公约数是:{}' .format(x, y, factor))15 print('{}和{}的最小公倍数是:{}' .format(x, y, x * y // factor))16break
2、斐波那契数列 难度:容易
斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数
列:1、1、2、3、5、8、13、21、34、……。在数学上,费波那契数列是以递归的方法来定义:
F1 = 1 (n=1)
Fn = F[n-1]+ F[n-2](n=>2)
输入:(数字 10 是通过键盘输⼊的)
请输入需要打印的斐波那契数列的数据个数(从 1 开始):10
输出:(每一个数据项之间用空格)
1 1 2 3 5 8 13 21 34 55
答案:
1def fib(n):2a, b = 1, 13#通过循环来打印数据4for i in range(n):5print(a,end = " ")6temp = a7a = b8b = temp+b9num = int(input("请输入需要打印的斐波那数列的数据个数(从 1 开始):"))10fib(num)
5、求年龄 难度:容易
有 5 个人坐在一起,问第五个⼈人多少岁?他说比第 4 个人大 2 岁。问第 4 个
人岁数,他说比第 3 个人大 2 岁。问第三个人,又说比第 2 人大两岁。问第 2
个人,说比第一个人大两岁。最后问第一个人,他说是 10 岁。请问第五个人多
大?
输入:无
输出:第五个人的年龄
答案:
1defage(n):2if n == 1:3 c = 104else:5 c = age(n - 1) + 26return c7print ("第五个人的年龄是:",age(5))
9、百钱百鸡问题 难度:容易
百钱百鸡是我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值
钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几
何?翻译成现代文是:公鸡 5 元一只,母鸡 3 元一只,小鸡 1 元三只,用 100
块钱买一百只鸡,问公鸡、母鸡、小鸡各有多少只?
输入:
无
输出:(有多个答案,下面的只是其中一个答案)
公鸡: 0 只, 母鸡: 25 只, 小鸡: 75 只
答案:
1 for x in range(0, 20):2 for y in range(0, 33):3 z = 100 - x - y4 if 5 * x + 3 * y + z / 3 == 100:5 print('公鸡: {}只, 母鸡: {}只, 小鸡: {}只' .format (x, y, z))
38、求满足条件的两位数 难度:容易
809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数,8*??的结果为两
位数,9*??的结果为 3 位数。求??代表的两位数,及 809*??后的结果。
809 乘以一个两位数等于 800 乘以这个两位数加上 9 乘以这个两位数。而且 8
乘以这个两位数的结果也是两位数。
输入:无
输出:
9708=809*12 = 800*12+9*12
答案:
1 a = 8092for i in range(10, 100):3 b = i * a4if b >= 1000and b < 10000and8 * i < 100and9 * i >= 100:5 print(b, ' = 800 * ', i, ' + 9 * ', i)
43、老王卖瓜 难度:容易
老王卖瓜,自卖自夸。第 1 个顾客来了,买走了他所有西瓜的一半又半个;第 2
个顾客来了,又买走了他剩余西瓜的一半又半个......当第 9 个顾客来时,它已经
没有西瓜可以卖了。请问老王原来有多少个西瓜?
输入:无
输出:
老王原有西瓜 255 个
答案:
1n = 02i = 13while i <= 8:4n = (n + 0.5) * 25i = i + 16print('老王原有西瓜{}个' .format(int(n)))
......
内容很多,不方便一一展示。PDF版本打包好了~
领取方式:
公众号后台回复:Python练习题 免费领取~
投身实践,方能发现不足,赶快行动起来亲自尝试吧!