python的循環(huán)-創(chuàng)新互聯(lián)

python的循環(huán)

編寫(xiě)程序時(shí)經(jīng)常有代碼需要重復(fù)運(yùn)行,python提供了while和for進(jìn)行循環(huán)操作。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序定制開(kāi)發(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í)行語(yǔ)句塊,語(yǔ)法如下:
python的循環(huán)
循環(huán)條件后面也是要使用冒號(hào),然后縮進(jìn)寫(xiě)循環(huán)操作語(yǔ)句,先判斷條件是否成立,如果為true,則執(zhí)行循環(huán)操作語(yǔ)句,如果為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語(yǔ)句。如第1遍執(zhí)行時(shí),條件是0 < 5,結(jié)果true,則執(zhí)行count=count+1語(yǔ)句,count值變?yōu)?,此時(shí)已經(jīng)沒(méi)有其他語(yǔ)句同級(jí),則值變?yōu)?。以此類推,當(dāng)count等于4的時(shí)候,4 < 5成立,執(zhí)行count=count+1語(yǔ)句,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”,還有其他的替代符,如下表:
python的循環(huán)
下面示例演示這幾種替代符的使用情況:

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

字符串中使用對(duì)應(yīng)的替代符,把相應(yīng)的變量插入到了相應(yīng)的位置。

字符串中還可以使用多個(gè)替代符,對(duì)應(yīng)的變量使用元組即可,示例代碼如下:

first = 1
second = 2
print("第%d名和第%d名"%(first,second))
      #結(jié)果
>>> 
第1名和第2名

使用時(shí)要注意順序,位置不能放錯(cuò),否則可能會(huì)出現(xiàn)類型不匹配的問(wèn)題。

還可以使用字典格式化多個(gè)值,示例代碼如下:

num={"first":1,"second":2}
print("第%(first)d名和第%(second)d名"%num)
      #結(jié)果
>>> 
第1名和第2名

因?yàn)樽值涫菬o(wú)序的,所以使用字典時(shí)需要把鍵指定出來(lái),明確哪個(gè)位置要用哪個(gè)鍵值。

3、對(duì)于編寫(xiě)好的代碼,經(jīng)過(guò)一段時(shí)間之后,有可能會(huì)忘記代碼的具體作用,所以代碼中要寫(xiě)一些注釋文字,以便于日后閱讀和修改代碼。python中使用“#”+空格開(kāi)頭表示注釋,可以對(duì)前面代碼加上注釋如下:

#輸入5門課程的考試成績(jī),計(jì)算平均成績(jī)
#初始化循環(huán)計(jì)算器i
i=1
#初始化總成績(jī)變量sum
sum=0
#重復(fù)執(zhí)行5次接收考試成績(jī),求和的操作
while i<=5:
    print("請(qǐng)輸入第%d門課程的考試成績(jī)"%i)
#每門課程計(jì)入總成績(jī)
sum=sum+inpunt()
i=i+1        #計(jì)數(shù)器i增加1
#計(jì)算平均成績(jī)
avg=sum/(i-1)
#輸出平均成績(jī)
print("5門課程的平均成績(jī)是%d"%avg)

使用“#”+空格開(kāi)頭的文字python解釋器不會(huì)做任何處理,可以提高代碼的可讀性。在行開(kāi)頭就使用“#”+空格的成為單行注釋,緊隨同行以“#”+空格開(kāi)頭的成為行內(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)的語(yǔ)法結(jié)構(gòu)如下:
python的循環(huán)
常用的有以下幾種方式。

1)for循環(huán)可以對(duì)字符串進(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

語(yǔ)句“for letter in python”:的作用是對(duì)“python”字符串的字符逐個(gè)遍歷,把字符賦值給變量letter,然后執(zhí)行for對(duì)應(yīng)的語(yǔ)句塊。例如,第一遍執(zhí)行時(shí),letter的值是“p”,執(zhí)行輸出語(yǔ)句,然后返回再執(zhí)行for語(yǔ)句,letter的值是“y”;依此類推,當(dāng)執(zhí)行完最后一個(gè)字符“n”的語(yǔ)句塊后,for循環(huán)已經(jīng)沒(méi)有字符再可以獲得,循環(huán)退出。

2)for循環(huán)可以對(duì)列表和元組進(jìn)行遍歷,示例代碼如下:

