【python系統學習08】for循環知識點合集

for循環

for簡介

【循環】:就是依照某些咱們編寫的特定規則,重複的作一件事。html

當你須要重複的「搬磚」的時候,能夠用for循環進行遍歷,讓機器循環的幫你去「搬磚」,完全解放咱們的雙手。python

【遍歷】:所謂遍歷,就是一遍一遍的經歷。放到程序中,就是讓程序一遍又一遍的經歷重跑同一段代碼程序的場景。和循環一個意思。git

代碼格式

nameList = ['小石頭', 'xing.org1^', '郭菊鋒']
for name in nameList:
  print(name) # 3次循環依次打印出'小石頭', 'xing.org1^', '郭菊鋒'
else:
  print('else狀況') # else每次都會通過,當for循環執行完畢後執行else的代碼塊
print('===for循環完畢===')
print(name) # 郭菊鋒

以上代碼中,咱們定義了一個列表數據nameList,而且使用for循環,依次遍歷將列表中的每一項都迭代出來。github

每次循環時,咱們定義的變量name就會被從新賦值爲nameList的對應元素,第1次循環name被賦值爲第一個元素、第2次循環name又被賦值成第二個元素。以此類推,直到nameList被循環完成或者出現跳出循環的指令(下表)後就會中止。函數

而中止循環後,變量name就是最後一個被賦值的元素,這裏爲郭菊鋒code

觀察上述代碼,for循環的語法格式也有必定的規律。htm

語法格式

for 元素變量 in 迭代對象:
  【for子句】在代碼塊中,位於【縮進】後邊。for子句裏的內容會被循環執行。
else:
  else裏邊的內容都會被執行。在for循環完畢以後執行。

可被迭代的數據類型

有哪些數據類型能夠被for循環遍歷呢?對象

結論:列表、字典、字符串。用例子說明:索引

列表

for循環遍歷列表數據,能夠依次打印出列表中的每一項。字符串

打印循環的次數取決於列表中元素的個數。也就是列表的長度。

nameList = ['小石頭', 'xing.org1^', '郭菊鋒']
for name in nameList:
  print(name) # 3次循環依次打印出'小石頭', 'xing.org1^', '郭菊鋒'

字典

for循環遍歷字典數據,能夠依次打印出字典中的每個鍵(key)名。

咱們能夠在利用字典名[key]的方式,獲取key所對應的值。

打印循環的次數取決於字典中鍵名key的個數。

dictName = {'name': '小石頭', 'nameEn': 'xing.org1^'}
for name in dictName:
  print(name) # 2次循環依次打印出'name', 'nameEn'
  print(dictName[name]) # 2次循環依次打印出'小石頭', 'xing.org1^'

字符串

字符串也能夠被for循環遍歷,打印的將是每個字符。

打印循環的次數取決於字符串的字符個數。

strName = 'xing.org1^'
for s in strName:
  print(s)
# 循環依次打印結果以下:
# x
# i
# n
# g
# .
# o
# r
# g
# 1
# ^

不可被迭代的數據類型

整數、浮點數皆不可被迭代,若是強行遍歷會發生錯誤:

整數

整數對象不是可迭代的:

numberValue = 2020
for num in numberValue: # TypeError: 'int' object is not iterable
  print(num)

浮點值

浮點數對象不是可迭代的:

floatValue = 1.23
for num in floatValue: # TypeError: 'float' object is not iterable
  print(num)

布爾值

布爾對象不可迭代:

boolVal = True
for b in boolVal: # TypeError: 'bool' object is not iterable
  print(b)

空值

空值對象不可被迭代:

noneVal = None
for n in noneVal: # TypeError: 'NoneType' object is not iterable
  print(n)

整數轉化爲範圍後可被迭代

雖然直接for循環整數,會發生錯誤。

可是若是咱們利用range函數,將整數轉化爲一個數字範圍,再去進行for遍歷,就能夠了。

range(y)

numValue = 5
for index in range(numValue):
  print('5的迭代:', index)

# 五次循環打印結果以下 
# 5的迭代: 0
# 5的迭代: 1
# 5的迭代: 2
# 5的迭代: 3
# 5的迭代: 4

觀察可知,range範圍迭代時,從「0」開始,且不包含「5」。

range(x, y)

從上邊例子中能夠看出來,若x不填則會默認從0開始。

若是不想從0開始呢?咱們能夠指定從幾開始。代碼上能夠這麼寫:

