好程式設計師Python培訓分享Python系列之分支和迴圈結構的應用
好程式設計師 Python培訓分享 Python系列之 分支和迴圈結構的應用 , 透過上兩節課的學習,大家對Python中的分支和迴圈結構已經有了感性的認識。 分支和迴圈結構 的重要性不言而喻,它 是構造程式邏輯的基礎 ,對於初學者來說也是相對困難的部分。大部分初學者在學習了分支和迴圈結構後都能理解它們的用途和用法,但是遇到實際問題的時候又無法下手; 看懂別人的程式碼很容易,但是要自己寫出同樣的程式碼卻又很難 。如果你也有同樣的問題和困惑,千萬不要沮喪,這只是因為你才剛剛開始程式設計之旅, 你的練習量還沒有達到讓你可以隨心所欲的寫出程式碼的程度 ,只要加強程式設計練習,這個問題遲早都會解決的。下面我們就為大家講解一些經典的案例。
經典的例子
尋找水仙花數
說明 :水仙花數也被稱為超完全數字不變數、自戀數、自冪數、阿姆斯特朗數,它是一個3位數,該數字每個位上數字的立方之和正好等於它本身,例如: 。
"""
找出所有水仙花數
Version: 0.1
Author: 駱昊
"""
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)
在上面的程式碼中,我們透過整除和求模運算分別找出了一個三位數的個位、十位和百位,這種小技巧在實際開發中還是常用的。用類似的方法,我們還可以實現將一個正整數反轉,例如:將12345變成54321,程式碼如下所示。
"""
正整數的反轉
Version: 0.1
Author: 駱昊
"""
num = int(input('num = '))
reversed_num = 0
while num > 0:
reversed_num = reversed_num * 10 + num % 10
num //= 10
print(reversed_num)
百錢百雞問題
說明 :百錢百雞是我國古代數學家 張丘建 在《算經》一書中提出的數學問題:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何?翻譯成現代文是:公雞5元一隻,母-雞3元一隻,小雞1元三隻,用100塊錢買一百隻雞,問公雞、母-雞、小雞各有多少隻?
"""
《百錢百雞》問題
Version: 0.1
Author: 駱昊
"""
# 假設公雞的數量為x,x的取值範圍是0到20
for x in range(0, 21):
# 假設母-雞的數量為y,y的取值範圍是0到33
for y in range(0, 34):
z = 100 - x - y
if 5 * x + 3 * y + z // 3 == 100 and z % 3 == 0:
print(f'公雞: {x}只, 母-雞: {y}只, 小雞: {z}只')
上面使用的方法叫做 窮舉法 ,也稱為 暴力搜尋法 ,這種方法透過一項一項的列舉備選解決方案中所有可能的候選項並檢查每個候選項是否符合問題的描述,最終得到問題的解。這種方法看起來比較笨拙,但對於運算能力非常強大的計算機來說,通常都是一個可行的甚至是不錯的選擇,只要問題的解存在就能夠找到它。
CRAPS賭-博遊戲
說明 :CRAPS又稱花旗骰,是美國拉斯維加斯非常受歡迎的一種的桌上賭-博遊戲。該遊戲使用兩粒骰-子,玩家透過搖兩粒骰-子獲得點數進行遊戲。簡化後的規則是:玩家第一次搖骰-子如果搖出了7點或11點,玩家勝;玩家第一次如果搖出2點、3點或12點,莊家勝;玩家如果搖出其他點數則玩家繼續搖骰-子,如果玩家搖出了7點,莊家勝;如果玩家搖出了第一次搖的點數,玩家勝;其他點數玩家繼續搖骰-子,直到分出勝負。
"""
Craps賭-博遊戲
我們設定遊戲開始時玩家有1000元的賭注
遊戲結束的條件是玩家破產(輸光所有的賭注)
Version: 0.1
Author: 駱昊
"""
from random import randint
money = 1000
while money > 0:
print(f'你的總資產為: {money}元')
needs_go_on = False
# 下注金額必須大於0小於等於玩家總資產
while True:
debt = int(input('請下注: '))
if 0 < debt <= money:
break
# 第一次搖色-子
first_point = randint(1, 6) + randint(1, 6)
print(f'玩家搖出了{first_point}點')
if first_point == 7 or first_point == 11:
print('玩家勝!')
money += debt
elif first_point == 2 or first_point == 3 or first_point == 12:
print('莊家勝!')
money -= debt
else:
needs_go_on = True
# 第一次搖色-子沒有分出勝負遊戲繼續
while needs_go_on:
needs_go_on = False
current_point = randint(1, 6) + randint(1, 6)
print(f'玩家搖出了{current_point}點')
if current == 7:
print('莊家勝')
money -= debt
elif current == first:
print('玩家勝')
money += debt
else:
needs_go_on = True
print('你破產了, 遊戲結束!')
斐波那契數列
說明 :斐波那契數列(Fibonacci sequence),通常也被稱作黃金分割數列,是義大利數學家萊昂納多·斐波那契(Leonardoda Fibonacci)在《計算之書》中研究在理想假設條件下兔子成長率問題而引入的數列,因此這個數列也常被戲稱為“兔子數列”。斐波那契數列的特點是數列的前兩個數都是1,從第三個數開始,每個數都是它前面兩個數的和,按照這個規律,斐波那契數列的前10個數是: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 。斐波那契數列在現代物理、準晶體結構、化學等領域都有直接的應用。
"""
輸出斐波那契數列前20個數
Version: 0.1
Author: 駱昊
"""
# 前兩個數都是1
a, b = 1, 1
print(a, b, end=' ')
# 透過遞推公式算出後面的18個數
for _ in range(18):
a, b = b, a + b
print(b, end=' ')
列印素數
說明 :素數指的是隻能被1和自身整除的正整數(不包括1)。
"""
輸出100以內的素數
Version: 0.1
Author: 駱昊
"""
for num in range(2, 100):
# 假設num是素數
is_prime = True
# 在2到num-1之間找num的因子
for factor in range(2, num):
# 如果找到了num的因子,num就不是素數
if num % factor == 0:
is_prime = False
break
# 如果布林值為True在num是素數
if is_prime:
print(num)
簡單的總結
還是那句話: 分支結構和迴圈結構非常重要 ,是構造程式邏輯的基礎, 一定要透過大量的練習來達到融會貫通 。剛才講到的CRAPS賭-博遊戲那個例子可以作為一個標準,如果你能很順利的完成這段程式碼,那麼分支和迴圈結構的知識你就已經掌握了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2700352/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Python培訓分享Python系列之迴圈結構程式設計師Python
- 好程式設計師Python培訓分享Python系列之分支結構程式設計師Python
- 好程式設計師Python培訓分享For迴圈用法詳解程式設計師Python
- 好程式設計師Python培訓分享Python系列之字串的使用程式設計師Python字串
- 好程式設計師web前端培訓分享JavaScript學習筆記之迴圈結構程式設計師Web前端JavaScript筆記
- 好程式設計師Python教程系列-第6講:迴圈結構程式設計師Python
- 好程式設計師Java培訓分享For迴圈詳解程式設計師Java
- 好程式設計師Python培訓分享Python程式設計師面試技巧程式設計師Python面試
- 好程式設計師Python培訓分享四款Python程式庫程式設計師Python
- 好程式設計師Python教程系列第5講-分支結構程式設計師Python
- 好程式設計師Python培訓分享Python如何呼叫RPC介面程式設計師PythonRPC
- 好程式設計師Python培訓分享Python配置gRPC環境程式設計師PythonRPC
- 好程式設計師Python培訓分享Python異常處理程式設計師Python
- 好程式設計師Python培訓分享numpy簡介程式設計師Python
- 好程式設計師web前端培訓分享JavaScript學習筆記分支結構程式設計師Web前端JavaScript筆記
- 好程式設計師Python培訓分享Python的遞迴函式與匿名函式呼叫程式設計師Python遞迴函式
- 好程式設計師Python培訓分享Python中程式和執行緒詳解程式設計師Python執行緒
- 好程式設計師Python培訓分享Python爬蟲工具列表大全程式設計師Python爬蟲
- 好程式設計師Python培訓分享Python爬蟲相關框架程式設計師Python爬蟲框架
- 好程式設計師Python培訓分享學Python要注意什麼程式設計師Python
- 好程式設計師Python培訓分享如何寫Python裝飾器程式設計師Python
- 好程式設計師Java教程分享Java 迴圈結構程式設計師Java
- 好程式設計師Python培訓分享Python程式設計中常見的異常處理程式設計師Python
- 好程式設計師雲端計算教程分享Shell程式設計之for迴圈結構程式設計師
- 好程式設計師Python培訓分享print和return的作用及區別程式設計師Python
- 好程式設計師Python培訓分享udp和tcp協議介紹程式設計師PythonUDPTCP協議
- 好程式設計師Python培訓分享Python入門基礎知識程式設計師Python
- 好程式設計師Python培訓分享Python生成器與迭代器程式設計師Python
- 好程式設計師Python培訓分享Python之初識網路爬蟲程式設計師Python爬蟲
- 好程式設計師Python培訓分享Python面試寶典之基礎篇-03程式設計師Python面試
- 好程式設計師Python培訓分享函數語言程式設計之匿名函式程式設計師Python函數函式
- python分支結構與迴圈結構Python
- 好程式設計師Python培訓分享開發工具推薦程式設計師Python
- 好程式設計師Python培訓分享基礎入門Django程式設計師PythonDjango
- 好程式設計師Python培訓分享簡述fetchone()函式程式設計師Python函式
- 好程式設計師Python培訓分享Python生成器的詳細介紹程式設計師Python
- 好程式設計師Python培訓之詳解eval好與壞程式設計師Python
- 好程式設計師Python培訓分享網路爬蟲的分類程式設計師Python爬蟲