本章目錄
- Part One:while循環(huán)
- Part Two:for循環(huán)
- Part Three:continue和break
- Part Four:else語(yǔ)句
循環(huán)結(jié)構(gòu)可以使得程序在滿足某個(gè)條件的情況下,反復(fù)執(zhí)行相同的代碼曲横,比如計(jì)算1 + 2 + 3 + ... + 100就可以用循環(huán)來(lái)操作调鲸。
while循環(huán)
while循環(huán)就是操作循環(huán)的方法之一必指,它的語(yǔ)法格式和if語(yǔ)法格式極為相似:
while 循環(huán)條件:
# 循環(huán)體
Python會(huì)循環(huán)執(zhí)行循環(huán)體凯旭,直到循環(huán)條件不滿足為止惫霸。比如封恰,我們計(jì)算1到100的和:
x = 1
total = 0
while x <= 100:
total = total + x
x += 1
print(total)
結(jié)果自然是:
5050
同樣的矮烹,我們也可以用列表來(lái)操作:
# Python提供一個(gè)range()函數(shù)越庇,可以生成一個(gè)整數(shù)序列罩锐,range(101)就是0 - 100
# 再通過(guò)list()函數(shù)可以轉(zhuǎn)換為list
numbers = list(range(101))
total = 0
while len(numbers) > 0:
# pop(索引)是刪除指定位置的元素,并返回該元素的值
total = total + numbers.pop(0)
print(total)
for循環(huán)
Python中的for循環(huán)跟Java里的增強(qiáng)for循環(huán)的寫法比較類似卤唉,從語(yǔ)法角度上更符合人閱讀文章的習(xí)慣涩惑,它的語(yǔ)法結(jié)構(gòu)為:
for 變量 in 變量序列:
# 循環(huán)體
for 循環(huán)會(huì)遍歷完變量序列中所有元素為止,比如之前的計(jì)算1 - 100可以改寫為:
total = 0
for number in range(101):
total = total + number
print(total)
注意桑驱,使用for循環(huán)的時(shí)候竭恬,盡量不要改變列表的值,否則會(huì)有很多困惑熬的,比如不改變列表的值:
numbers = list(range(101))
total = 0
for number in numbers:
print(number, end="\t")
print(numbers.index(number))
total = total + number
print(total)
結(jié)果為:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
...
5050
而改變列表的值呢
numbers = list(range(101))
total = 0
for number in numbers:
print(number, end="\t")
print(numbers.index(number))
# 該值索引位置的值加1
numbers[numbers.index(number)] += 1
total = total + number
print(total)
結(jié)果為:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
...
5050
理論上后一行的代碼是不會(huì)影響到前一行的代碼痊硕,但是結(jié)果就是改變。悦析。寿桨。具體原理是什么此衅,有待研究强戴,等以后學(xué)好了再回來(lái)看看。
continue和break
- continue
在循環(huán)中使用continue挡鞍,表示跳出本次循環(huán)骑歹,直接進(jìn)入下一次循環(huán)。比如計(jì)算1 - 100的奇數(shù)之和:
odd_total = 0
for number in range(101):
# 如果number是偶數(shù)墨微,跳出本次循環(huán)道媚,繼續(xù)下一次循環(huán)
if number % 2 == 0:
continue
odd_total = odd_total + number
print(odd_total)
最后的結(jié)果為:
2500
- break
遇到break的時(shí)候,程序會(huì)跳出循環(huán)翘县,不管循環(huán)條件是不是滿足最域,例如:
total = 0
temp = 0
# 定義一個(gè)無(wú)限循環(huán)
while True:
temp = temp + 1
total = total + temp
# 如果值到了100,跳出循環(huán)
if temp == 100:
break
print(total)
結(jié)果為:
5050
else語(yǔ)句
else語(yǔ)句可以和循環(huán)配套使用锈麸,比如用來(lái)遍歷镀脂,然后判斷某個(gè)元素是否存在。
- 使用時(shí)忘伞,最好配合break語(yǔ)句:
values = ["Java", "Android", "Python"]
index = 0
while index < len(values):
if values[index] == "C":
print("C exists.")
break
index += 1
else:
print("C does not exist.")
結(jié)果為:
C does not exist.
- 如果將比較對(duì)象改為Java:
values = ["Java", "Android", "Python"]
index = 0
while index < len(values):
if values[index] == "Java":
print("Java exists.")
break
index += 1
else:
print("Java does not exist.")
結(jié)果為:
Java exists.
- 如果去掉break語(yǔ)句薄翅,則else語(yǔ)句始終執(zhí)行:
values = ["Java", "Android", "Python"]
index = 0
while index < len(values):
if values[index] == "Java":
print("Java exists.")
index += 1
else:
print("Java does not exist.")
結(jié)果為:
Java exists.
Java does not exist.
- 和for循環(huán)配套使用:
values = ["Java", "Android", "Python"]
for value in values:
if value == "Java":
print("Java exists.")
break
else:
print("Java does not exist.")
結(jié)果為:
Java exists.
- 如果把else放到循環(huán)里,和if配合使用:
values = ["Java", "Android", "Python"]
for value in values:
if value == "Android":
print("Android exists.")
break
else:
print("Android does not exist.")
結(jié)果為:
Android does not exist.
Android exists.
與我們的需求不符合氓奈,所以在遍歷查找某個(gè)元素是否存在時(shí)翘魄,可以用循環(huán)配合else語(yǔ)句一起使用,其效果等同于 列表.index(元素)舀奶。