您好,登錄后才能下訂單哦!
好程序員 Python培訓分享 Python 系列之循環(huán)結構, 應用場景 : 我們在寫程序的時候,一定會遇到需要重復執(zhí)行某條或某些指令的場景。例如用程序控制機器人踢足球,如果機器人持球而且還沒有進入射門范圍,那么我們就要一直發(fā)出讓機器人向球門方向移動的指令。在這個場景中,讓機器人向球門方向移動就是一個需要重復的動作,當然這里還會用到上一課講的分支結構來判斷機器人是否持球以及是否進入射門范圍。再舉一個簡單的例子,如果要實現(xiàn)每隔1秒中在屏幕上打印一次“hello, world”并持續(xù)打印一個小時,我們肯定不能夠直接把 print('hello, world') 這句代碼寫3600遍,這里同樣需要循環(huán)結構。
循環(huán)結構就是程序中控制某條或某些指令重復執(zhí)行的結構。在Python中構造循環(huán)結構有兩種做法,一種是 for-in 循環(huán),一種是 while 循環(huán)。
如果明確的知道循環(huán)執(zhí)行的次數(shù),我們推薦使用 for-in 循環(huán),例如計算1到100的和,即 。
"""
用for循環(huán)實現(xiàn)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 循環(huán)中,就可以通過前面的循環(huán)變量 x 依次取出從1到100的整數(shù)。當然, range 的用法非常靈活,下面給出了一個例子:
· range(101) :可以用來產生0到100范圍的整數(shù),需要注意的是取不到101。
· range(1, 101) :可以用來產生1到100范圍的整數(shù),相當于前面是閉區(qū)間后面是開區(qū)間。
· range(1, 101, 2) :可以用來產生1到100的奇數(shù),其中2是步長,即每次數(shù)值遞增的值。
· range(100, 0, -2) :可以用來產生100到1的偶數(shù),其中-2是步長,即每次數(shù)字遞減的值。
知道了這一點,我們可以用下面的代碼來實現(xiàn)1~100之間的偶數(shù)求和。
"""
用for循環(huán)實現(xiàn)1~100之間的偶數(shù)求和
Version: 0.1
Author: 駱昊
"""
total = 0
for x in range(2, 101, 2):
total += x
print(total)
如果要構造不知道具體循環(huán)次數(shù)的循環(huán)結構,我們推薦使用 while 循環(huán)。 while 循環(huán)通過一個能夠產生或轉換出 bool 值的表達式來控制循環(huán),表達式的值為 True 則繼續(xù)循環(huán);表達式的值為 False 則結束循環(huán)。
下面我們通過一個“猜數(shù)字”的小游戲來看看如何使用 while 循環(huán)。猜數(shù)字游戲的規(guī)則是:計算機出一個1到100之間的隨機數(shù),玩家輸入自己猜的數(shù)字,計算機給出對應的提示信息(大一點、小一點或猜對了),如果玩家猜中了數(shù)字,計算機提示用戶一共猜了多少次,游戲結束,否則游戲繼續(xù)。
"""
猜數(shù)字游戲
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}次')
上面的代碼中使用 while True 構造了一個條件恒成立的循環(huán),也就意味著如果不做特殊處理,循環(huán)是不會結束的,這也就是常說的“死循環(huán)”。為了在用戶猜中數(shù)字時能夠退出循環(huán)結構,我們使用了 break 關鍵字,它的作用是提前結束循環(huán)。需要注意的是, break 只能終止它所在的那個循環(huán),這一點在使用嵌套循環(huán)結構時需要引起注意,下面的例子我們會講到什么是嵌套的循環(huán)結構。除了 break 之外,還有另一個關鍵字是 continue ,它可以用來放棄本次循環(huán)后續(xù)的代碼直接讓循環(huán)進入下一輪。
和分支結構一樣,循環(huán)結構也是可以嵌套的,也就是說在循環(huán)中還可以構造循環(huán)結構。下面的例子演示了如何通過嵌套的循環(huán)來輸出一個乘法口訣表(九九表)。
"""
打印乘法口訣表
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()
很顯然,在上面的代碼中,外層循環(huán)用來控制一共會產生9行的輸出,而內層循環(huán)用來控制每一行會輸出多少列。內層循環(huán)中的輸出就是九九表一行中的所有列,所以在內層循環(huán)完成時,有一個 print() 來實現(xiàn)換行輸出的效果。
提示 :素數(shù)指的是只能被1和自身整除的大于1的整數(shù)。
"""
輸入一個正整數(shù)判斷它是不是素數(shù)
Version: 0.1
Author: 駱昊
"""
num = int(input('請輸入一個正整數(shù): '))
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}是素數(shù)')
else:
print(f'{num}不是素數(shù)')
提示 :兩個數(shù)的最大公約數(shù)是兩個數(shù)的公共因子中最大的那個數(shù);兩個數(shù)的最小公倍數(shù)則是能夠同時被兩個數(shù)整除的最小的那個數(shù)。
"""
輸入兩個正整數(shù)計算它們的最大公約數(shù)和最小公倍數(shù)
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}的最大公約數(shù)是{factor}')
print(f'{x}和{y}的最小公倍數(shù)是{x * y // factor}')
break
學會了Python中的分支結構和循環(huán)結構,我們就可以解決很多實際的問題了。通過這節(jié)課的學習,大家應該已經知道了可以用 for 和 while 關鍵字來構造循環(huán)結構。 如果知道循環(huán)的次數(shù),我們通常使用 for 循環(huán) ;如果 循環(huán)次數(shù)不能確定,可以用 while 循環(huán) 。在循環(huán)中還 可以使用 break 來提前結束循環(huán) 。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。