fruits = ["西瓜","蘋(píng)果","香蕉"]
for fruit in fruits:
    print (fruit)
        #結(jié)果
>>> 
西瓜
蘋(píng)果
香蕉

語(yǔ)句“for fruit in fruits:”的作用是遍歷列表fruits中的元素,把元素賦值給fruit,輸出語(yǔ)句每次輸出一個(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開(kāi)始,默認(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ù)字開(kāi)始到結(jié)束數(shù)字之前的內(nèi)容。for循環(huán)可以對(duì)列表進(jìn)行遍歷,所以可以對(duì)range()函數(shù)的結(jié)果進(jìn)行遍歷。示例代碼如下:

for i in range(0,5):
    print("哈哈哈")
        #結(jié)果
>>> 
哈哈哈
哈哈哈
哈哈哈
哈哈哈
哈哈哈

range(0,5)是由0~4組成的列表,循環(huán)共執(zhí)行了5遍,輸出語(yǔ)句執(zhí)行了5遍,變量i的值就是每次遍歷列表的元素值。

2、for循環(huán)綜合示例代碼如下:

subjects = ('python','MySQL','Linux')
sum = 0
for i in subjects:
    print("請(qǐng)輸入111的%s的考試成績(jī):"%i)
    score=int (input())
    sum+=score
a v g=sum/len(subjects)
print("111的平均成績(jī)是%d"%a v g)
        #結(jié)果
>>> 
請(qǐng)輸入111的python的考試成績(jī):
52
請(qǐng)輸入111的MySQL的考試成績(jī):
68
請(qǐng)輸入111的Linux的考試成績(jī):
84
111的平均成績(jī)是68

這段代碼的作用是接收2門課程的成績(jī),計(jì)算輸出平均成績(jī)。使用for循環(huán)遍歷課程列表subjects,接收成績(jī)后使用sum累加,最后輸出平均成績(jī)。

3、邏輯運(yùn)算符

任何語(yǔ)言中都有邏輯表達(dá)式,它是用邏輯運(yùn)算符和變量連接起來(lái)的表達(dá)式,邏輯運(yùn)算符下圖所示:
python的循環(huán)
簡(jiǎ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("請(qǐng)輸入%s的%s考試成績(jī):"%(student,subject))
        score = int(input())
        sum+=score
    avg=sum/len(subjects)
    print("%s的平均成績(jī)是%d"%(student,avg))
       #結(jié)果
>>>
請(qǐng)輸入111的Python考試成績(jī):
56
請(qǐng)輸入111的MySQL考試成績(jī):
75
請(qǐng)輸入111的Linux考試成績(jī):
93
111的平均成績(jī)是74
請(qǐng)輸入222的Python考試成績(jī):
63
請(qǐng)輸入222的MySQL考試成績(jī):
42
請(qǐng)輸入222的Linux考試成績(jī):
69
222的平均成績(jī)是58

第1層循環(huán)用于控制對(duì)學(xué)生進(jìn)行遍歷,第2層循環(huán)控制對(duì)課程遍歷,與while的方式基本相同。
此處需要注意的是,for循環(huán)的變量名沒(méi)有使用i、j這樣沒(méi)有意義的變量,而是使用了student、subject這種名稱明確的變量名,使程序的可讀性更強(qiáng),避免了引用變量時(shí)出現(xiàn)引用錯(cuò)誤的情況。

三、循環(huán)控制

當(dāng)使用while和for做循環(huán)操作時(shí),有可能需要改變循環(huán)的正常執(zhí)行順序,這時(shí)就需要用循環(huán)控制語(yǔ)句實(shí)現(xiàn),循環(huán)控制語(yǔ)句有break和continue。

1、break

在循環(huán)的語(yǔ)句塊中使用break語(yǔ)句,可以跳出整個(gè) 循環(huán)。下面對(duì)輸出平均成績(jī)的代碼進(jìn)行修改,當(dāng)成績(jī)無(wú)效時(shí),使用break退出循環(huán),示例代碼如下:

students =["111","222"]
subjects = ('Python','MySQL','Linux')
for student in students:
    sum = 0
    for subject in subjects:
        print("請(qǐng)輸入%s的%s考試成績(jī):"%(student,subject))
        score = int(input())
        if(score<0 or score>100):
            print("輸入的成績(jī)需要大于0或小100,循環(huán)退出")
            break;
        sum+=score
    avg=sum/len(subjects)
    print("%s的平均成績(jī)是%d"%(student,avg))
        #結(jié)果
>>>
請(qǐng)輸入111的Python考試成績(jī):
52
請(qǐng)輸入111的MySQL考試成績(jī):
111
輸入的成績(jī)需要大于0或小100,循環(huán)退出
111的平均成績(jī)是17
請(qǐng)輸入222的Python考試成績(jī):
0
請(qǐng)輸入222的MySQL考試成績(jī):
0
請(qǐng)輸入222的Linux考試成績(jī):
5
222的平均成績(jī)是1

大部分是前面的代碼,只是在第8~10行加入了成績(jī)有效性的判斷,不符合條件,退出循環(huán)。當(dāng)輸入111時(shí),這是不符合條件的數(shù)值,程序執(zhí)行8~10行,break退出for循環(huán),break只和一個(gè)for循環(huán)對(duì)應(yīng),雖然有兩層循環(huán),但它只會(huì)結(jié)束離它最近的循環(huán),這里就是第2層for循環(huán)。第二層循環(huán)結(jié)束后,接著執(zhí)行后面的第12行和13行代碼,第1層的循環(huán)照常遍歷執(zhí)行,開(kāi)始輸入第2個(gè)學(xué)生“王五”的成績(jī)。

2、continue

continue的作用和break不同,它不是結(jié)束整個(gè)循環(huán),而是跳過(guò)當(dāng)前一輪循環(huán)體的剩余語(yǔ)句,重新測(cè)試循環(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("請(qǐng)輸入%s的%s考試成績(jī):"%(student,subjects[i]))
        score=int(input())
        if(score<0 or score>100):
            print("輸入的成績(jī)需要大于0或小100,重新輸入")
            continue;
        sum+=score
        i=i+1
    avg=sum/len(subjects)
    print("%s的平均成績(jī)是%d"%(student,avg))
     #結(jié)果
>>>
52
請(qǐng)輸入111的MySQL考試成績(jī):
120
輸入的成績(jī)需要大于0或小100,重新輸入
請(qǐng)輸入111的MySQL考試成績(jī):
82
請(qǐng)輸入111的Linux考試成績(jī):
100
111的平均成績(jī)是78
請(qǐng)輸入222的Python考試成績(jī):
69
請(qǐng)輸入222的MySQL考試成績(jī):
150
輸入的成績(jī)需要大于0或小100,重新輸入
請(qǐng)輸入222的MySQL考試成績(jī):
63
請(qǐng)輸入222的Linux考試成績(jī):
50
222的平均成績(jī)是60

第1層使用的是for循環(huán)遍歷名字,第2層使用while循環(huán)遍歷成績(jī),使用continue是跳到離它最近的循環(huán)的下一輪,也就是第2層的while循環(huán)的下一輪。因?yàn)閳?zhí)行continue后,第13行的i=i+1沒(méi)有執(zhí)行,而是重新有執(zhí)行第6行的while循環(huán),所以就是對(duì)當(dāng)前課程的成績(jī)重新輸入。當(dāng)輸入MySQL的成績(jī)?yōu)?20時(shí),提示數(shù)據(jù)有誤,然后又提示需要重新輸入MySQL成績(jī),代碼更加健壯。

此博文到此結(jié)束,感謝閱讀!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站標(biāo)題:python的循環(huán)-創(chuàng)新互聯(lián)
URL鏈接:http://bm7419.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íng)銷推廣搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司