python使用循环结构计算10_十二、 python中的循环结构
我們要計(jì)算1+2+3的時(shí)候,可以直接寫出來,但是計(jì)算1+2+3+···+100的時(shí)候,就不能寫了。如果計(jì)算1到1億的和,全寫出來就有點(diǎn)不現(xiàn)實(shí)了。為了讓計(jì)算機(jī)能計(jì)算出1到1億的和,這時(shí)候就需要循環(huán)結(jié)構(gòu)了。
python提供了兩種循環(huán)結(jié)構(gòu),一種是while循環(huán),另一種是for……in循環(huán)。
while循環(huán)
while循環(huán)的語句形式與if語句類似,執(zhí)行語句需要使用四個(gè)空格作為縮進(jìn)。
while (條件表達(dá)式1):
執(zhí)行語句1
執(zhí)行語句2
當(dāng)程序執(zhí)行到while循環(huán)的時(shí)候,先判斷“條件表達(dá)式1”,如果為True,則執(zhí)行下面的“執(zhí)行語句1”,“執(zhí)行語句2”,當(dāng)兩句都執(zhí)行完畢后,再次判斷“條件表達(dá)式1”,若為True,則繼續(xù)執(zhí)行下面的執(zhí)行語句,若為False,則不執(zhí)行下面的執(zhí)行語句,循環(huán)結(jié)束。
舉個(gè)例子,我們要計(jì)算1到5的和:
sum,i = 0,1 #sum=0, i=1
while i<=5:
sum+=i #sum=sum+i
i+=1 #i=i+1
print('sum',sum)
在這段程序中,先將sum賦值為0,i賦值為1,然后進(jìn)入循環(huán)結(jié)構(gòu)。首先判斷i<=5是真是假,為True,執(zhí)行下面的循環(huán)體,也就是sum+=i,i+=1,此時(shí)的sum等于1,i等于2,然后返回條件表達(dá)式i<=5,判斷是否為真,如果為真,繼續(xù)循環(huán)。如此往復(fù),最后i=6,條件表達(dá)式為False,循環(huán)結(jié)束,此時(shí)的sum等于1+2+3+4+5的和。執(zhí)行下一步打印sum,得到結(jié)果:
sum 15
這就是while循環(huán)。
for……in循環(huán)
python提供了一個(gè)for……in循環(huán),這個(gè)循環(huán)非常強(qiáng)大。它主要是能將列表和元組中的元素迭代出來。與之前的while循環(huán)相同的是,需要使用四個(gè)空格作為縮進(jìn)。
names = ['Tom', 'Jack', 'David']
for name in names:
print(name)
打印結(jié)果:
Tom
Jack
David
我們可以看到names是一個(gè)列表,里面有三個(gè)字符串
使用for name in names后,name作為一個(gè)變量,隨著循環(huán)的進(jìn)行,依次代表names中的每一個(gè)元素。第一次循環(huán)的時(shí)候,name是’Tom’,執(zhí)行循環(huán)體,print(name),打印出’Tom’;第二次循環(huán)時(shí),name變?yōu)椤疛ack’,打印出’Jack’;第三次name變?yōu)椤疍avid’,打印出’David’。至此,names中所有的元素已經(jīng)按次序循環(huán)了一次,循環(huán)到此結(jié)束。
這就是for循環(huán)。
如果我們要計(jì)算1到5的和,那么只用寫成:
sum = 0
for i in [1, 2, 3, 4, 5]:
sum+=i
print('sum',sum)
打印的結(jié)果是:
sum 15
不過這么寫的話就很麻煩,因?yàn)榈冒?到5全寫出來,好在python提供了一個(gè)叫做range()的函數(shù)。
range(start, stop[, step]) -> range object
range()函數(shù)里面最多放三個(gè)數(shù)字,最少放一個(gè)。
當(dāng)放1個(gè)數(shù)字的時(shí)候,代表stop這個(gè)參數(shù)。
當(dāng)放2個(gè)數(shù)字的時(shí)候,代表start和stop這兩個(gè)參數(shù)。
當(dāng)放3個(gè)數(shù)字的時(shí)候,代表start,stop和step這三個(gè)參數(shù)。
使用range()函數(shù)后,會生成一個(gè)整數(shù)序列,這個(gè)序列不是列表,必須通過強(qiáng)制類型轉(zhuǎn)換才能轉(zhuǎn)換為列表。
舉個(gè)例子:
print(range(5))
print(list(range(5)))
打印結(jié)果是:
range(0, 5)
[0, 1, 2, 3, 4]
我們可以看到range(5)就代表range(0,5),也就是一個(gè)從0到4的一個(gè)序列,這個(gè)與前面的切片類似,取前不取后,當(dāng)只使用一個(gè)參數(shù)的時(shí)候,該數(shù)字作為stop的位置,start參數(shù)默認(rèn)使用0,也就是從0到stop-1。當(dāng)使用第三個(gè)的數(shù)字的時(shí)候,第三個(gè)數(shù)字作為step,步長,這個(gè)與前面的切片也是類似的。
print(range(0,11,2))
print(list(range(0,11,2)))
打印結(jié)果:
range(0, 11, 2)
[0, 2, 4, 6, 8, 10]
以上就是range()函數(shù)的用法。不用擔(dān)心的是,range()函數(shù)生成的這個(gè)對象,這個(gè)有序序列,是可以直接用for……in進(jìn)行迭代的。
for i in range(5):
print(i)
打印結(jié)果:
0
1
2
3
4
所以我們在計(jì)算1到100的和的時(shí)候,可以使用如下的代碼:
sum = 0
for i in range(101):
sum+=i
print('sum:',sum)
可以看到打印結(jié)果:
sum: 5050
這就是使用for循環(huán)進(jìn)行計(jì)算。
通常來說,for循環(huán)比while循環(huán)更加靈活,尤其是操作對象為列表,元組,字典等可迭代結(jié)構(gòu)的時(shí)候,非常強(qiáng)大。
在做循環(huán)的時(shí)候,python提供了一個(gè)enumerate()函數(shù),非常實(shí)用
a = ['Tom', 'Jack', 'Bob']
for index,value in enumerate(a):
print(index, value)
打印結(jié)果:
0 Tom
1 Jack
2 Bob
enumerate()函數(shù)生成的是一個(gè)由多個(gè)元組組成的序列,每個(gè)元組里面都有兩個(gè)元素,分別是當(dāng)前元素是索引與當(dāng)前元素。上面那個(gè)例子中,在每次循環(huán)中,都將元組中的兩個(gè)值分別賦給了index和value,并分別打印出了這兩個(gè)值。
以上就是python中的循環(huán)結(jié)構(gòu)。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的python使用循环结构计算10_十二、 python中的循环结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 查看mysql运行时间_li
- 下一篇: list可以存放python中任意类型的