水仙花數、正整數的反轉、百錢百雞問題、花旗骰遊戲、斐波那契數列、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

 

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