1. 程式人生 > 實用技巧 >流程控制之while迴圈,for迴圈

流程控制之while迴圈,for迴圈

# 迴圈結構

概念:迴圈結構就是重複執行某段程式碼塊

為何要用迴圈:人類某些時候需要重複做某件事情,所以程式中必須有相應的機制來控制計算機具備人的這種迴圈做事的能力

迴圈結構的使用:while迴圈語法 和 for 迴圈

一.流程控制之while迴圈

while迴圈稱之為條件迴圈,基本語法如下:

while 條件:
     程式碼1
     程式碼2
     程式碼3
while執行步驟:
1.如果條件為真,那麼依次執行:程式碼1、程式碼2、程式碼3......
2.執行完畢後再次判斷條件,如果條件為True則再次執行:程式碼1,程式碼2,程式碼3,...如果條件為False,則迴圈終止
1. while迴圈的基本使用

使用者認證程式, 案例一

username='dandan'
password='222'
count=0
while count<3:
    inp_name=input('請輸入使用者名稱: ')
    inp_pwd=input('請輸入密碼: ')
    if inp_name==username and inp_pwd==password:
        print('登入成功')
    else:
        print('輸入使用者名稱或密碼錯誤')
        count +=1
# 使用while迴圈實現3次登入
2.死迴圈:條件永遠為True
while True:
    x=input('>>> ')
    y=input('>>> ')
    x+y
    1+1    #如果死迴圈中沒有io,純計算的死迴圈消耗cpu
3. 結束while迴圈的兩種方式

方式一:把條件改為false

特點:等到本次迴圈體程式碼執行完畢後,下一次迴圈判斷條件時才會生效

方式二:break代表結束本層迴圈

特點:立即幹掉while迴圈

4. 案例二. while+break的使用

使用了while迴圈後,程式碼確實精簡多了,但問題是使用者輸入正確的使用者名稱密碼以後無法結束迴圈,那如何結束掉一個迴圈呢?這就需要用到break了!

username='dandan'
password='222'
count=0
while count<3:
    inp_name=input('請輸入使用者名稱: ')
    inp_pwd=input('請輸入密碼: ')
    if inp_name==username and inp_pwd==password:
        print('登入成功')
        break #用於結束本層迴圈
    else:
        print('輸入使用者名稱或密碼錯誤')
        count +=1
案列三:while迴圈巢狀+break

如果while迴圈嵌套了很多層,要想退出每一層迴圈則需要在每一層迴圈都有一個break

方式一:
tag=True
while tag:
    while tag:
        while tag:
          tag=False
#  想要一次性結束所有while迴圈, 只需改一個地方     
方式二:
while True:
    while True:
        while True:
            while True:
                break  #每一層只結束本層
            break
        break
案例四:
tag=True
while tag:
    inp_name=input('請輸入使用者名稱: ')
    inp_pwd=input('請輸入密碼: ')
    if inp_name=='dandan' and inp_pwd== '222':
        print('登入成功')
        tag = False
    else:
        print('輸入使用者名稱或密碼錯誤')
    print('*************')
巢狀多層的while迴圈案例五:
count=0
while count<3:
    inp_user=input('請輸入使用者名稱: ')
    inp_pwd=input('請輸入密碼: ')
    if inp_user=='dandan' and inp_pwd== '222':
        print('登入成功')
        while True:
            print("""
            0.退出
            1.取款
            2.存款
            3.轉賬
            """)
            choice=input('請輸入命令編號: ')
            if choice=='0':
                break
            if choice == '1':
                print('正在取款...')
            elif choice =='2':
                print('正在存款...')
            elif choice == '3':
                print('正在轉賬...')
            else:
                print('輸入指令不存在')
        break
    else:
        print('輸入密碼或賬戶有誤')
        count +=1    # 使用者如輸錯,限登入3次
5 .while迴圈+continue:

break代表結束本層迴圈,而continue則用於結束本次迴圈,直接進入下一次迴圈

count=0
while count<10:
    if count == 6  or count ==8:
        count +=1
        continue  #結束本次,直接進入下一次迴圈  與cuntinue同一級別的後面千萬不要寫程式碼,contine也不應該加在最後一步,最後一步不代表是最後一行
    print(count)
    count +=1

6. while迴圈+else

else 的子程式碼塊會在while迴圈正常迴圈死亡時執行,沒有被break幹掉就叫正常死亡(在while迴圈的後面,我們可以跟else語句,當while 迴圈正常執行完並且中間沒有被break 中止的話,就會執行else後面的語句,所以我們可以用else來驗證,迴圈是否正常結束)

二,流程控制之for迴圈

1,基本用法

for迴圈可以做的事情while迴圈都可以實現,之所以用for迴圈是因為在迴圈取值(即遍歷值)時for迴圈比while迴圈的使用更為簡潔

案例:
names=['egon','jake','tony','lisa']
# i=0
# while i<len(names):
#     print(names[i])
#     i+=1
for x in(names):     #  for 取值迴圈
    print(x)
&&   2行搞定
字典案例:
dic={'k1':111,'k2':222,'k3':333}
for x in dic:
    print(x,dic[x])
字串案例:
for x in "hello":
    print(x)
列表案例:
for x,y in [['name','egon'],['age',18],['gender','male']]:
    print(x,y)
2,for+break結束

結束本層迴圈

for i in[11,22,33,44]:
    if i == 33:
        break
    print(i)      #案例 break
3,for+continue

結束本次迴圈,直接進入下一次迴圈

for i in[11,22,33,44]:
    if i == 33:
        continue
    print(i)     # 案例 continue
4,for+else
for i in[11,22,33,44]:   
if i == 33:        
continue   
print(i)else:  
print('************')   #案例 else
5,range()
案例:
for x in range(3):
    print(111)
    print(222)
    print(333)