流程控制---循環(huán)結構

引入

本文帶大家了解流程控制之循環(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 
''
image-20210516161505389

我們來結合具體例子說明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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市容达,隨后出現的幾起案子古涧,更是在濱河造成了極大的恐慌,老刑警劉巖花盐,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羡滑,死亡現場離奇詭異,居然都是意外死亡算芯,警方通過查閱死者的電腦和手機柒昏,發(fā)現死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來熙揍,“玉大人职祷,你說我怎么就攤上這事〗烨簦” “怎么了有梆?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長意系。 經常有香客問我泥耀,道長,這世上最難降的妖魔是什么蛔添? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任痰催,我火速辦了婚禮兜辞,結果婚禮上,老公的妹妹穿的比我還像新娘夸溶。我一直安慰自己逸吵,他們只是感情好,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布缝裁。 她就那樣靜靜地躺著扫皱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪压语。 梳的紋絲不亂的頭發(fā)上啸罢,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天,我揣著相機與錄音胎食,去河邊找鬼扰才。 笑死,一個胖子當著我的面吹牛厕怜,可吹牛的內容都是我干的衩匣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼粥航,長吁一口氣:“原來是場噩夢啊……” “哼琅捏!你這毒婦竟也來了?” 一聲冷哼從身側響起递雀,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤柄延,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缀程,有當地人在樹林里發(fā)現了一具尸體搜吧,經...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年杨凑,在試婚紗的時候發(fā)現自己被綠了滤奈。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡撩满,死狀恐怖蜒程,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情伺帘,我是刑警寧澤昭躺,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站曼追,受9級特大地震影響窍仰,放射性物質發(fā)生泄漏。R本人自食惡果不足惜礼殊,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一驹吮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晶伦,春花似錦碟狞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至泌参,卻和暖如春脆淹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背沽一。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工盖溺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人铣缠。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓烘嘱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蝗蛙。 傳聞我的和親對象是個殘疾皇子蝇庭,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內容