編寫程序時(shí)經(jīng)常有代碼需要重復(fù)運(yùn)行,python提供了while和for進(jìn)行循環(huán)操作。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了興安盟烏蘭浩特免費(fèi)建站歡迎大家使用!一、while循環(huán)
1、while循環(huán)可以根據(jù)條件進(jìn)行判斷,決定是否要循環(huán)執(zhí)行語句塊,語法如下:
循環(huán)條件后面也是要使用冒號(hào),然后縮進(jìn)寫循環(huán)操作語句,先判斷條件是否成立,如果為true,則執(zhí)行循環(huán)操作語句,如果為false,則跳出循環(huán)。示例代碼如下:
count = 0
while (count <5):
count = count+1
print (count)
#結(jié)果
>>>
5
變量count初始值為0,當(dāng)count < 5時(shí),循環(huán)執(zhí)行count=count+1語句。如第1遍執(zhí)行時(shí),條件是0 < 5,結(jié)果true,則執(zhí)行count=count+1語句,count值變?yōu)?,此時(shí)已經(jīng)沒有其他語句同級(jí),則值變?yōu)?。以此類推,當(dāng)count等于4的時(shí)候,4 < 5成立,執(zhí)行count=count+1語句,count變?yōu)?,此時(shí)再進(jìn)行條件判斷5 < 5為false,退出while循環(huán),最后的輸出結(jié)果為5.
2、字符串的格式化是將若干值插入帶有“%”替代符的字符串中,從而可以動(dòng)態(tài)地輸出字符串,字符串中的“%d”表示插入的是一個(gè)整形數(shù)據(jù),字符串后面的“%i”表示取的是變量i的值。
字符串格式化中可以使用的替代符除了“%d”,還有其他的替代符,如下表:
下面示例演示這幾種替代符的使用情況:
num = 5
numStr = "5"
numF = 5.55
print("第%d名"%num)
print("第%s名"%numStr)
print("分?jǐn)?shù)是:%f"%numF)
#結(jié)果
>>>
第5名
第5名
分?jǐn)?shù)是:5.550000
字符串中使用對應(yīng)的替代符,把相應(yīng)的變量插入到了相應(yīng)的位置。
字符串中還可以使用多個(gè)替代符,對應(yīng)的變量使用元組即可,示例代碼如下:
first = 1
second = 2
print("第%d名和第%d名"%(first,second))
#結(jié)果
>>>
第1名和第2名
使用時(shí)要注意順序,位置不能放錯(cuò),否則可能會(huì)出現(xiàn)類型不匹配的問題。
還可以使用字典格式化多個(gè)值,示例代碼如下:
num={"first":1,"second":2}
print("第%(first)d名和第%(second)d名"%num)
#結(jié)果
>>>
第1名和第2名
因?yàn)樽值涫菬o序的,所以使用字典時(shí)需要把鍵指定出來,明確哪個(gè)位置要用哪個(gè)鍵值。
3、對于編寫好的代碼,經(jīng)過一段時(shí)間之后,有可能會(huì)忘記代碼的具體作用,所以代碼中要寫一些注釋文字,以便于日后閱讀和修改代碼。python中使用“#”+空格開頭表示注釋,可以對前面代碼加上注釋如下:
#輸入5門課程的考試成績,計(jì)算平均成績
#初始化循環(huán)計(jì)算器i
i=1
#初始化總成績變量sum
sum=0
#重復(fù)執(zhí)行5次接收考試成績,求和的操作
while i<=5:
print("請輸入第%d門課程的考試成績"%i)
#每門課程計(jì)入總成績
sum=sum+inpunt()
i=i+1 #計(jì)數(shù)器i增加1
#計(jì)算平均成績
avg=sum/(i-1)
#輸出平均成績
print("5門課程的平均成績是%d"%avg)
使用“#”+空格開頭的文字python解釋器不會(huì)做任何處理,可以提高代碼的可讀性。在行開頭就使用“#”+空格的成為單行注釋,緊隨同行以“#”+空格開頭的成為行內(nèi)注釋,注釋并不是在每行都需要,只需要把不易讀的代碼做注釋即可。
二、for循環(huán)
for循環(huán)是另一種用于控制循環(huán)的方式,while是使用條件判斷執(zhí)行循環(huán),而for是使用遍歷元素的方式進(jìn)行循環(huán)。
1、for循環(huán)的幾種方式
for循環(huán)的語法結(jié)構(gòu)如下:
常用的有以下幾種方式。
1)for循環(huán)可以對字符串進(jìn)行遍歷,逐個(gè)獲得字符串的每個(gè)字符,示例代碼如下:
for letter in ("python"):
print ("Current letter:%s"%letter)
#結(jié)果
>>>
Current letter:p
Current letter:y
Current letter:t
Current letter:h
Current letter:o
Current letter:n
語句“for letter in python”:的作用是對“python”字符串的字符逐個(gè)遍歷,把字符賦值給變量letter,然后執(zhí)行for對應(yīng)的語句塊。例如,第一遍執(zhí)行時(shí),letter的值是“p”,執(zhí)行輸出語句,然后返回再執(zhí)行for語句,letter的值是“y”;依此類推,當(dāng)執(zhí)行完最后一個(gè)字符“n”的語句塊后,for循環(huán)已經(jīng)沒有字符再可以獲得,循環(huán)退出。
2)for循環(huán)可以對列表和元組進(jìn)行遍歷,示例代碼如下:
fruits = ["西瓜","蘋果","香蕉"]
for fruit in fruits:
print (fruit)
#結(jié)果
>>>
西瓜
蘋果
香蕉
語句“for fruit in fruits:”的作用是遍歷列表fruits中的元素,把元素賦值給fruit,輸出語句每次輸出一個(gè)水果。
3)需要循環(huán)操作相同的內(nèi)容時(shí),可以用for循環(huán)和range()函數(shù)結(jié)合使用,先看看range()函數(shù)的作用,示例代碼如下:
for i in range(0,5):
print(i)
#結(jié)果
0
1
2
3
4
for i in range(0,5,2):
print(i)
#結(jié)果
>>>
0
2
4
range(0,5)輸出的是一個(gè)列表,由第一個(gè)參數(shù)0開始,默認(rèn)每次加1,當(dāng)大于等于第二個(gè)參數(shù)時(shí)結(jié)束,所以列表中不包括第二個(gè)參數(shù)值。range(0,5,2)多了第三個(gè)參數(shù)2,作用是每次加2,最后的列表值是“[0,2,4]”。所以range()函數(shù)的作用是創(chuàng)建一個(gè)數(shù)字列表,取值范圍是從起始數(shù)字開始到結(jié)束數(shù)字之前的內(nèi)容。for循環(huán)可以對列表進(jìn)行遍歷,所以可以對range()函數(shù)的結(jié)果進(jìn)行遍歷。示例代碼如下:
for i in range(0,5):
print("哈哈哈")
#結(jié)果
>>>
哈哈哈
哈哈哈
哈哈哈
哈哈哈
哈哈哈
range(0,5)是由0~4組成的列表,循環(huán)共執(zhí)行了5遍,輸出語句執(zhí)行了5遍,變量i的值就是每次遍歷列表的元素值。
2、for循環(huán)綜合示例代碼如下:
subjects = ('python','MySQL','Linux')
sum = 0
for i in subjects:
print("請輸入111的%s的考試成績:"%i)
score=int (input())
sum+=score
a v g=sum/len(subjects)
print("111的平均成績是%d"%a v g)
#結(jié)果
>>>
請輸入111的python的考試成績:
52
請輸入111的MySQL的考試成績:
68
請輸入111的Linux的考試成績:
84
111的平均成績是68
這段代碼的作用是接收2門課程的成績,計(jì)算輸出平均成績。使用for循環(huán)遍歷課程列表subjects,接收成績后使用sum累加,最后輸出平均成績。
3、邏輯運(yùn)算符
任何語言中都有邏輯表達(dá)式,它是用邏輯運(yùn)算符和變量連接起來的表達(dá)式,邏輯運(yùn)算符下圖所示:
簡單演示邏輯運(yùn)算符的使用方法:
>>> print (not True)
False
>>> print(True and False)
False
>>> print(True or False)
True
not是求反運(yùn)算,所以not True的結(jié)果是false;and是與運(yùn)算,只要有一個(gè)值是False,結(jié)果就是False,所以(True and False)的結(jié)果是False;or是或運(yùn)算,只要有一個(gè)值是True,結(jié)果就是True,所以(True or False)的結(jié)果是True。
4、for循環(huán)嵌套
同while循環(huán)一樣,for循環(huán)也可以使用嵌套的方式,示例代碼如下:
students =["111","222"]
subjects = ('Python','MySQL','Linux')
for student in students:
sum = 0
for subject in subjects:
print("請輸入%s的%s考試成績:"%(student,subject))
score = int(input())
sum+=score
avg=sum/len(subjects)
print("%s的平均成績是%d"%(student,avg))
#結(jié)果
>>>
請輸入111的Python考試成績:
56
請輸入111的MySQL考試成績:
75
請輸入111的Linux考試成績:
93
111的平均成績是74
請輸入222的Python考試成績:
63
請輸入222的MySQL考試成績:
42
請輸入222的Linux考試成績:
69
222的平均成績是58
第1層循環(huán)用于控制對學(xué)生進(jìn)行遍歷,第2層循環(huán)控制對課程遍歷,與while的方式基本相同。
此處需要注意的是,for循環(huán)的變量名沒有使用i、j這樣沒有意義的變量,而是使用了student、subject這種名稱明確的變量名,使程序的可讀性更強(qiáng),避免了引用變量時(shí)出現(xiàn)引用錯(cuò)誤的情況。
三、循環(huán)控制
當(dāng)使用while和for做循環(huán)操作時(shí),有可能需要改變循環(huán)的正常執(zhí)行順序,這時(shí)就需要用循環(huán)控制語句實(shí)現(xiàn),循環(huán)控制語句有break和continue。
1、break
在循環(huán)的語句塊中使用break語句,可以跳出整個(gè) 循環(huán)。下面對輸出平均成績的代碼進(jìn)行修改,當(dāng)成績無效時(shí),使用break退出循環(huán),示例代碼如下:
students =["111","222"]
subjects = ('Python','MySQL','Linux')
for student in students:
sum = 0
for subject in subjects:
print("請輸入%s的%s考試成績:"%(student,subject))
score = int(input())
if(score<0 or score>100):
print("輸入的成績需要大于0或小100,循環(huán)退出")
break;
sum+=score
avg=sum/len(subjects)
print("%s的平均成績是%d"%(student,avg))
#結(jié)果
>>>
請輸入111的Python考試成績:
52
請輸入111的MySQL考試成績:
111
輸入的成績需要大于0或小100,循環(huán)退出
111的平均成績是17
請輸入222的Python考試成績:
0
請輸入222的MySQL考試成績:
0
請輸入222的Linux考試成績:
5
222的平均成績是1
大部分是前面的代碼,只是在第8~10行加入了成績有效性的判斷,不符合條件,退出循環(huán)。當(dāng)輸入111時(shí),這是不符合條件的數(shù)值,程序執(zhí)行8~10行,break退出for循環(huán),break只和一個(gè)for循環(huán)對應(yīng),雖然有兩層循環(huán),但它只會(huì)結(jié)束離它最近的循環(huán),這里就是第2層for循環(huán)。第二層循環(huán)結(jié)束后,接著執(zhí)行后面的第12行和13行代碼,第1層的循環(huán)照常遍歷執(zhí)行,開始輸入第2個(gè)學(xué)生“王五”的成績。
2、continue
continue的作用和break不同,它不是結(jié)束整個(gè)循環(huán),而是跳過當(dāng)前一輪循環(huán)體的剩余語句,重新測試循環(huán)狀態(tài),準(zhǔn)備進(jìn)入下一輪循環(huán),示例代碼如下:
students =["111","222"]
subjects = ('Python','MySQL','Linux')
for student in students:
sum = 0
i = 0
while (i<len(subjects)):
print("請輸入%s的%s考試成績:"%(student,subjects[i]))
score=int(input())
if(score<0 or score>100):
print("輸入的成績需要大于0或小100,重新輸入")
continue;
sum+=score
i=i+1
avg=sum/len(subjects)
print("%s的平均成績是%d"%(student,avg))
#結(jié)果
>>>
52
請輸入111的MySQL考試成績:
120
輸入的成績需要大于0或小100,重新輸入
請輸入111的MySQL考試成績:
82
請輸入111的Linux考試成績:
100
111的平均成績是78
請輸入222的Python考試成績:
69
請輸入222的MySQL考試成績:
150
輸入的成績需要大于0或小100,重新輸入
請輸入222的MySQL考試成績:
63
請輸入222的Linux考試成績:
50
222的平均成績是60
第1層使用的是for循環(huán)遍歷名字,第2層使用while循環(huán)遍歷成績,使用continue是跳到離它最近的循環(huán)的下一輪,也就是第2層的while循環(huán)的下一輪。因?yàn)閳?zhí)行continue后,第13行的i=i+1沒有執(zhí)行,而是重新有執(zhí)行第6行的while循環(huán),所以就是對當(dāng)前課程的成績重新輸入。當(dāng)輸入MySQL的成績?yōu)?20時(shí),提示數(shù)據(jù)有誤,然后又提示需要重新輸入MySQL成績,代碼更加健壯。
此博文到此結(jié)束,感謝閱讀!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站標(biāo)題:python的循環(huán)-創(chuàng)新互聯(lián)
URL鏈接:http://jinyejixie.com/article14/dioede.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、動(dòng)態(tài)網(wǎng)站、建站公司、響應(yīng)式網(wǎng)站、全網(wǎng)營銷推廣、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容