更新於 2024/10/20閱讀時間約 5 分鐘

Python 100天-從新手到大師學習筆記Day05:構造程式邏輯


  • 構造程式邏輯:

學習了Python的核心語言元素後,必須做的一件事情就是嘗試用所學知識去解決現實中的問題,換句話說就是鍛鍊自己把用人類自然語言描述的演算法(解決問題的方法和步驟)翻譯成Python程式碼的能力。


  • 構造程式邏輯練習1:百錢百雞問題。

需求:公雞5元一隻,母雞3元一隻,小雞1元三隻,用100塊錢買一百隻雞,問公雞、母雞、小雞各有多少隻?


"""
《百錢百雞》問題

Version: Day05
Author: SQA yang

公雞5元一隻,母雞3元一隻,小雞1元三隻
100塊錢買一百隻雞,問公雞、母雞、小雞各有多少隻?
"""

for x in range(0, 20):
#公雞的數量x,範圍是 019,因為公雞每隻 5 元,最多只能買 19 隻。

for y in range(0, 33):
#母雞的數量y,範圍是 032,因為母雞每隻 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' 是格式化字串的一部分,表示要插入一個整數

百錢百雞程式練習


  • 構造程式邏輯練習2:CRAPS博奕遊戲

需求:遊戲使用兩粒骰子,簡單的規則是:玩家第一次搖骰子如果搖出了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) 會生成 16 之間的隨機數,兩個骰子的點數加起來賦值給變數 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('你破產了, 遊戲結束!')

CRAPS博奕遊戲使用 if-elif-else和while


以上為Python100天從新手到大師的Day05學習筆記。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.