循環(huán)
Python中的循環(huán)結(jié)構(gòu)有兩種:for 和 while
for循環(huán)
1.語(yǔ)法
for 變量名 in 序列:
循環(huán)體
2.說(shuō)明
for -關(guān)鍵字,固定寫法
變量名 -和聲明變量時(shí)的變量名要求一樣
in -關(guān)鍵字油够,固定寫法
序列 -Python中的序列有字符串肛宋,列表咐容,元祖授药,字典幅疼,集合晓勇,range堂飞,生成器和迭代器等
注意:序列不能是數(shù)字類型
: -固定寫法
循環(huán)體 -和for保持一個(gè)縮進(jìn)的一條或多條語(yǔ)句
3.執(zhí)行過(guò)程
當(dāng)程序執(zhí)行到for循環(huán)時(shí):讓變量去序列中取值,一個(gè)一個(gè)的取绑咱,取完為止绰筛。每取一個(gè)值,執(zhí)行一次循環(huán)體描融。
for i in '321':
print('===')
for i in 'abc':
print(i)
a = '123'
b = 'abc'
for i in a:
print(i)
for i in b:
print(i)
"""
for i in 321: -----------錯(cuò)誤铝噩,運(yùn)行會(huì)報(bào)錯(cuò),因?yàn)樾蛄胁荒転閿?shù)字
print('===')
a = 123
for i in a: -----------錯(cuò)誤窿克,雖然變量可以當(dāng)序列骏庸,但變量值為數(shù)字,運(yùn)行會(huì)報(bào)錯(cuò)
print(i)
"""
range函數(shù)
range(N) -N是正整數(shù)年叮,產(chǎn)生0—N-1的所有整數(shù)
range(M,N) -M,N都是整數(shù)具被,且N>M,產(chǎn)生M—N-1的所有整數(shù)
range(M,N,S) -M,N,S都是整數(shù)只损,且N>M一姿,產(chǎn)生M—N-1之間七咧,每次加S后所得到的所有的數(shù)
注意:xrange是Python2.x版本的語(yǔ)法,在Python3.x版本無(wú)效
for num in range(10):
print(num)
for num in range(100,1000):
print(num)
for num in range(0,101,2):
print(num)
#練習(xí):計(jì)算1+2+3+...+100的和
sum1 = 0
for num in range(1,101):
sum1 += num
print(sum1)
while循環(huán)
1.語(yǔ)法
while 條件語(yǔ)句:
循環(huán)體
2.說(shuō)明
while -關(guān)鍵字叮叹,固定寫法
條件語(yǔ)句 -可以是數(shù)據(jù)艾栋,變量,運(yùn)算表達(dá)式等蛉顽,但不能是賦值運(yùn)算(和if的條件語(yǔ)句要求相同)
: -固定寫法
循環(huán)體 -和while保持一個(gè)縮進(jìn)的一條或多條語(yǔ)句(會(huì)被重復(fù)執(zhí)行)
3.執(zhí)行過(guò)程
先判斷條件語(yǔ)句是否為True蝗砾,為True則執(zhí)行一次循環(huán)體。執(zhí)行完循環(huán)體后携冤,再判斷條件語(yǔ)句是否為True遥诉,為True則再執(zhí)行一次循環(huán)體。執(zhí)行完循環(huán)體后噪叙,再矮锈,判斷條件語(yǔ)句是否為True,為True則再執(zhí)行一次循環(huán)體睁蕾,以此類推苞笨,直到判斷條件語(yǔ)句的結(jié)果為False,整個(gè)循環(huán)結(jié)束子眶。
兩個(gè)極端:
- 當(dāng)條件語(yǔ)句永遠(yuǎn)為True瀑凝,會(huì)造成死循環(huán)的現(xiàn)象
- 一開(kāi)始條件語(yǔ)句結(jié)果就為False,那么循環(huán)一次都不會(huì)執(zhí)行
#練習(xí):用while循環(huán)控制程序打印10行====
count = 1
while count <= 10:
print('===')
count += 1
for循環(huán)和while循環(huán)的選擇
- 遍歷(一個(gè)一個(gè)的瘸艚堋)序列元素粤咪,用for循環(huán)
- 循環(huán)次數(shù)確定的時(shí)候用for循環(huán)
- 死循環(huán)和循環(huán)次數(shù)不確定的時(shí)候用while循環(huán)(當(dāng)然上面for循環(huán)也都可以用while循環(huán)來(lái)實(shí)現(xiàn))
隨機(jī)數(shù)
需要導(dǎo)入random模塊,random是Python內(nèi)置的一個(gè)專門用來(lái)產(chǎn)生和處理隨機(jī)數(shù)的模塊
語(yǔ)法
randint(M,N) #產(chǎn)生M~N的隨機(jī)整數(shù)渴杆,要求M,N都為整數(shù)寥枝,且N>M
import random
random_num = random.randint(0,10)
print('隨機(jī)數(shù)是:',random_num)
練習(xí)
#猜數(shù)字
import random
random_num = random.randint(0,100)
count = 1
input_num = int(input('輸入一個(gè)數(shù)字:'))
while random_num != input_num:
if random_num > input_num:
print('小了')
else:
print('大了')
input_num = int(input('重新輸入一個(gè)數(shù)字:'))
count += 1
print('正確',random_num)
print('猜對(duì)數(shù)字所花次數(shù)為:',count)
if count == 1:
print('Very Lucky')
elif 1 < count <= 5:
print('Lucky!')
elif 5 < count <= 10:
print('Just so-so')
else:
print('Bad Luck')
continue關(guān)鍵字
用法:continue是關(guān)鍵字,只能出現(xiàn)在循環(huán)體中
功能:執(zhí)行循環(huán)體的時(shí)候磁奖,如果遇到continue囊拜,就直接結(jié)束當(dāng)次循環(huán),立即進(jìn)入下次循環(huán)的判斷比搭。
for i in range(10):
if i % 3 == 0:
continue
print(i)
break關(guān)鍵字
用法:continue是關(guān)鍵字冠跷,只能出現(xiàn)在循環(huán)體中
功能:執(zhí)行循環(huán)體的時(shí)候,如果遇到break身诺,整個(gè)循環(huán)直接結(jié)束
sum1 = 0
n =1
while True:
sum1 += n
if sum1 > 1000000:
break
n += 1
print(n,sum1,sum1-n)
sum1 = 0
count = 0
while sum1 <= 1000000:
count += 1
sum1 += count
print(count)
else關(guān)鍵字
語(yǔ)法:
for 變量 in 序列:
循環(huán)體
else:
語(yǔ)句塊
while 條件語(yǔ)句:
循環(huán)體
else:
語(yǔ)句塊
執(zhí)行過(guò)程:如果循環(huán)自然死亡蜜托,else對(duì)應(yīng)的語(yǔ)句塊會(huì)執(zhí)行;如果循環(huán)因遇到break而結(jié)束霉赡,else對(duì)應(yīng)的語(yǔ)句塊不會(huì)執(zhí)行橄务。
for x in range(5):
print(x)
else:
print('結(jié)束')
for x in range(5):
print(x)
break
else:
print('結(jié)束')
循環(huán)嵌套
在循環(huán)體中又有循環(huán)結(jié)構(gòu)
執(zhí)行過(guò)程:外循環(huán)執(zhí)行一次,內(nèi)循環(huán)要執(zhí)行完
for i in range(5):
for j in range(4):
print(i,j)
注意:循環(huán)嵌套中遇到continue或break時(shí)同廉,只對(duì)最近的循環(huán)生效(所屬的循環(huán))