針對:變量、類型、運算符、表達式、分支結構、循環結構 的練習
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、正整數的反轉
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