引入
本文帶大家了解流程控制之循環(huán)結構。循環(huán)結構就是重復執(zhí)行某段代碼,作為打工人该抒、干飯人,每天敲代碼顶燕,一日三餐就是重復的執(zhí)行某種動作凑保,因此程序中就必須有相應的機制來控制計算機具備循環(huán)執(zhí)行某種動作的能力。在Python中有兩種循環(huán)結構涌攻,分別是while循環(huán)和for循環(huán)欧引。
while循環(huán)
while循環(huán)也稱為條件循環(huán),意思是說恳谎,滿足某種條件就可以一直重復執(zhí)行某段代碼芝此,語法如下:
while 條件:
代碼1
代碼2
代碼3
'''
運行步驟如下:
1.如果while后的條件為True,就依次執(zhí)行 代碼1 代碼2 代碼3
2.執(zhí)行完之后再次判斷條件,如果條件為True,就重復執(zhí)行代碼1 代碼2 代碼3
''
我們來結合具體例子說明while循環(huán)的使用方法。
用戶登錄程序的基本邏輯就是接受用戶輸入的用戶名和密碼然后與程序中存放的用戶名和密碼進行比較癌蓖,相同則登錄成功瞬哼,不同則提示賬號或者密碼錯
username = "Python"
password = "123"
name = input("請輸入用戶名:")
pwd = input("請輸入密碼:")
if name == username and pwd == password:
print("登陸成功")
else:
print("輸入的用戶名或密碼錯誤!")
通常在登陸一些網站的時候租副,如果認證失敗會讓用戶重新輸入用戶名和密碼進行驗證坐慰,如果有三次機會的話,本質上就是將上述代碼重復運行三遍用僧,雖然可以將上述代碼拷貝三次结胀,但是如果要求有100次機會呢?難道要復制100次嗎责循?顯然是行不通的糟港,這種情況,就可以使用while循環(huán)來解決重復執(zhí)行的問題了院仿。
username = "Python"
password = "123"
count = 0 # 用來記錄錯誤登錄次數
while count < 3:
name = input("請輸入用戶名:")
pwd = input("請輸入密碼:")
if name == username and pwd == password:
print("登陸成功")
else:
print("輸入的用戶名或密碼錯誤秸抚!")
count += 1 # 失敗后count加1
但是上面的代碼有一個問題,雖然代碼精簡了歹垫,但是如果用戶在第一次或者第二次輸入了正確的用戶名和密碼以后無法結束循環(huán)剥汤,這顯然在實際業(yè)務場景中是不允許的,那么如何結束一個循環(huán)呢排惨?就需要用到break
吭敢,即while+break的用法。
username = "Python"
password = "123"
count = 0 # 用來記錄錯誤登錄次數
while count < 3:
name = input("請輸入用戶名:")
pwd = input("請輸入密碼:")
if name == username and pwd == password:
print("登陸成功")
break # 登錄成功后結束本層循環(huán)
else:
print("輸入的用戶名或密碼錯誤暮芭!")
count += 1 # 失敗后count加1
通過break可以結束一個循環(huán)鹿驼,如果while循環(huán)嵌套多層,想要退出每一層循環(huán)就需要在每一層循環(huán)都有一個break辕宏。
username = "Python"
password = "123"
count = 0 # 用來記錄錯誤登錄次數
while count < 3: # 第一層循環(huán)
name = input("請輸入用戶名:")
pwd = input("請輸入密碼:")
if name == username and pwd == password:
print("登陸成功")
while True: # 第二層循環(huán)
cmd = input('請輸入想要執(zhí)行的指令:')
if cmd == 'quit':
break # 用于結束本層循環(huán)畜晰,即第二層循環(huán)
else:
print(f'{cmd}命令正在運行')
break # 用于結束本層循環(huán),即第一層循環(huán)
else:
print("輸入的用戶名或密碼錯誤匾效!")
count += 1 # 失敗后count加1
上面已經介紹了while+break的用法舷蟀,break用于結束本層循環(huán),而continue用于結束本次循環(huán)直接進入下一次循環(huán)面哼,即while+continue的用法,比如:
# 輸出1-10之間除了5以外的其他數字
num = 0
while num < 10:
num += 1
if num == 5:
continue # 結束本次循環(huán)扫步,就是本次循環(huán)continue之后的代碼都不運行魔策,直接進入下一次循環(huán)
print(num)
while循環(huán)的后面也是可以和else一起使用,當while循環(huán)正常執(zhí)行完并且中間沒有被break 中止的話河胎,就會執(zhí)行else后面的語句闯袒,即while+else的用法。
num = 0
while num < 5:
print(num)
num += 1
else:
print('循環(huán)正常結束') # 會被執(zhí)行
print('-----正常退出while循環(huán)-------')
# 如果執(zhí)行過程中被break,就不會執(zhí)行else語句
num = 0
while num < 5:
print(num)
if num == 2:
break
num += 1
else:
print('循環(huán)正常結束') # 不會被執(zhí)行
print('-----break退出while循環(huán)-------')
for循環(huán)
循環(huán)結構的第二種實現方式政敢,理論上來講for循環(huán)可以實現的操作while循環(huán)都可以實現其徙,之所以使用for循環(huán)是因為在循環(huán)取值(遍歷值)時for循環(huán)比while循環(huán)使用起來更加簡潔。
for循環(huán)的語法如下:
for 變量名 in 可迭代對象: # 這里大家先知道可迭代對象有列表喷户、字典唾那、字符串,后面會專門介紹可迭代對象
代碼1
代碼2
比如說褪尝,我們使用for循環(huán)遍歷(將可迭代對象中的每個元素取出來)一個列表list1 = [1, 2, 3]
for i in list1:
print(i)
# 結果如下
1
2
3
分析一下for循環(huán)的運行步驟
1.從列表list1中讀出第一個值賦值給i(i=1),然后執(zhí)行循環(huán)體代碼
2.從列表list1中讀出第二個值賦值給i(i=2),然后執(zhí)行循環(huán)體代碼
3.重復上述過程闹获,直到列表中的數據被讀完
for循環(huán)也是可以嵌套的
# 用for循環(huán)嵌套的方式打印如下圖形
****
****
****
for i in range(3): # range(3)會產生0-2這3個數,表示3行
for i in range(4): # range(4會產生0-3這4個數河哑,表示每行有3個*)
print('*', end='') # end='' 表示不換行
print() # print()表示換行
登錄功能3次機會避诽,同樣可使用for循環(huán)實現,所以break continue else同樣可以用于for循環(huán)璃谨,語法與while循環(huán)一致沙庐。
username = "Python"
password = "123"
for i in range(3): # 表示三次機會
name = input("請輸入用戶名:")
pwd = input("請輸入密碼:")
if name == username and pwd == password:
print("登陸成功")
break
else:
print('再試一次')
else:
print('for循環(huán)正常結束')
practice---輸出九九乘法表
使用while循環(huán)和for循環(huán)分別實現九九乘法表
# while循環(huán)
i = 1 # 表示行
while i <= 9:
j = 1 # j 表示列
while j <= i:
print(f'{j} * {i} = {i*j}', end=' ')
j += 1
else:
print()
i += 1
# for循環(huán)
for i in range(1, 10):
for j in range(1, i+1):
print(f'{j} * {i} = {j*i}', end=' ')
print()
文末
如果你覺得我寫的不錯,就請給個贊賞吧佳吞,歡迎關注我的微信公眾號:程序媛小莊轨功,獲取更多python知識哦~
更多精彩python教程請來B站關注我哦:python零基礎入門---大白話版本來了_嗶哩嗶哩 (゜-゜)つロ 干杯~-bilibili