一、for循環(huán)
for循環(huán):循環(huán)就是重復(fù)做某件事,for循環(huán)是python提供第二種循環(huán)機(jī)制(第一種是while循環(huán)),理論上for循環(huán)能做的事情,while循環(huán)都可以做。
目的:之所以要有for循環(huán),是因?yàn)閒or循環(huán)在循環(huán)取值(遍歷取值)比while循環(huán)更簡(jiǎn)潔。
(文末送讀者福利)
二、for循環(huán)語(yǔ)法如下
for 變量名 in 可迭代對(duì)象: # 此時(shí)只需知道可迭代對(duì)象可以是字符串\列表\字典,其實(shí)也可以是tuple(),set()
代碼一
代碼二
# # for循環(huán)
# # 列表取值
# l = ['lsj','a','b']
# for x in l:
# print(x)
lsj
a
b ...
# 參照例1來(lái)介紹for循環(huán)的運(yùn)行步驟
# 步驟1:從列表['lsj','a','b']中讀出第一個(gè)值賦值給x(x=‘lsj’),然后執(zhí)行循環(huán)體代碼
# 步驟2:從列表
['lsj','a','b']
三、 for循環(huán)應(yīng)用案例
案例一:for循環(huán)實(shí)現(xiàn)方式# 簡(jiǎn)單版:for循環(huán)的實(shí)現(xiàn)方式
# l = ['lsj', 'b', 'c'] # 定義一個(gè)列表
# for x in l:
# print(x)
# lsj
# b
# c
# 復(fù)雜版:while循環(huán)的實(shí)現(xiàn)方式
l = ["lsj","b","c"]
i = 0
while i < 3:
print(l[i])
i += 1
# lsj
# b
# c
# 使用循環(huán)取出0-5的值
# 簡(jiǎn)單版:for循環(huán)的實(shí)現(xiàn)方式一、
# for count in range(6): # range(6)會(huì)產(chǎn)生從0-5這6個(gè)數(shù)
# print(count)
# 復(fù)雜版:while循環(huán)的實(shí)現(xiàn)方式
# count = 0
# while count < 6:
# print(count)
# count += 1
案例二:遍歷字典 # 簡(jiǎn)單版:for循環(huán)的實(shí)現(xiàn)方式
dic = {
'name':'lsj','age':18,'gender':'male'}
for k in dic: # for 循環(huán)默認(rèn)取的是字典的key賦值給變量名k
print(k,dic[k])
# name lsj
# age 18
# gender male
# 復(fù)雜版:while循環(huán)確實(shí)可以遍歷字典,后續(xù)將會(huì)迭代器部分詳細(xì)介紹
案例三:for循環(huán)嵌套 #請(qǐng)用for循環(huán)嵌套的方式打印如下圖形:
*****
*****
*****
for i in range(3):
for j in range(5):
print("*",end='')
print() # print()表示換行
四、總結(jié)for循環(huán)與while循環(huán)的異同
(1)相同之處:都是循環(huán),for循環(huán)可以干的事,while循環(huán)也可以干
(2)不同之處:
while循環(huán)稱之為‘’條件循環(huán)‘’,循環(huán)次數(shù)取決于條件何時(shí)變?yōu)榧?/P>
for循環(huán)稱之為"取值循環(huán)",循環(huán)次數(shù)取決in后包含的值的個(gè)數(shù)
五、for循環(huán)控制循環(huán)次數(shù):range()
in后直接放一個(gè)數(shù)據(jù)類型來(lái)控制循環(huán)次數(shù)有局限性:
當(dāng)循環(huán)次數(shù)過(guò)多時(shí),數(shù)據(jù)類型包含值的格式需要伴隨著增加
range功能介紹
range(10) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 從0開始有頭無(wú)尾
range(1,10,1) # 1 2 3 4 5 6 7 8 9 設(shè)定開始,結(jié)束,步長(zhǎng)
range(1,10,2) # 1 3 5 7 9
range()的補(bǔ)充:python2與python3的不同之處。
在python2中對(duì)range(10)的處理:一個(gè)籃子里面裝有10個(gè)雞蛋,空間較大。
在python3中對(duì)range(10)的優(yōu)化:一只可以下10個(gè)雞蛋的母雞,空間較小。
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規(guī)范寫法
for i in range(5):
if i == 4:continue # PEP8規(guī)范不建議這樣寫
print(i)
for i in range(5):
if i == 4:
continue # PEP8規(guī)范這樣寫
print(i)
六、for循環(huán)的跳出
for+break: 同while循環(huán)一樣,只要運(yùn)行到break就會(huì)立刻中止本層循環(huán)
for+else:同while循環(huán)一樣,只要運(yùn)行到break就立即終止本次循環(huán)
總結(jié):for+break,for+continue,for+else的用法與while相同
練習(xí)一:# 打印九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print('%s*%s=%s' %(i,j,i*j),end=' ')
print()
練習(xí)二: # 打印金字塔
# 分析
'''
#max_level=5
* # current_level=1,空格數(shù)=4,*號(hào)數(shù)=1
*** # current_level=2,空格數(shù)=3,*號(hào)數(shù)=3
***** # current_level=3,空格數(shù)=2,*號(hào)數(shù)=5
******* # current_level=4,空格數(shù)=1,*號(hào)數(shù)=7
********* # current_level=5,空格數(shù)=0,*號(hào)數(shù)=9
# 數(shù)學(xué)表達(dá)式
空格數(shù)=max_level-current_level
*號(hào)數(shù)=2*current_level-1
'''
# 實(shí)現(xiàn):
max_level=5
for current_level in range(1,max_level+1):
for i in range(max_level-current_level):
print(' ',end='') #在一行中連續(xù)打印多個(gè)空格
for j in range(2*current_level-1):
print('*',end='') #在一行中連續(xù)打印多個(gè)空格
print()