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 = '))
3
4
5 if x > y:
6
7 temp = y
8 y = x
9 x = temp
10
11
12 for factor in range(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))
16 break
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
答案:
1 def fib(n):
2 a, b = 1, 1
3 #通过循环来打印数据
4 for i in range(n):
5 print(a,end = " ")
6 temp = a
7 a = b
8 b = temp+b
9 num = int(input("请输入需要打印的斐波那数列的数据个数(从 1 开始):"))
10 fib(num)
5、求年龄 难度:容易
有 5 个人坐在一起,问第五个⼈人多少岁?他说比第 4 个人大 2 岁。问第 4 个
人岁数,他说比第 3 个人大 2 岁。问第三个人,又说比第 2 人大两岁。问第 2
个人,说比第一个人大两岁。最后问第一个人,他说是 10 岁。请问第五个人多
大?
输入:无
输出:第五个人的年龄
答案:
1 def age(n):2 if n == 1:
3 c = 10
4 else:
5 c = age(n - 1) + 2
6 return c
7 print ("第五个人的年龄是:",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 - y
4 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 = 809
2 for i in range(10, 100):
3 b = i * a
4 if b >= 1000 and b < 10000 and 8 * i < 100 and 9 * i >= 100:
5 print(b, ' = 800 * ', i, ' + 9 * ', i)
43、老王卖瓜 难度:容易
老王卖瓜,自卖自夸。第 1 个顾客来了,买走了他所有西瓜的一半又半个;第 2
个顾客来了,又买走了他剩余西瓜的一半又半个......当第 9 个顾客来时,它已经
没有西瓜可以卖了。请问老王原来有多少个西瓜?
输入:无
输出:
老王原有西瓜 255 个
答案:
1 n = 0
2 i = 1
3 while i <= 8:
4 n = (n + 0.5) * 2
5 i = i + 1
6 print('老王原有西瓜{}个' .format(int(n)))
......
内容很多,不方便一一展示。PDF版本打包好了~
领取方式:
公众号后台回复:Python练习题 免费领取~
投身实践,方能发现不足,赶快行动起来亲自尝试吧!