> 文档中心 > 【Python从入门到实战100天】05. 总结和练习(保姆级图文+实现代码)

【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=' ')

【Python从入门到实战100天】05. 总结和练习(保姆级图文+实现代码)


3. 找出1~9999之间的所有完美数

完美数是除自身外其他所有因子的和正好等于这个数本身的数
例如: 6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 + 14

原作者骆昊老师这里使用了time.clock()的方法统计计算时间,但是这个方法在python3.8已经弃用了
【Python从入门到实战100天】05. 总结和练习(保姆级图文+实现代码)
我把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)

【Python从入门到实战100天】05. 总结和练习(保姆级图文+实现代码)


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

【Python从入门到实战100天】05. 总结和练习(保姆级图文+实现代码)


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

【Python从入门到实战100天】05. 总结和练习(保姆级图文+实现代码)


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从入门到实战100天】05. 总结和练习(保姆级图文+实现代码)


总结

大家喜欢的话,给个👍,点个关注!给大家分享更多有趣好玩的Python学习笔记!

本专栏系列内容基于开源项目jackfrued-Python-100-Days

欢迎关注 『Python从入门到实战100天』 系列,持续更新中
欢迎关注 『Python从入门到实战100天』 系列,持续更新中

【更多内容敬请期待】