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

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


  • 構造程式邏輯:

學習了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

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


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

從一個低薪文組轉職軟體測試工程師Software Quality Assurance (SQA) Engineer的過程,紀錄閱讀過的相關測試書籍文獻,以及記錄自我技術成長的過程,包含手動測試與自動化測試相關工具等。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
在寫程式時,重複執行指令是常見需求。Python 提供了兩種迴圈結構:for-in 迴圈和 while 迴圈。for-in 迴圈適合已知迴圈次數或進行容器迭代;while 迴圈則用於不確定迴圈次數的情境。本文將介紹這兩種迴圈的基本用法及練習範例。
本文介紹了Python中的 if-elif 和else關鍵字的使用,構建分支結構的方式,以及巢狀結構的概念。文章中還提到Python編碼的最佳實踐,建議儘可能使用扁平化的結構而不是巢狀結構以提高可讀性。
在程式設計中,變數是儲存資料的基本單位,而型別則決定了資料的格式及使用方式。本文介紹了 Python 開發中的多種資料型別,包括整型、浮點型、字串、布林型及複數型,還提供了變數命名的規則及其使用方法。進一步探索運算子,包括比較運算子和邏輯運算子,以增強程式的邏輯判斷能力。
本文介紹如何在Windows命令行及VS Code中確認Python版本,並提供編寫第一個Python程式的步驟。重點在於註解的使用方式及其對程式可讀性的重要性。此外,還簡單介紹了turtle繪圖模組的應用,透過範例繪製佩佩豬,為Python學習者提供實用的參考與指導。
這篇文章提供了一個詳細的指南,教你如何在你的電腦上下載和設置Python開發環境,尤其是使用VScode編輯器。從Python的下載與安裝到VScode的設置,這裡還涵蓋了安裝中文語言包的步驟,讓你的編程環境更加友好。
在寫程式時,重複執行指令是常見需求。Python 提供了兩種迴圈結構:for-in 迴圈和 while 迴圈。for-in 迴圈適合已知迴圈次數或進行容器迭代;while 迴圈則用於不確定迴圈次數的情境。本文將介紹這兩種迴圈的基本用法及練習範例。
本文介紹了Python中的 if-elif 和else關鍵字的使用,構建分支結構的方式,以及巢狀結構的概念。文章中還提到Python編碼的最佳實踐,建議儘可能使用扁平化的結構而不是巢狀結構以提高可讀性。
在程式設計中,變數是儲存資料的基本單位,而型別則決定了資料的格式及使用方式。本文介紹了 Python 開發中的多種資料型別,包括整型、浮點型、字串、布林型及複數型,還提供了變數命名的規則及其使用方法。進一步探索運算子,包括比較運算子和邏輯運算子,以增強程式的邏輯判斷能力。
本文介紹如何在Windows命令行及VS Code中確認Python版本,並提供編寫第一個Python程式的步驟。重點在於註解的使用方式及其對程式可讀性的重要性。此外,還簡單介紹了turtle繪圖模組的應用,透過範例繪製佩佩豬,為Python學習者提供實用的參考與指導。
這篇文章提供了一個詳細的指南,教你如何在你的電腦上下載和設置Python開發環境,尤其是使用VScode編輯器。從Python的下載與安裝到VScode的設置,這裡還涵蓋了安裝中文語言包的步驟,讓你的編程環境更加友好。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
上兩篇有關List的文章,此篇文上兩章的延續,整理一些常用的方法和操作。 [Python]List(列表)新增、修改、刪除元素 [Python基礎]容器 list(列表),tuple(元組) 還有一些常用的 list 方法和操作,讓你能更靈活地處理列表數據
先學習 HTML, CSS, JavaScript 基礎觀念, 再透過實作專案,慢慢熟悉不同的語法使用方式。
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
此章節旨在介紹Java的基本語法、註解和變數的使用。透過學習,讀者將了解Java程式的基本結構、程式進入點的定義、如何撰寫單行和多行註解,以及如何宣告和初始化變數。
在Python中, 要寫一個完整的「符元化類 Tokenizer Class」, 這個Class需要的功能有: 1.「編碼 Encode」:將「文本 Text」分割成「符元 Token」。 2.「詞彙 Vocabulary」:將「符元 Token」映射到「符元ID TokenID
在一次五天的年假中,我決定開始學習Python編程。雖然最初進展順利,但後來發現自己在解題和邏輯方面遇到了困難。經過思考後,我決定轉而學習C/C++,並且制定了一個計畫,希望成為一名後端工程師。這將需要挑戰我的時間管理能力。
Thumbnail
先前學到自定函式的使用方法,那如果在一個很龐大的程式架構中發散了一推自定函式,有沒有辦法可以整理一下,讓程式結構整齊又簡潔呢? 可以使用裝飾器staticmethod 定義靜態方法,全部整理到一個類別去,想像成是一個工具箱的概念,工具箱就是類別,靜態方法就像是裡面的工具一樣。
Thumbnail
本文讓我們來淺談一下類別是什麼? 若想看詳細一點的python官方教學可點此連結 Python 的類別(Class)是一種面向物件導向程式設計的概念,讓你能夠創建具有屬性和方法的物件。類別是對現實世界中事物的抽象,它包含數據和操作這些數據的方法。它非常的抽象,想像一個類別就像是一個蛋糕模具,
Thumbnail
本文將介紹自定函式及應用,利用程式範例解釋為什麼要用到自定函式 自定函式好處當然就是,讓你的程式碼看起來比較簡潔,在重複使用到的程式碼區塊,可以包裝成函式,讓你重複使用它。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
上兩篇有關List的文章,此篇文上兩章的延續,整理一些常用的方法和操作。 [Python]List(列表)新增、修改、刪除元素 [Python基礎]容器 list(列表),tuple(元組) 還有一些常用的 list 方法和操作,讓你能更靈活地處理列表數據
先學習 HTML, CSS, JavaScript 基礎觀念, 再透過實作專案,慢慢熟悉不同的語法使用方式。
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
此章節旨在介紹Java的基本語法、註解和變數的使用。透過學習,讀者將了解Java程式的基本結構、程式進入點的定義、如何撰寫單行和多行註解,以及如何宣告和初始化變數。
在Python中, 要寫一個完整的「符元化類 Tokenizer Class」, 這個Class需要的功能有: 1.「編碼 Encode」:將「文本 Text」分割成「符元 Token」。 2.「詞彙 Vocabulary」:將「符元 Token」映射到「符元ID TokenID
在一次五天的年假中,我決定開始學習Python編程。雖然最初進展順利,但後來發現自己在解題和邏輯方面遇到了困難。經過思考後,我決定轉而學習C/C++,並且制定了一個計畫,希望成為一名後端工程師。這將需要挑戰我的時間管理能力。
Thumbnail
先前學到自定函式的使用方法,那如果在一個很龐大的程式架構中發散了一推自定函式,有沒有辦法可以整理一下,讓程式結構整齊又簡潔呢? 可以使用裝飾器staticmethod 定義靜態方法,全部整理到一個類別去,想像成是一個工具箱的概念,工具箱就是類別,靜態方法就像是裡面的工具一樣。
Thumbnail
本文讓我們來淺談一下類別是什麼? 若想看詳細一點的python官方教學可點此連結 Python 的類別(Class)是一種面向物件導向程式設計的概念,讓你能夠創建具有屬性和方法的物件。類別是對現實世界中事物的抽象,它包含數據和操作這些數據的方法。它非常的抽象,想像一個類別就像是一個蛋糕模具,
Thumbnail
本文將介紹自定函式及應用,利用程式範例解釋為什麼要用到自定函式 自定函式好處當然就是,讓你的程式碼看起來比較簡潔,在重複使用到的程式碼區塊,可以包裝成函式,讓你重複使用它。