很高興又和大家見面了。上一課,我們學習了兩種新的數據類型: 列表與字典。
這節課,帶大家來學習一下【循環】,什麼是循環? 就是把一件事情一遍又一遍重複做多遍。
每個人的工作和生活中都充滿了循環,比如你要在操場上跑步5圈鍛鍊身體,比如銷售要一遍又一遍給別人介紹產品,比如高三考生高考前每天三點一線的生活。
循環,就意味著重複與無趣。尤其是工作中的重複,無聊重複的工作讓我們感覺到疲憊。既然疲憊,我們就把這重複無聊的工作交給計算機,反正它又不怕累,交給它去做。
這就是人工智慧能夠解放人類勞動生產力的地方。 比如你需要下載100集電視劇,你不需要一集一集的下載,只需要告訴計算機全部下載,計算機就一遍又一遍的循環下載,並且最後還能把這些電視劇按照一定的規則排序。你會發現,計算機全部下載,比你一集一集的下載要快的多,這就是計算機的優勢。
再比如商場裡的銷售員,每位客戶到來,她都需要介紹一遍產品,如果今天來50位客戶,她就需要介紹50遍產品。而計算機機器人,就可以通過【循環】,一遍又一遍不厭其煩的向客戶介紹產品,計算機又不怕累。現在,是不是感覺」循環」不一樣了。什麼計算機就特別擅長做重複性工作呢? 並且是」擅長、速度快、不怕累」。
究其原理, 就是因為代碼中的【循環語句】,讓計算機能夠重複、自動地執行命令。
Python江湖裡,提供了兩種循環語句, for…in循環語句與while循環語句。
下面, 我們先來看一下第一種循環語句for…in循環語句, 簡稱for循環。
還記得在上節課中, 我們對同學點名嗎? 回顧一下點名代碼。
我們為了點名, 一口氣敲了20行print()函數, 我不知道大家, 反正我是敲累了。
為了解決這個事情, 通過for循環解決了上面的問題。
是不是變簡單了? 把20行的代碼改成了2行代碼。 這就是for循環魅力,一個最簡單的for循環。
先來看一下for循環的基本格式:
來,運行上圖中的代碼, 觀察終端裡的效果。
終端上依次出現了列表中的數字+取錢,對吧?這就如同去取款機取錢。
for i in [1,2,3,4,5,6]:
print(str(i)+'取錢')
#有一群人在排隊取錢 , 也就是列表[1,2,3,4,5,6]
#它們中的每一個被叫號的時候(for i in),就開始輪流進去取錢。
#每一個人進去,都會把號碼給計算機,然後說「取錢」 , 也就是print(i+「取錢」)
#最後計算機為每一個人都提供了服務。
or循環有三個要點:1、叫號 2、一群等著取錢的人 3、辦事流程
叫號
既然叫號,就得有個變量,需要存放這個號。在這裡我們存放號這個變量叫做i,為什麼用i呢? 在for循環裡, 這個變量的專有名稱叫【元素】,英文item,i是它的簡稱。其實,你可以給這個號碼取任意名字。
你看,是不是都能列印出來?這就對了,存號用什麼變量名都可以。
好了,如果這人都辦完了業務, 這個ATM機裡存的號是誰的?運行下面代碼, 觀察終端裡的效果。
原來,辦完業務之後, ATM機裡保存著是最後一個辦業務人的號碼。
搞清楚這個叫號了,下面我們看一下這群排隊等著取錢的人。
一群排隊等著取錢的人
我們剛剛看到「一群排隊等著取錢的人」,都是以列表形式:[1,2,3,4,5,6]出現。 那麼還有哪些數據類型可以成為「排隊取錢的人」?
小編感覺你已經猜到了, 就是字典。
運行下面代碼, 觀察終端裡的效果。
我們用print(i)把ATM中的內容列印出來,發現i會逐漸接收字典中的每一個【鍵】。
那麼你猜一下,哪些不屬於「一群排隊取錢的人」呢。
選擇題
請問以下哪項的數據不能放在for i in name這個循環中:
A: name = [10,35,40,80]
B: name = 100
C: name = {'京':'北京','滬':'上海','粵':'廣東'}
D: name = '黃曉明'
恭喜你答對了,選B。 B項 name=100,100隻是整數,
能排隊取錢的是列表與字典。是不是有些疑問?為什麼'黃曉明'也可以呢?
不要懷疑,字符串也屬於一群排隊取錢的人。打個比方,『黃曉明『三個字就指的是一家三口, 但去ATM取錢時, 這家人可以一個一個進去。
你看, 是不是字符串也可以成為一群排隊取錢的人。 而整數、浮點數絕對不是的,整數與浮點數排隊取錢會報錯的。
江湖秘籍: 字符串、列表、字典都可以是「一群排隊取錢的人「。
for in name:這個循環的過程,在python江湖中稱為【遍歷】。
其實,遍歷這個詞在古代漢語中已經出現過了
只是古人遍歷的是山川;而Python遍歷的是字符串、列表、字典。
除了字符串、列表、字典三種數據類型,我們還可以結合其他數據遍歷。
range()函數
for循環經常和range()函數一起搭配使用。
運行後, 你會看到整數0,1,2,3,4已經列印出來了。 使用range(n)函數,就可以生成一個從0到n-1的整數序列。
它還可以變形。運行下面代碼,觀察終端裡的效果。
使用range(x,y) 函數,你可以生成從x到y-1的整數序列。
江湖秘籍:有了range()函數之後,當想把一段代碼重複執行n遍時, 就可以直接使用for i in range(n)來解決問題。
for i in range(0,6):
print(i)
來練習一下:如果重複列印「每天想你第n遍」,n從0到6,你會怎麼寫?
for i in range(7):
print('每天想你第'+str(i)+'遍')
range()函數還有另外一種用法, 運行下面代碼, 觀察終端裡的效果。
for i in range(0,100,11):
print(i)
你get到什麼沒有? 這裡range(0,100,11) 的意思:從0到99(n-1)依次取數, 數與數之間的間隔為11。
for循環辦事流程
我們最後來看一下for循環的第三個要點:辦事流程。
for循環的辦事流程,就是for循環中執行的語句。
運行一下下面代碼, 觀察終端裡的效果。
運行一下,列印出 3 , 6, 9 。
在這裡print(i*3)就是辦事流程, 都是print(i*3)。在當從i=1的情況下開始執行print(i*3),一直執行到i=3把所有人的業務都辦完。
辦事流程的專名叫【for的循環體】:格式是【冒號】後另起一行,【縮進】寫命令。
格式對於編程來說,是件特別需要注意的事情。不要大意失荊州哦。再強調一下for循環的格式:
好了,到這裡就掌握了for循環的用法。你嘗試下使用for循環該如何操作?試一下。
city = {'北京':'美美','上海':'躍升','廣州':'小天'}
for i in [1,3,6]:
print(i+1)
你做對了嗎?
到這裡for循環就講完了, 一起回顧一下。
好了,我們學習了for循環, 下面來學習一下另外一種循環:while循環。
While循環
先和while循環混個臉熟,看一下while循環的顏值
你猜一猜,上圖代碼運行之後,會有什麼結果?
x = 0
while x < 6:
x = x+1
print(x)
是不是1,2,3,4,5,6依次列印出現?
它和for循環不同,它不叫號,也不是把一群排隊等著取錢的人的業務做完。它是在「一定條件下「,」按流程辦事」。
顯然,while循環只需要兩個步驟:1、設定條件 2、辦事流程
while循環:設定條件
while循環在英文中表示「當」, while後面跟條件,當滿足條件時,才會執行while內部的循環體。
所以,while循環類似於高速上的收費站:只要你滿足條件,那你就可以一遍又一遍循環「按流程辦事」。
在上面例子中,只要滿足條件x<6, 就會不停的執行x=x+1,print(x+1)列印出來,直到不滿足條件後,就停止辦事流程。
同樣,while循環也有代碼規範。
江湖秘籍:冒號還是英文輸入法下的冒號哦。
剛才黃曉明家的Angelababy去取錢,需要輸密碼,只要密碼輸入錯誤,ATM就會一直讓她輸密碼,如果密碼輸入正確,就會顯示銀行卡餘額。銀行卡的密碼是520666。
這段代碼,我先寫出來,你運行一下。
pwd = '' # 註:這個''代表空字符串
while pwd != '520666':
pwd = input('請輸入銀行卡密碼:')
print('卡內還有999999999999元~')
感受到while循環的邏輯沒有,是不是很簡單
這裡 pwd!=520666就是while循環設定的條件, 只要滿足這個條件,就會一直執行while循環裡面的循環體pwd = input('請輸入銀行卡密碼:')。
好了,接下來我們看看while循環的第二個要點:辦事流程。
while循環:辦事流程
while循環,在滿足設定條件後,會一遍又一遍的循環執行辦事流程。
來道題,看看大家如何理解while循環的:
a=0
while a<4:
a = a+1
print(a)
觀察上面代碼,如果運行代碼,終端中的結果是?
A: 5
B: 4
C: 1,2,3,4依次出現
rint(a)這句代碼沒有縮進,不在while循環中,所以print(a)只會列印最後一次的內容,即為4。
所以說,你要看好,while 設定條件:後面的循環體語句必須縮進,只有縮進了才是while循環的循環體,才能一遍又一遍的執行。
好了,我們運行下面代碼, 觀察終端裡的效果。
print("while循環內")
print(a)
print("while循環外")
好了,到這裡,while循環的知識學完了。
現在,我們 已經學習了for循環與while循環,下面,我們對比一下,兩個循環有什麼區別。
for循環與while循環對比
for循環和while循環最大的區別就是在於【循環的工作量是否確定】,for循環就像ATM依次取錢一樣,直到把所有人的錢都取完才下班。但是while循環就像收費站一樣,只要【滿足條件】就幹活,不滿足條件不幹活。
把『黃曉明『拆成一個一個字符,這件事屬於【循環的工作量已經確定】。
而對於輸入密碼,判斷是否正確這件事,我們也不知道Angelababy輸幾次密碼才能搞定呀。
江湖秘籍:看下圖,保存好,當以後行走江湖遇到for循環與while循環的時候,再看看。