水仙花数、正整数的反转、百钱百鸡问题、花旗骰游戏、斐波那契数列、10000以内的完美数、100以内的所有素数

针对:变量、类型、运算符、表达式、分支结构、循环结构 的练习

ps:练习内容来源于Github:python-100-Day1  

  • 水仙花数
  • 正整数的反转
  • 百钱百鸡问题
  • 花旗骰游戏
  • 斐波那契数列
  • 10000以内的完美数
  • 100以内的所有素数

1、水仙花数

水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,
它是一个3位数,该数字每个位上数字的立方之和正好等于它本身,
例如:1^3 + 5^3+ 3^3=153。
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

2、正整数的反转

例如:将12345变成54321
num = int(input("请输入一个数:"))
reversed_num = 0
while num > 0:
    reversed_num = reversed_num*10 + num % 10
    num //= 10
print('反转后:',reversed_num)

------------------------------------------
请输入一个数:123456
反转后: 654321

3、百钱百鸡问题

公鸡5元一只,母鸡3元一只,
小鸡1元三只,用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 

4、花旗骰游戏

共有两个骰子玩家第一次摇骰子如果摇出了7点或11点,玩家胜;玩家第一次如果摇出2点、3点或12点,庄家胜;其他点数玩家继续摇骰子,如果玩家摇出了7点,庄家胜;如果玩家摇出了第一次摇的点数,玩家胜;其他点数,玩家继续要骰子,直到分出胜负。
Craps赌博游戏
我们设定玩家开始游戏时有1000元的赌注
游戏结束的条件是玩家输光所有的赌注
from random import randint

money = 1000
while money > 0:
    print('你的总资产为:', money)
    needs_go_on = False
    while True:
        debt = int(input('请下注: '))
        if 0 < 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:
        needs_go_on = False
        current = randint(1, 6) + randint(1, 6)
        print('玩家摇出了%d点' % current)
        if current == 7:
            print('庄家胜')
            money -= debt
        elif current == first:
            print('玩家胜')
            money += debt
        else:
            needs_go_on = True
print('你破产了, 游戏结束!')
你的总资产为: 1000
请下注: 1000
玩家摇出了10点
玩家摇出了4点
玩家摇出了3点
玩家摇出了9点
玩家摇出了5点
玩家摇出了5点
玩家摇出了9点
玩家摇出了10点
玩家胜
你的总资产为: 2000
请下注: 1000
玩家摇出了8点
玩家摇出了10点
玩家摇出了2点
玩家摇出了8点
玩家胜
你的总资产为: 3000
请下注: 2000
玩家摇出了6点
玩家摇出了6点
玩家胜
你的总资产为: 5000
请下注: 5000
玩家摇出了7点
玩家胜!
你的总资产为: 10000
请下注: 10000
玩家摇出了5点
玩家摇出了7点
庄家胜
你破产了, 游戏结束!

ps:赌博虽好,不要贪心,见好就收吧!

5、斐波那契数列

斐波那契数列的前20个数斐波那契数列的特点是数列的前两个数都是1,从第三个数开始,每个数都是它前面两个数的和,
形如:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...。
def fibonacci(num):
    fibs = [1,1]
    for i in range(num-2):
        fibs.append(fibs[-2]+fibs[-1])
    print(fibs)
fibonacci(20)
----------------------------------------------
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]

6、找出10000以内的完美数

找出10000以内的完美数。
完美数又称为完全数或完备数,它的所有的真因子(即除了自身以外的因子)的和(即因子函数)恰好等于它本身。
for i in range(1,1000):
    num = 0
    for k in range(1,i):
        if i%k == 0:
            num += k
    if i == num:
        print(i)
-----------------------------
6
28
496

7、输出100以内所有的素数

输出100以内所有的素数。
素数指的是只能被1和自身整除的正整数(不包括1)。
for i in range(2,100):
    flag = 0
    for j in range(2,i-1):
        if i % j ==0:
            flag = 1
            break
    if flag == 0:
        print(i)
--------------------------------------
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章