好程式設計師Python培訓分享Python系列之迴圈結構
好程式設計師 Python培訓分享 Python 系列之迴圈結構, 應用場景 : 我們在寫程式的時候,一定會遇到需要重複執行某條或某些指令的場景。例如用程式控制機器人踢足球,如果機器人持球而且還沒有進入射門範圍,那麼我們就要一直髮出讓機器人向球門方向移動的指令。在這個場景中,讓機器人向球門方向移動就是一個需要重複的動作,當然這裡還會用到上一課講的分支結構來判斷機器人是否持球以及是否進入射門範圍。再舉一個簡單的例子,如果要實現每隔1秒中在螢幕上列印一次“hello, world”並持續列印一個小時,我們肯定不能夠直接把 print('hello, world') 這句程式碼寫3600遍,這裡同樣需要迴圈結構。
迴圈結構就是程式中控制某條或某些指令重複執行的結構。在Python中構造迴圈結構有兩種做法,一種是 for-in 迴圈,一種是 while 迴圈。
for-in迴圈
如果明確的知道迴圈執行的次數,我們推薦使用 for-in 迴圈,例如計算1到100的和,即 。
"""
用for迴圈實現1~100求和
Version: 0.1
Author: 駱昊
"""
total = 0
for x in range(1, 101):
total += x
print(total)
需要說明的是上面程式碼中的 range(1, 101) 可以用來構造一個從1到100的範圍,當我們把這樣一個範圍放到 for-in 迴圈中,就可以透過前面的迴圈變數 x 依次取出從1到100的整數。當然, range 的用法非常靈活,下面給出了一個例子:
· range(101) :可以用來產生0到100範圍的整數,需要注意的是取不到101。
· range(1, 101) :可以用來產生1到100範圍的整數,相當於前面是閉區間後面是開區間。
· range(1, 101, 2) :可以用來產生1到100的奇數,其中2是步長,即每次數值遞增的值。
· range(100, 0, -2) :可以用來產生100到1的偶數,其中-2是步長,即每次數字遞減的值。
知道了這一點,我們可以用下面的程式碼來實現1~100之間的偶數求和。
"""
用for迴圈實現1~100之間的偶數求和
Version: 0.1
Author: 駱昊
"""
total = 0
for x in range(2, 101, 2):
total += x
print(total)
while迴圈
如果要構造不知道具體迴圈次數的迴圈結構,我們推薦使用 while 迴圈。 while 迴圈透過一個能夠產生或轉換出 bool 值的表示式來控制迴圈,表示式的值為 True 則繼續迴圈;表示式的值為 False 則結束迴圈。
下面我們透過一個“猜數字”的小遊戲來看看如何使用 while 迴圈。猜數字遊戲的規則是:計算機出一個1到100之間的隨機數,玩家輸入自己猜的數字,計算機給出對應的提示資訊(大一點、小一點或猜對了),如果玩家猜中了數字,計算機提示使用者一共猜了多少次,遊戲結束,否則遊戲繼續。
"""
猜數字遊戲
Version: 0.1
Author: 駱昊
"""
import random
answer = random.randint(1, 100)
counter = 0
while True:
counter += 1
number = int(input('請輸入: '))
if number < answer:
print('大一點')
elif number > answer:
print('小一點')
else:
print('恭喜你猜對了!')
break
print(f'你總共猜了{counter}次')
break和continue
上面的程式碼中使用 while True 構造了一個條件恆成立的迴圈,也就意味著如果不做特殊處理,迴圈是不會結束的,這也就是常說的“死迴圈”。為了在使用者猜中數字時能夠退出迴圈結構,我們使用了 break 關鍵字,它的作用是提前結束迴圈。需要注意的是, break 只能終止它所在的那個迴圈,這一點在使用巢狀迴圈結構時需要引起注意,下面的例子我們會講到什麼是巢狀的迴圈結構。除了 break 之外,還有另一個關鍵字是 continue ,它可以用來放棄本次迴圈後續的程式碼直接讓迴圈進入下一輪。
巢狀的迴圈結構
和分支結構一樣,迴圈結構也是可以巢狀的,也就是說在迴圈中還可以構造迴圈結構。下面的例子演示瞭如何透過巢狀的迴圈來輸出一個乘法口訣表(九九表)。
"""
列印乘法口訣表
Version: 0.1
Author: 駱昊
"""
for i in range(1, 10):
for j in range(1, i + 1):
print(f'{i}*{j}={i * j}', end='\t')
print()
很顯然,在上面的程式碼中,外層迴圈用來控制一共會產生9行的輸出,而內層迴圈用來控制每一行會輸出多少列。內層迴圈中的輸出就是九九表一行中的所有列,所以在內層迴圈完成時,有一個 print() 來實現換行輸出的效果。
迴圈的例子
例子1:輸入一個正整數判斷它是不是素數。
提示 :素數指的是隻能被1和自身整除的大於1的整數。
"""
輸入一個正整數判斷它是不是素數
Version: 0.1
Author: 駱昊
"""
num = int(input('請輸入一個正整數: '))
end = int(num ** 0.5)
is_prime = True
for x in range(2, end + 1):
if num % x == 0:
is_prime = False
break
if is_prime and num != 1:
print(f'{num}是素數')
else:
print(f'{num}不是素數')
例子2:輸入兩個正整數,計算它們的最大公約數和最小公倍數。
提示 :兩個數的最大公約數是兩個數的公共因子中最大的那個數;兩個數的最小公倍數則是能夠同時被兩個數整除的最小的那個數。
"""
輸入兩個正整數計算它們的最大公約數和最小公倍數
Version: 0.1
Author: 駱昊
"""
x = int(input('x = '))
y = int(input('y = '))
if x > y:
x, y = y, x # Python中可以用這樣的方式來交換兩個變數的值
for factor in range(x, 0, -1):
if x % factor == 0 and y % factor == 0:
print(f'{x}和{y}的最大公約數是{factor}')
print(f'{x}和{y}的最小公倍數是{x * y // factor}')
break
簡單的總結
學會了Python中的分支結構和迴圈結構,我們就可以解決很多實際的問題了。透過這節課的學習,大家應該已經知道了可以用 for 和 while 關鍵字來構造迴圈結構。 如果知道迴圈的次數,我們通常使用 for 迴圈 ;如果 迴圈次數不能確定,可以用 while 迴圈 。在迴圈中還 可以使用 break 來提前結束迴圈 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2700353/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Python培訓分享Python系列之分支和迴圈結構的應用程式設計師Python
- 好程式設計師Python培訓分享Python系列之分支結構程式設計師Python
- 好程式設計師Python培訓分享For迴圈用法詳解程式設計師Python
- 好程式設計師Python培訓分享Python系列之字串的使用程式設計師Python字串
- 好程式設計師web前端培訓分享JavaScript學習筆記之迴圈結構程式設計師Web前端JavaScript筆記
- 好程式設計師Java培訓分享For迴圈詳解程式設計師Java
- 好程式設計師Python教程系列-第6講:迴圈結構程式設計師Python
- 好程式設計師Python培訓分享Python程式設計師面試技巧程式設計師Python面試
- 好程式設計師Python培訓分享四款Python程式庫程式設計師Python
- 好程式設計師Python培訓分享numpy簡介程式設計師Python
- 好程式設計師雲端計算教程分享Shell程式設計之for迴圈結構程式設計師
- 好程式設計師Java教程分享Java 迴圈結構程式設計師Java
- 好程式設計師Python培訓分享Python異常處理程式設計師Python
- 好程式設計師Python培訓分享機器學習面試題一程式設計師Python機器學習面試題
- 好程式設計師Python培訓分享如何寫Python裝飾器程式設計師Python
- 好程式設計師Python培訓分享Python爬蟲工具列表大全程式設計師Python爬蟲
- 好程式設計師Python培訓分享Python爬蟲相關框架程式設計師Python爬蟲框架
- 好程式設計師Python培訓分享Python如何呼叫RPC介面程式設計師PythonRPC
- 好程式設計師Python培訓分享Python配置gRPC環境程式設計師PythonRPC
- 好程式設計師Python培訓分享學Python要注意什麼程式設計師Python
- 好程式設計師Python培訓分享Python面試寶典之基礎篇-03程式設計師Python面試
- 好程式設計師Python培訓分享Python的遞迴函式與匿名函式呼叫程式設計師Python遞迴函式
- 好程式設計師Python培訓分享函數語言程式設計之匿名函式程式設計師Python函數函式
- 好程式設計師Python培訓分享開發工具推薦程式設計師Python
- 好程式設計師Python培訓分享基礎入門Django程式設計師PythonDjango
- 好程式設計師Python培訓分享Python入門基礎知識程式設計師Python
- 好程式設計師Python培訓分享Python生成器與迭代器程式設計師Python
- 好程式設計師Python培訓分享Python之初識網路爬蟲程式設計師Python爬蟲
- 好程式設計師Python培訓之詳解eval好與壞程式設計師Python
- 好程式設計師Python培訓分享Python程式設計中常見的異常處理程式設計師Python
- 好程式設計師Python培訓分享簡述fetchone()函式程式設計師Python函式
- 好程式設計師Python培訓分享Python中程式和執行緒詳解程式設計師Python執行緒
- 好程式設計師Python培訓分享網路爬蟲的分類程式設計師Python爬蟲
- 好程式設計師Python培訓分享深入理解yield from語法程式設計師Python
- 好程式設計師Python培訓分享udp和tcp協議介紹程式設計師PythonUDPTCP協議
- 好程式設計師Java培訓分享Java函式式編碼結構程式設計師Java函式
- 好程式設計師Python培訓分享入門之元組列表字典詳解程式設計師Python
- 好程式設計師Python培訓分享Python生成器的詳細介紹程式設計師Python