halo,大噶猴啊,今天有沒有學習python啊,有沒有給本身打氣啊!來我先給大家打個氣
python
上錯圖了,再來學習
今日洗腦金句: 堅持學習,學大學強,學出輝煌!3d
在開始講解以前,請各位道友思考一個問題,什麼是循環?code
誒,你知道循環是個什麼東西,可是你就是說不出來!對象
好,那爲何要有循環呢,由於咱們須要進行一些重複實現的操做,這個時候,循環就很好的實現了咱們的需求。blog
來,先看一下,while 的基礎用法ci
while 條件 code 1 code 2 code 3 ... while True: print('*1'*100) print('*2'*100)
以上,只要符合了while 的條件,就會執行裏面的代碼塊,並且只要知足條件,除非你用了其餘方法,否則就會陷入死循環,這就是爲何要少用while的緣由。input
哦吼,既然談到了能跳出循環的方法,那麼是什麼呢,就是 「break」 !cmd
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循環
俗話說,有雞必有鴨,有鴨必有鵝。你可能沒聽過這句話,由於我五分鐘前才創做的。
有了 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 的條件,而後繼續循環。
咱們前面是否是講到了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循環
爲何有了 while 還要有個 for 呢,傻孩子,固然是由於 for 更好呀。
爲何說 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 全都有,像極了女孩子們的現男朋友,囊括了前男朋友的所有優勢
和while 同樣,跳出循環,同理,else 也不會執行。
name_list = ['nick', 'jason', 'tank', 'sean'] for name in name_list: if name == 'jason': break print(name)
ncik
和while同理,不作過多介紹了,直接上代碼
name_list = ['nick', 'jason', 'tank', 'sean'] for name in name_list: if name == 'jason': continue print(name)
nick
tank
sean
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中斷掉
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