學習了Python的核心語言元素後,必須做的一件事情就是嘗試用所學知識去解決現實中的問題,換句話說就是鍛鍊自己把用人類自然語言描述的演算法(解決問題的方法和步驟)翻譯成Python程式碼的能力。
需求:公雞5元一隻,母雞3元一隻,小雞1元三隻,用100塊錢買一百隻雞,問公雞、母雞、小雞各有多少隻?
"""
《百錢百雞》問題
Version: Day05
Author: SQA yang
公雞5元一隻,母雞3元一隻,小雞1元三隻
用100塊錢買一百隻雞,問公雞、母雞、小雞各有多少隻?
"""
for x in range(0, 20):
#公雞的數量x,範圍是 0 到 19,因為公雞每隻 5 元,最多只能買 19 隻。
for y in range(0, 33):
#母雞的數量y,範圍是 0 到 32,因為母雞每隻 3 元,最多只能買 33 隻。
z = 100 - x - y
#小雞的數量z,是用總數 100 減去公雞和母雞的數量得到,確保三種雞的總數是 100 隻。
if 5 * x + 3 * y + z / 3 == 100:
#當這三種雞的價格總和等於 100 時,說明該組合符合條件。
print('公雞: %d隻, 母雞: %d隻, 小雞: %d隻' % (x, y, z))
#'%d' 是格式化字串的一部分,表示要插入一個整數
需求:遊戲使用兩粒骰子,簡單的規則是:玩家第一次搖骰子如果搖出了7點或11點,玩家勝;玩家第一次如果搖出2點、3點或12點,莊家勝;其他點數玩家繼續搖骰子,如果玩家搖出了7點,莊家勝;如果玩家搖出了第一次搖的點數,玩家勝;其他點數,玩家繼續要骰子,直到分出勝負。
"""
Craps博弈遊戲
我們設定玩家開始遊戲時有1000元的賭注
遊戲結束的條件是玩家輸光所有的賭注
Version: Day05
Author: SQA yamg
"""
from random import randint
money = 1000 #設定玩家開始時有1000元賭注
while money > 0: #這個迴圈會進行到玩家沒錢為止
print('你的總資產為:', money)
needs_go_on = False #控制遊戲是否繼續進行的變數,初始設為False
while True: #這個內部的無限迴圈用來處理玩家下注的過程。
debt = int(input('請下注: '))
if 0 < debt <= money: #下注金額不超過玩家的錢
break
first = randint(1, 6) + randint(1, 6)
#randint(1, 6) 會生成 1 到 6 之間的隨機數,兩個骰子的點數加起來賦值給變數 first。
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
#當 needs_go_on 為 True 時,進入內部的 while needs_go_on: 迴圈。
while needs_go_on:
needs_go_on = False
current = randint(1, 6) + randint(1, 6)
print('玩家搖出了%d點' % current)
if current == 7: #玩家搖出了7點,莊家勝
print('莊家勝')
money -= debt
elif current == first: #玩家搖出了第一次搖的點數,玩家勝
print('玩家勝')
money += debt
else:
needs_go_on = True
print('你破產了, 遊戲結束!')
以上為Python100天從新手到大師的Day05學習筆記。