一、for循環
for循環:循環就是重複做某件事,for循環是python提供第二種循環機製(第一種是while循環),理論上for循環能做的事情,while循環都可以做。
目的:之所以要有for循環,是因為(wei) for循環在循環取值(遍曆取值)比while循環更簡潔。
(文末送讀者福利)
二、for循環語法如下
for 變量名 in 可迭代對象: # 此時隻需知道可迭代對象可以是字符串\列表\字典,其實也可以是tuple(),set()
代碼一
代碼二
# # for循環 # # 列表取值 # l = ['lsj','a','b'] # for x in l: # print(x) lsj a b ...
# 參照例1來介紹for循環的運行步驟
# 步驟1:從(cong) 列表['lsj','a','b']中讀出第一個(ge) 值賦值給x(x=‘lsj’),然後執行循環體(ti) 代碼
# 步驟2:從(cong) 列表
['lsj','a','b']
三、 for循環應用案例
案例一:for循環實現方式# 簡單版:for循環的實現方式 # l = ['lsj', 'b', 'c'] # 定義(yi) 一個(ge) 列表 # for x in l: # print(x) # lsj # b # c # 複雜版:while循環的實現方式 l = ["lsj","b","c"] i = 0 while i < 3: print(l[i]) i += 1 # lsj # b # c # 使用循環取出0-5的值 # 簡單版:for循環的實現方式一、 # for count in range(6): # range(6)會(hui) 產(chan) 生從(cong) 0-5這6個(ge) 數 # print(count) # 複雜版:while循環的實現方式 # count = 0 # while count < 6: # print(count) # count += 1 案例二:遍曆字典
# 簡單版:for循環的實現方式
dic = {
'name':'lsj','age':18,'gender':'male'}
for k in dic: # for 循環默認取的是字典的key賦值給變量名k
print(k,dic[k])
# name lsj
# age 18
# gender male
# 複雜版:while循環確實可以遍曆字典,後續將會(hui) 迭代器部分詳細介紹
案例三:for循環嵌套 #請用for循環嵌套的方式打印如下圖形:
*****
*****
*****
for i in range(3):
for j in range(5):
print("*",end='')
print() # print()表示換行
四、總結for循環與(yu) while循環的異同
(1)相同之處:都是循環,for循環可以幹的事,while循環也可以幹
(2)不同之處:
while循環稱之為(wei) ‘’條件循環‘’,循環次數取決(jue) 於(yu) 條件何時變為(wei) 假
for循環稱之為(wei) "取值循環",循環次數取決(jue) in後包含的值的個(ge) 數
五、for循環控製循環次數:range()
in後直接放一個(ge) 數據類型來控製循環次數有局限性:
當循環次數過多時,數據類型包含值的格式需要伴隨著增加
range功能介紹
range(10) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 從(cong) 0開始有頭無尾 range(1,10,1) # 1 2 3 4 5 6 7 8 9 設定開始,結束,步長 range(1,10,2) # 1 3 5 7 9
range()的補充:python2與(yu) python3的不同之處。
在python2中對range(10)的處理:一個(ge) 籃子裏麵裝有10個(ge) 雞蛋,空間較大。
在python3中對range(10)的優(you) 化:一隻可以下10個(ge) 雞蛋的母雞,空間較小。
for搭配range,可以按照索引取值,(比較麻煩所以不推薦)
l = ['lsj', 'a', 'c'] # len(l) for i in range(len(l)): print(i, l[i]) for x in l: print(x)
PEP8規範寫(xie) 法
for i in range(5): if i == 4:continue # PEP8規範不建議這樣寫(xie) print(i) for i in range(5): if i == 4: continue # PEP8規範這樣寫(xie) print(i)
六、for循環的跳出
for+break: 同while循環一樣,隻要運行到break就會(hui) 立刻中止本層循環
for+else:同while循環一樣,隻要運行到break就立即終止本次循環
總結:for+break,for+continue,for+else的用法與(yu) while相同
練習一:# 打印九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print('%s*%s=%s' %(i,j,i*j),end=' ')
print()
練習二: # 打印金字塔
# 分析
'''
#max_level=5
* # current_level=1,空格數=4,*號數=1
*** # current_level=2,空格數=3,*號數=3
***** # current_level=3,空格數=2,*號數=5
******* # current_level=4,空格數=1,*號數=7
********* # current_level=5,空格數=0,*號數=9
# 數學表達式
空格數=max_level-current_level
*號數=2*current_level-1
'''
# 實現:
max_level=5
for current_level in range(1,max_level+1):
for i in range(max_level-current_level):
print(' ',end='') #在一行中連續打印多個空格
for j in range(2*current_level-1):
print('*',end='') #在一行中連續打印多個空格
print()