【Python从入门到实战100天】05. 总结和练习(保姆级图文+实现代码)
目录
-
- 1. 输出乘法口诀表(九九表)
- 2. 输出2~99之间的素数
- 3. 找出1~9999之间的所有完美数
- 4. 找出100~999之间的所有水仙花数
- 5. 猜数字游戏
- 6. 输出斐波那契数列的前20个数
- 7. 求解《百钱百鸡》问题
- 8. 模拟Craps赌博游戏(珍爱生命,远离赌博)
- 总结
欢迎关注 『Python从入门到实战100天』 系列,持续更新中
欢迎关注 『Python从入门到实战100天』 系列,持续更新中
1. 输出乘法口诀表(九九表)
for i in range(1, 10): for j in range(1, i + 1): print('%d*%d=%d' % (i, j, i * j), end='\t')#end='\t'表示不换行 print()
2. 输出2~99之间的素数
import mathfor num in range(2, 100): is_prime = True for factor in range(2, int(math.sqrt(num)) + 1): if num % factor == 0: is_prime = False break if is_prime: print(num, end=' ')
3. 找出1~9999之间的所有完美数
完美数是除自身外其他所有因子的和正好等于这个数本身的数
例如: 6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 + 14
原作者骆昊老师这里使用了time.clock()
的方法统计计算时间,但是这个方法在python3.8
已经弃用了
我把time.clock()
修改为了time.perf_counter()
进行替代
import timeimport mathstart = time.perf_counter()for num in range(1, 10000): sum = 0 for factor in range(1, int(math.sqrt(num)) + 1): if num % factor == 0: sum += factor if factor > 1 and num / factor != factor: sum += num / factor if sum == num: print(num)end = time.perf_counter()print("执行时间:", (end - start), "秒")
4. 找出100~999之间的所有水仙花数
水仙花数是各位立方和等于这个数本身的数
如: 153 = 13 + 53 + 3**3
for num in range(100, 1000): low = num % 10#取得个位数字 mid = num // 10 % 10#取得十位数字 high = num // 100#取得百位数字 if num == low ** 3 + mid ** 3 + high ** 3: print(num)
5. 猜数字游戏
计算机出一个1~100之间的随机数由人来猜
计算机根据人猜的数字分别给出提示大一点/小一点/猜对了
用二分法7次解决,我加上了一段偷看答案的代码·····
import randomanswer = random.randint(1, 100)counter = 0while True: counter += 1 number = int(input('请输入: ')) if number==-1:#偷看答案是我加上去测试方便用的 print("偷看答案",answer) if number < answer: print('大一点') elif number > answer: print('小一点') else: print('恭喜你猜对了!') breakprint('你总共猜了%d次' % counter)if counter > 7: print('你的智商余额明显不足')
6. 输出斐波那契数列的前20个数
1 1 2 3 5 8 13 21 …
这个数列从第3项开始,每一项都等于前两项之和。
a = 0b = 1for _ in range(20): (a, b) = (b, a + b) print(a, end=' ')
7. 求解《百钱百鸡》问题
1只公鸡5元 1只母鸡3元 3只小鸡1元 用100元买100只鸡
问公鸡 母鸡 小鸡各有多少只
小规模问题,穷举法,反正计算机不会累。
for x in range(0, 20): for y in range(0, 33): z = 100 - x - y if 5 * x + 3 * y + z / 3 == 100: print('公鸡: %d只, 母鸡: %d只, 小鸡: %d只' % (x, y, z))
8. 模拟Craps赌博游戏(珍爱生命,远离赌博)
玩家摇两颗色子 如果第一次摇出7点或11点 玩家胜
如果摇出2点 3点 12点 庄家胜 其他情况游戏继续
玩家再次要色子 如果摇出7点 庄家胜
如果摇出第一次摇的点数 玩家胜
否则游戏继续 玩家继续摇色子
玩家进入游戏时有1000元的赌注 全部输光游戏结束
from random import randintmoney = 1000while money > 0: print('你的总资产为:', money) needs_go_on = False while True: debt = int(input('请下注: ')) if debt > 0 and debt <= money: break first = randint(1, 6) + randint(1, 6) print('玩家摇出了%d点' % first) if first == 7 or first == 11: print('玩家胜!') money += debt elif first == 2 or first == 3 or first == 12: print('庄家胜!') money -= debt else: needs_go_on = True while needs_go_on: current = randint(1, 6) + randint(1, 6) print('玩家摇出了%d点' % current) if current == 7: print('庄家胜') money -= debt needs_go_on = False elif current == first: print('玩家胜') money += debt needs_go_on = Falseprint('你破产了, 游戏结束!')
总结
大家喜欢的话,给个👍,点个关注!给大家分享更多有趣好玩的Python学习笔记!
本专栏系列内容基于开源项目jackfrued-Python-100-Days
欢迎关注 『Python从入门到实战100天』 系列,持续更新中
欢迎关注 『Python从入门到实战100天』 系列,持续更新中【更多内容敬请期待】