Day05

总结和练习

练习清单

  1. 寻找“水仙花数”
  2. 寻找“完美数”
  3. “百钱百鸡”问题。
  4. 生成“斐波拉切数列”
  5. Craps赌博游戏。
"""
找出100~999之间的所有水仙花数
水仙花数是各位立方和等于这个数本身的数
如: 153 = 1**3 + 5**3 + 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)
153
370
371
407
"""
找出1~9999之间的所有完美数
完美数是除自身外其他所有因子的和正好等于这个数本身的数
例如: 6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 + 14

"""
import time
import math

start = 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), "秒")
1
6
28
496
8128
执行时间: 0.16071361500007697 秒
"""
求解《百钱百鸡》问题
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))
公鸡: 0只, 母鸡: 25只, 小鸡: 75只
公鸡: 4只, 母鸡: 18只, 小鸡: 78只
公鸡: 8只, 母鸡: 11只, 小鸡: 81只
公鸡: 12只, 母鸡: 4只, 小鸡: 84只
"""
输出斐波那契数列的前20个数
1 1 2 3 5 8 13 21 ...

"""
a = 0
b = 1
for _ in range(20):
    (a, b) = (b, a + b)
    print(a, end=' ')
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 
"""
Craps赌博游戏
玩家摇两颗色子 如果第一次摇出7点或11点 玩家胜
如果摇出2点 3点 12点 庄家胜 其他情况游戏继续
玩家再次要色子 如果摇出7点 庄家胜
如果摇出第一次摇的点数 玩家胜
否则游戏继续 玩家继续摇色子
玩家进入游戏时有1000元的赌注 全部输光游戏结束

"""
from random import randint

money = 1000
while 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 = False

print('你破产了, 游戏结束!')
你的总资产为: 1000
请下注: 800
玩家摇出了2点
庄家胜!
你的总资产为: 200
请下注: 200
玩家摇出了5点
玩家摇出了10点
玩家摇出了3点
玩家摇出了5点
玩家胜
你的总资产为: 400
请下注: 400
玩家摇出了6点
玩家摇出了9点
玩家摇出了6点
玩家胜
你的总资产为: 800
请下注: 800
玩家摇出了5点
玩家摇出了5点
玩家胜
你的总资产为: 1600
请下注: 1600
玩家摇出了3点
庄家胜!
你破产了, 游戏结束!
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 练习题 统计1-100中能被3或者7整除,但是不能被21整除的数的个数 """ 3.求1到100之间所有数的...
    ____空白阅读 1,589评论 0 3
  • 读程序,总结程序的功能: 求2的20次方 统计1~100中能被3整除或被7整除,但同时不能被21整除的数字的个数 ...
    挽风style阅读 1,643评论 0 0
  • 基础 '''读程序,总结程序的功能: numbers=1for i in range(0,20):numbers*...
    Heyjoky阅读 1,274评论 0 0
  • 一、基础题 1.读程序,总结程序的功能: 功能:算出 number 乘以 2 的 20 次方等于多少。 功能:数出...
    绝世小丑阅读 1,792评论 0 0
  • 01 在简书CEO简叔的个人主页,第一篇文章的标题是:《简书的内容主张 :真实 新鲜 多元》。 前几天的一篇文章《...
    纳兰央措阅读 3,619评论 9 16

友情链接更多精彩内容