python中的循環(huán)結(jié)構(gòu)有兩種:for循環(huán)和,while循環(huán)
1.for循環(huán)
a.語(yǔ)法
"""
for 變量名 in 序列:
循環(huán)體
"""
b.說(shuō)明
"""
for -關(guān)鍵字 固定
變量名 - 和聲明變量的時(shí)候變量名要求一樣
in -關(guān)鍵字,固定寫(xiě)法
序列 -python中的序列有:字符串,列表,元祖,字典,集合,range,生成器和迭代器等
: -固定寫(xiě)法
循環(huán)體 -和for保持一個(gè)縮進(jìn)的一條或者多條語(yǔ)句
"""
c.執(zhí)行過(guò)程
當(dāng)程序執(zhí)行到for循環(huán)的時(shí)候:讓變量去序列中取值,一個(gè)一個(gè)取,取完為止。每取一個(gè)值,執(zhí)行一次循環(huán)體。
"""
a = 'a' print(a),print('=====')
a = 'b' print(b),print('=====')
a = 'c' print(c),print('=====')
...
a
=====
b
=====
c
=====
...
"""
for a in 'abcdefa':
print(a)
print('=====')
2.range函數(shù)
range(N) # N是正整數(shù),產(chǎn)生0~N-1的所有數(shù)
for num in range(10):
print(num)
range(M,N) # M,N都是整數(shù),并且N>M,產(chǎn)生M~N-1的所有整數(shù)
for num in range(100,1000):
print(num)
range(N,M,S) # M,N,S都是整數(shù),產(chǎn)生M~N-1,每次加S來(lái)產(chǎn)生下一個(gè)數(shù)
for num in range(0,101,2):
print('===',num)
#注意:xrange是python2.X的語(yǔ)法,在python3.X無(wú)效
練習(xí):計(jì)算1+2+3+...+100的和
sum1 = 0 #保存和的變量
for num in range(1,101):
# sum1 = sum1 + num
sum1 += num
print(sum1)
"""
sum1 = 0
num = (1,2,3,4)
num = 1 sum1 += num,sum1 = sum1+num,sum1 = 0 + 1 = 1
num = 2 sum1 += num,sum1 = sum1+num,sum1 = 1 + 2
num = 3 sum1 += num,sum1 = sum1+num,sum1 = 1 + 2 + 3
num = 4 sum1 += num,sum1 = sum1+num,sum1 = 1 + 2 + 3 + 4 = 10
print(sum1) 10
"""
練習(xí):計(jì)算 2 * 4 * 6 * 8 * ... * 20結(jié)果
sum2=1
for num2 in range(2,21,2):
sum2 *=num2
print(sum2)
練習(xí):計(jì)算0-100中所有能被3或者5整除的數(shù)的和
sum4 = 0
for num3 in range(101):
if num3 % 3 == 0 or num3 % 5 == 0:
print(num3)
sum4 += num3
print(sum4)
1.while循環(huán)
a.語(yǔ)法
"""
while 條件語(yǔ)句:
循環(huán)體
"""
b.說(shuō)明:
"""
while # 關(guān)鍵字,固定寫(xiě)法
條件語(yǔ)句 # 可以是數(shù)據(jù),變量,運(yùn)算表達(dá)式等。不能是賦值運(yùn)算
: # 固定寫(xiě)法
循環(huán)體 # 和while保持一個(gè)縮進(jìn)的一條或者多條語(yǔ)句(會(huì)被重復(fù)執(zhí)行)
"""
c.執(zhí)行過(guò)程:
"""
先判斷條件語(yǔ)句是否為T(mén)rue,為T(mén)ure就執(zhí)行一次循環(huán)體,
執(zhí)行完循環(huán)體再判斷條件語(yǔ)句是否為T(mén)ure,為T(mén)rue又執(zhí)行一次循環(huán)體,
執(zhí)行完循環(huán)體再判斷條件語(yǔ)句是否為T(mén)ure,為T(mén)rue又執(zhí)行一次循環(huán)體,
以此類推,直到判斷條件語(yǔ)句的結(jié)果為False,這個(gè)循環(huán)直接結(jié)束
兩個(gè)極端:1.當(dāng)條件語(yǔ)句永遠(yuǎn)為T(mén)rue,會(huì)造成死循環(huán)的現(xiàn)象
2.一開(kāi)始條件語(yǔ)句的結(jié)果就是False,那么循環(huán)一次都不會(huì)執(zhí)行
"""
練習(xí):用while循環(huán)控制成勛打印10行"====="
num = 0
while num < 10:
print('=====')
num += 1
"""
num = 0
num < 4 0 < 4 True print('=====') num += 1 num = num + 1 = 0 + 1
num < 4 1 < 4 True print('=====') num += 1 num = num + 1 = 1 + 1 = 2
num < 4 2 < 4 True print('=====') num += 1 num = num + 1 = 2 + 1 = 3
num < 4 3 < 4 True print('=====') num += 1 num = num + 1 = 3 + 1 = 4
num < 4 4 < 4 False
print(num) print(4)
輸出:
=====
=====
=====
=====
4
"""
練習(xí)1:使用while循環(huán)打印0-10
num2 = 0
while num2 < 11:
print(num2)
num2 += 1
練習(xí)2:使用while循環(huán)打印11-20
num3 = 11
while num3 < 21:
print(num3)
num3 += 1
練習(xí)3:使用while循環(huán)打印2,4,6,8,10...40
num4 = 2
while num4 <= 40:
print(num4)
num4 += 2
練習(xí)4:求2+4+6+...+40
num5 = 0
num6 = 2
while num6 <= 40:
num5 += num6
num6 += 2
print(num5)
練習(xí):不斷輸入,直到輸入的值是100為止
"""
請(qǐng)輸入數(shù)字:10
請(qǐng)輸入數(shù)字:1
請(qǐng)輸入數(shù)字;22
請(qǐng)輸入數(shù)字:100
結(jié)束!
"""
result = 0 # 保存輸入的結(jié)果
while result != 100:
result = int(input('請(qǐng)輸入數(shù)字'))
print('結(jié)束!')
2.補(bǔ)充:隨機(jī)數(shù)
導(dǎo)入random模塊,random是python內(nèi)置的一個(gè)專門(mén)用來(lái)產(chǎn)生和處理隨機(jī)數(shù)的模塊
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ù)字游戲
產(chǎn)生一個(gè)0-100的隨機(jī),然后不斷輸入數(shù)字直到輸入的數(shù)字和產(chǎn)生的隨機(jī)數(shù)一致為止。
如果輸入的數(shù)字和隨機(jī)數(shù)不相等,給出偏大或者偏小的提示
增加功能:統(tǒng)計(jì)玩家才對(duì)數(shù)字多少次,然后根據(jù)次數(shù)范圍給出相應(yīng)的評(píng)價(jià)!
產(chǎn)生隨機(jī)數(shù)
print('=================游戲開(kāi)始===================')
random_sum = random.randint(0,100)
sum = int(input('請(qǐng)輸入數(shù)字(0-100)'))
while sum != random_sum:
if sum > random_sum:
print('大了,再小點(diǎn)')
else:
print('小了,再大點(diǎn)')
sum = int(input('請(qǐng)輸入數(shù)字(0-100)'))
print('恭喜你猜對(duì)對(duì)了',random_sum)
if count > 7:
print('250!')
print('================游戲結(jié)束===================')
3.for循環(huán)和while循環(huán)的選擇
a.遍歷(一個(gè)一個(gè)的取)序列元素用for循環(huán)
b.循環(huán)次數(shù)確定的時(shí)候用for循環(huán)
c.死循環(huán)和循環(huán)次數(shù)不確定的時(shí)候用while循環(huán)
1.continue
用法:continue是關(guān)鍵字,只能出現(xiàn)在循環(huán)中
功能:執(zhí)行循環(huán)團(tuán)體的時(shí)候,如果遇到continue,就直接結(jié)束檔次循環(huán),直接進(jìn)入下次循環(huán)的判斷
for x in range(10):
if x % 3 == 0:
continue
print(x)
print('====')
2.break
用法:break是關(guān)鍵字,只能出現(xiàn)在循環(huán)體中
功能:執(zhí)行循環(huán)體的時(shí)候,如果遇到break,整個(gè)循環(huán)直接結(jié)束
print('=========================')
for x in range(10):
print(x)
break
print('!!!')
# print(x)
print('結(jié)束')
print('==========================')
從0+1+2+...+n,求和超過(guò)1000000的第一個(gè)數(shù)
num = 0
n = 1
while True:
num += n
if num > 1000000:
break
n += 1
print(n,num,num - n)
3.else
a.語(yǔ)法:
"""
for 變量 in 序列:
循環(huán)體
else:
語(yǔ)句塊
while 條件語(yǔ)句:
循環(huán)體
else:
語(yǔ)句塊
"""
b.執(zhí)行過(guò)程:如果循環(huán)自然死亡,else對(duì)飲的語(yǔ)句塊會(huì)執(zhí)行;如果循環(huán)因?yàn)橛龅絙reak而結(jié)束
else對(duì)應(yīng)的語(yǔ)句塊不會(huì)執(zhí)行
for x in range(5):
print(x)
else:
print('循環(huán)結(jié)束')
循環(huán)你嵌套:在循環(huán)體中又有循環(huán)結(jié)構(gòu)
執(zhí)行過(guò)程:外循環(huán)執(zhí)行一次,內(nèi)循環(huán)執(zhí)行完
for x in range(5):
for y in range(4):
print(x)
print(y)
"""
x = (0,1,2,3,4)
x =0 y = (0,1,2,3,)
y = 0 print(0),print(0)
y = 1 print(0),print(1)
y = 2 print(0),print(2)
y = 3 print(0),print(3)
x = 1 y = (0,1,2,3,)
...
輸出
0
0
0
1
0
2
0
3
"""