好程式設計師Python教程系列-第6講:迴圈結構
好程式設計師 Python 教程 系列- 第 6 講:迴圈結構 , 應用場景 : 我們在寫程式的時候,一定會遇到需要重複執行某條或某些指令的場景。例如用程式控制機器人踢足球,如果機器人持球而且還沒有進入射門範圍,那麼我們就要一直髮出讓機器人向球門方向移動的指令。在這個場景中,讓機器人向球門方向移動就是一個需要重複的動作,當然這裡還會用到上一課講的分支結構來判斷機器人是否持球以及是否進入射門範圍。再舉一個簡單的例子,如果要實現每隔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-2689514/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Python教程系列第5講-分支結構程式設計師Python
- 好程式設計師Java教程分享Java 迴圈結構程式設計師Java
- 好程式設計師Python培訓分享Python系列之迴圈結構程式設計師Python
- 好程式設計師雲端計算教程分享Shell程式設計之for迴圈結構程式設計師
- 好程式設計師Python教程從零開始學Python系列-第2講程式設計師Python
- 好程式設計師Python培訓分享Python系列之分支和迴圈結構的應用程式設計師Python
- 迴圈結構程式設計程式設計
- 好程式設計師Web前端分享程式的三大結構(二)while迴圈程式設計師Web前端While
- 好程式設計師Python教程系列遞迴函式與匿名函式呼叫程式設計師Python遞迴函式
- 3.迴圈結構程式設計程式設計
- 好程式設計師Python培訓分享For迴圈用法詳解程式設計師Python
- 好程式設計師Python培訓分享Python系列之分支結構程式設計師Python
- 好程式設計師Python培訓第10講:字串的使用程式設計師Python字串
- 迴圈結構程式設計之習題程式設計
- 好程式設計師web前端培訓分享JavaScript學習筆記之迴圈結構程式設計師Web前端JavaScript筆記
- 實驗6迴圈結構程式設計(for語句的應用)程式設計
- 好程式設計師Java教程分享MySQL目錄結構程式設計師JavaMySql
- 好程式設計師Java培訓分享For迴圈詳解程式設計師Java
- 迴圈結構程式設計 實驗題目程式設計
- CodeMonkey少兒程式設計第6章 for迴圈程式設計
- 6、迴圈結構語句
- 好程式設計師分享迴圈內的回撥函式程式設計師函式
- 第5周 5.2 迴圈結構
- 好程式設計師web前端教程JavaScript系列之HTTP程式設計師Web前端JavaScriptHTTP
- Python迴圈結構用法Python
- python分支結構與迴圈結構Python
- 好程式設計師Python教程系列分享之Python語言元素之運算子程式設計師Python
- 好程式設計師Python教程系列分享之Python語言元素之變數程式設計師Python變數
- 好程式設計師Java教程系列之異常定義程式設計師Java
- 好程式設計師大資料教程Scala系列之類程式設計師大資料
- 好程式設計師Python教程分享python之變數程式設計師Python變數
- Python 為什麼不設計 do-while 迴圈結構?PythonWhile
- 人人都能學會的python程式設計教程5:迴圈 2Python程式設計
- 第6章迭代迴圈與專案結束
- 4.Python——迴圈結構Python
- 好程式設計師web前端教程分享如何給網頁劃分結構程式設計師Web前端網頁
- 好程式設計師大資料教程Scala系列之繼承程式設計師大資料繼承
- Python 快速教程(進階篇05):迴圈設計Python