與while和for的愛恨情仇

halo,大噶猴啊,今天有沒有學習python啊,有沒有給本身打氣啊!來我先給大家打個氣
python

上錯圖了,再來學習

今日洗腦金句: 堅持學習,學大學強,學出輝煌!3d

流程控制之while循環

在開始講解以前,請各位道友思考一個問題,什麼是循環?code

誒,你知道循環是個什麼東西,可是你就是說不出來!對象

好,那爲何要有循環呢,由於咱們須要進行一些重複實現的操做,這個時候,循環就很好的實現了咱們的需求。blog

1、語法

來,先看一下,while 的基礎用法ci

while 條件
    code 1
    code 2
    code 3
    ...

while True:
    print('*1'*100)
    print('*2'*100)

以上,只要符合了while 的條件,就會執行裏面的代碼塊,並且只要知足條件,除非你用了其餘方法,否則就會陷入死循環,這就是爲何要少用while的緣由。input

哦吼,既然談到了能跳出循環的方法,那麼是什麼呢,就是 「break」 !cmd

2、while + break

break 就是打斷的意思。他會終止掉當前層的循環,執行外面的代碼。爲何說當前層,由於while他也是能夠嵌套的,你只能中斷你所在的while,而不是所有的while,所以在使用 break 的時候,鎖緊級別必定要寫清楚,否則頗有可能會形成邏輯錯誤。博客

簡單的 使用方法實例就不放上來了,由於他的代碼毫無心義,直接上一個栗子吧

while True:
    user_db = 'nick'
    pwd_db = '123'

    inp_user = input('username: ')
    inp_pwd = input('password: ')
    if inp_user == user_db and pwd_db == inp_pwd:
        print('login successful')
        break
    else:
        print('username or password error')
print('退出了while循環')

username: nick
password: 123
login successful
退出了while循環

3、while + continue

俗話說,有雞必有鴨,有鴨必有鵝。你可能沒聽過這句話,由於我五分鐘前才創做的。

有了 break ,那就有continue,由於break 這個功能太霸道了,若是有人只想跳過此次循環呢?一個break給你全跳出來了,懵不懵啊 。這時候就有了 continue ,他只會跳過當前次循環。

上代碼

n = 1
while n < 10:
    if n == 8:
         n += 1  # 若是註釋這一行,則會進入死循環
        continue
    print(n)
    n += 1

咱們能夠看到 n 會隨着循環的進行,而值變得愈來愈大,當他變爲8時,就知足了 if ,就會執行 continue了 ,繼續判斷是否知足 while 的條件,而後繼續循環。

4、while循環的嵌套

咱們前面是否是講到了while 的嵌套了呀。

while True:
    user_db = 'nick'
    pwd_db = '123'

    inp_user = input('username: ')
    inp_pwd = input('password: ')

    if inp_user == user_db and pwd_db == inp_pwd:
        print('login successful')

        while True:
            cmd = input('請輸入你須要的命令:')
            if cmd == 'q':
                break
            print(f'{cmd} 功能執行')
        break
    else:
        print('username or password error')

print('退出了while循環')

username: nick
password: 123
login successful
請輸入你須要的命令:q
退出了while循環

來解釋一下上面的代碼啊,首先給了你個死循環,由於while True 是恆成立的,因此想要斷開這個循環,就必定要用到 break 了。變量啊 輸入啊就不用講了,看不懂的,去看我前面的博客吧!

而後這裏加了 if ,來判斷你輸入的帳號密碼是否正確,條件知足後,開始執行內部代碼塊,這時候發現了他的內部代碼塊 又是一個 while 循環,也是一個死循環,他要你輸入命令,而後加入了個 if,判斷你輸入的是不是 ‘q’ ,是的話,就執行 break 語句,跳出當前層的while,而後 緊接着又來了一個break,跳出了外層的while,並且不會執行 else ,注意 break執行以後,會直接殺死當前循環和else

還有一種跳出循環的方式,可是你的while 條件得是 變量才行,看下面自行體會

tag = True
while tag:
    user_db = 'nick'
    pwd_db = '123'

    inp_user = input('username: ')
    inp_pwd = input('password: ')

    if inp_user == user_db and pwd_db == inp_pwd:
        print('login successful')

        while tag:
            cmd = input('請輸入你須要的命令:')
            if cmd == 'q':
                tag = False
            print(f'{cmd} 功能執行')
    else:
        print('username or password error')

print('退出了while循環')

username: nick
password: 123
login successful
請輸入你須要的命令:q
q 功能執行
退出了while循環

流程控制之for循環

爲何有了 while 還要有個 for 呢,傻孩子,固然是由於 for 更好呀。

1、語法

爲何說 for 更好呢,你看啊,我讓你把列表裏的數據全都取出來。

name_list = ['nick', 'jason', 'tank', 'sean']

n = 0
while n < 4:
    # while n < len(name_list):
    print(name_list[n])
    n += 1

nick
jason
tank
sean

你很棒的用while 作到了!

那如今把這個字典裏的數據也用while取出來吧!

info = {'name': 'nick', 'age': 19}
一會兒是不感受本身蒙了?

來看看用 for 怎麼實現吧

info = {'name': 'nick', 'age': 19}

for item in info:
    # 取出info的keys
    print(item)

name
age

name_list = ['nick', 'jason', 'tank', 'sean']
for item in name_list:
    print(item)

nick
jason
tank
sean

我剛看到 for 能這樣用的時候也是蒙了的,個人理解是它直接把 容器類型數據裏的 數據拿出來當循環數字了,在C 和 JAVA 裏面是 for(i=0;i<10:i++) 這樣的,在python裏面就很牛逼的升級了,你的 循環數字直接就變成了你要取出來的數據了,因此循環次數是根據你容器類型數據的長度而定的。

果不其然有一些優秀的睿智青年冒出了和我當初同樣的疑問,那意思我只能用for來拿容器數據了?

不不不,他比while更優秀,怎麼可能這麼弱?

for i in range(1, 10):  # range顧頭不顧尾
    print(i)

1
2
3
4
5
6
7
8
9

一樣的,顧頭不顧尾。

name_list = ['nick', 'jason', 'tank', 'sean']
# for i in range(5):  # 5是數的
for i in range(len(name_list)):
    print(i, name_list[i])

0 nick
1 jason
2 tank
3 sean

小小的栗子。len()的意思是返回對象的長度。

不用我說大家也知道了,while有的,for 全都有,像極了女孩子們的現男朋友,囊括了前男朋友的所有優勢

2、for 與 break 、 continue 、 else、 以及嵌套的使用

1.for+break

和while 同樣,跳出循環,同理,else 也不會執行。

name_list = ['nick', 'jason', 'tank', 'sean']
for name in name_list:
    if name == 'jason':
        break
    print(name)

ncik

2.for+continue

和while同理,不作過多介紹了,直接上代碼

name_list = ['nick', 'jason', 'tank', 'sean']
for name in name_list:
    if name == 'jason':
        continue
    print(name)

nick
tank
sean

3.for+else

for循環沒有break的時候觸發else內部代碼塊。

# for+else
name_list = ['nick', 'jason', 'tank', 'sean']
for name in name_list:
    print(name)
else:
    print('for循環沒有被break中斷掉')

nick
jason
tank
sean
for循環沒有break中斷掉

4.for循環嵌套

for i in range(3):
    print(f'-----:{i}')
    for j in range(2):
        print(f'***:{j}')

-----:0
**:0
**:1
-----:1
**:0
**:1
-----:2
**:0
**:1

相關文章
相關標籤/搜索