rangeValue1 = 5
for index in range(1, rangeValue1): # 明確指定從1開始
  print('range:', index)

# 循環打印結果以下
# range: 1
# range: 2
# range: 3
# range: 4

能夠看到另外一個規律,在range括號裏,逗號前邊的數字被迭代時是包含的,右邊的不包含。即取逗號左邊而不取右邊的數字。

因此上例中,你若是想打印出「5」,那麼括號最右邊的數字你應該至少填寫的比5大1。

range(x, y, i)

x和y,跟上邊例子一致。均是從x開始,到y可是不包括y的迭代。而i是interval的縮寫。表示間隔。既從x開始循環後,下一次的循環與上一次循環間隔多少。

文字空洞,代碼奉上:

for index in range(0,10,3):
  print('interval:', index)

# 循環打印結果以下:
# interval: 0
# interval: 3
# interval: 6
# interval: 9

從代碼和打印結果觀察得知,依舊是從0開始循環打印。不過0打印完了之後,一、2不打印。從3開始又有打印。依次規律類推...

Peace && Love

最後,嚐嚐人類復讀機的力量吧

rangeValue2 = 5
for index in range(rangeValue2):
  print('''
    病毒消失,病人痊癒。武漢加油,天佑中華!
  ''')

#   病毒消失,病人痊癒。武漢加油,天佑中華!


#   病毒消失,病人痊癒。武漢加油,天佑中華!


#   病毒消失,病人痊癒。武漢加油,天佑中華!


#   病毒消失,病人痊癒。武漢加油,天佑中華!


#   病毒消失,病人痊癒。武漢加油,天佑中華!


#   病毒消失,病人痊癒。武漢加油,天佑中華!

迭代列表時獲取索引

咱們經過上邊迭代列表和字典的代碼中能夠看出來,for後邊的變量在迭代列表的時候是列表內的元素、迭代字典的時候則是字典裏邊的鍵名。

那麼若是我想迭代字典時,有個變量存放列表中各項所對應的偏移量(索引)呢?

經過range函數的搭配,咱們不只能夠迭代整數,還能迭代列表的索引。

因而我就試了下邊的寫法,可是他報錯了。

# 迭代時傳兩個參數會報錯:
nameList = ['小石頭', 'xing.org1^', '郭菊鋒']
for name,index in nameList: # ValueError: too many values to unpack (expected 2)
  print(index)

錯誤內容ValueError: too many values to unpack (expected 2)。表示了這裏不該該有兩個參數。

那麼咱們想用索引來攜帶列表時該怎麼寫呢?
一開始我給本身寫了一個bug:

nameList = ['小石頭', 'xing.org1^', '郭菊鋒']
for index in range(nameList): # TypeError: 'list' object cannot be interpreted as an integer
  print(index)

range內部只能接受整數。而列表轉化不成整數,出點類型錯誤。

改正後,寫法以下:

nameList = ['小石頭', 'xing.org1^', '郭菊鋒']
for index in range(len(nameList)):
  print(index) # 三次循環分別打印0、一、2

思路是:先用len獲取列表的長度,而後將計算的長度這個數字,放到range內部。

continue 跳過本次循環

continue跳過本次循環,for循環跳事後繼續執行下一次循環。

for i in range(5):
  if(i == 3):
    continue
  else:
    print('continue跳過循環', i)
else:
  print('有continue的for循環的else')

# 打印結果以下:
# continue跳過循環 0
# continue跳過循環 1
# continue跳過循環 2
# continue跳過循環 4
# 有continue的for循環的else

能夠看打印結果得知,在知足i==3的條件以後,直接跳出了當次的循環沒有打印3這個數字。而是進入到下次循環,打印出4後,循環完畢。

而後執行了for後邊的else語句。

break 跳出循環

break跳出循環,for循環無論是否完成將直接結束。甚至for後邊的else都不會再執行。

for i in range(5):
  if(i == 3):
    break 
  else:
    print('break跳過循環', i)
else:
  print('有break的for循環的else')

# 打印結果以下:
# break跳過循環 0
# break跳過循環 1
# break跳過循環 2

能夠看打印結果得知,在知足i==3的條件以後,直接跳出了循環。

for循環後邊的else都沒執行。因此只打印了0、一、2。

思考題

建立一個從1到100的整數列表

用for循環打印1-100

九九乘法表

用for循環打印一個九九乘法表。就是小學時候咱們鉛筆盒蓋子內部上印刷的那種,表格形式的。

【Python】循環for源代碼地址

相關文章
相關標籤/搜索