day4總結(jié)
for
python中的循環(huán)結(jié)構(gòu)有兩種:for循環(huán)谜嫉、while循環(huán)
- for循環(huán)
a.語法
'''
for 變量名 in 序列:
循環(huán)體
'''
b.說明:
'''
for - 關(guān)鍵字甩栈,固定
變量名 - 和聲明變量的時候的變量名要求一樣
in - 關(guān)鍵字雁歌,固定寫法
序列 - Python中的序列有:字符串始藕、列表、元祖贱勃、集合刚操、字典、range伶椿、生成器和迭代器
: - 固定寫法
循環(huán)體 - 和for保持一個縮進(jìn)的一條或多條語句
'''
c.執(zhí)行過程
當(dāng)程序執(zhí)行到for循環(huán)的時候:讓變量去序列中取值辜伟,取完為止氓侧,每取一個值,執(zhí)行一次循環(huán)體
'''
a = 'a' print(a) print('===')
a = 'b' print(a) print('===')
'''
for a in 'abcdef':
print(a)
print('===')
- 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(M,N,S) - M,N,S都是整數(shù)烘豌,產(chǎn)生M~N-1载庭,每次加S來產(chǎn)生下一個數(shù)
for num in range(0,101,3):
print('===',num)
注意:xrange是Python2.x中的語法,Python3.x無效
練習(xí):計算1+2+3+...+100的值
sum1 = 0 #保存和
for num in range(1,5):
sum1 = sum1 + num
print(sum1)
'''
sum1 = 0
num = (1,2,3,4)
num = 1 sum1 = sum1+num, sum1 = 0 + 1 = 1
num = 2 sum1 = sum1+num, sum1 = 1 + 2
num = 3 sum1 = sum1+num, sum1 = 1+2+3
num = 4 sum1 = sum1+num, sum1 = 1+2+3+4=10
print(sum1) 10
'''
練習(xí):計算2468...*20的結(jié)果
sum2 = 1
for num in range(2,21,2):
sum2 = sum2 * num
print(sum2)
練習(xí):計算0~100中所有能被3或者5整除的數(shù)的和
sum3 = 0
for num in range(0,101):
if num % 3 == 0 or num % 5 ==0:
sum3 += num
print(sum3)
while
- while循環(huán)
a.語法
'''
while 條件語句:
循環(huán)體
'''
b.說明
'''
while - 關(guān)鍵字廊佩,固定寫法
條件語句 - 可以是數(shù)據(jù)囚聚、變量、運(yùn)算表達(dá)式等标锄,不能是賦值運(yùn)算
: - 固定寫法
循環(huán)體 - 和while保持一個縮進(jìn)的一條或多條語句(會被重復(fù)執(zhí)行)
'''
c.執(zhí)行過程:
'''
先判斷條件語句是否為True顽铸,為True就執(zhí)行一次循環(huán)體,
執(zhí)行完循環(huán)體再判斷條件語句是否為True料皇,為True又執(zhí)行一次循環(huán)體谓松,
執(zhí)行完循環(huán)體再判斷條件語句是否為True,為True又執(zhí)行一次循環(huán)體践剂,
以此類推鬼譬,直到判斷條件語句結(jié)果為False,整個循環(huán)直接結(jié)束逊脯。
兩個極端:1.當(dāng)條件語句永遠(yuǎn)為True优质,會造成死循環(huán)現(xiàn)象
2.一開始條件語句的結(jié)果就是False,那么循環(huán)一次都不會執(zhí)行
'''
練習(xí):用while循環(huán)控制程序打印10行'==='
count = 0
while count<4:
print('===')
count+=1
print(count)
'''
count = 0
count < 4 0 < 4 True print('===') count += 1 count = 0 + 1
count < 4 1 < 4 True print('===') count += 1 count = 1 + 1 = 2
count < 4 2 < 4 True print('===') count += 1 count = 2 + 1 = 3
count < 4 3 < 4 True print('===') count += 1 count = 3 + 1 = 4
count < 4 4 < 4 False
print(count) print(4)
'''
練習(xí)1:使用while循環(huán)打印0~10
count1 = 0
while count1 < 11:
print(count1)
count1 += 1
練習(xí)2:使用while循環(huán)打印20~11
count2 = 20
while count2 > 10:
print(count2)
count2 -= 1
練習(xí)3:使用while循環(huán)打印2,4,6军洼,8...40
count3 = 2
while count3 < 41:
print(count3)
count3 += 2
求2+4+6+...+40
sum = 0
count3 = 2
while count3 < 41:
sum += count3
count3 += 2
print(sum)
練習(xí):不斷輸入巩螃,直到輸入的值是100為止
num = int(input('請輸入數(shù)字:')) #也可以給num賦一個不是100的值
while num != 100:
num = int(input('不對,請重新輸入:'))
print('猜對了匕争!結(jié)束')
- 補(bǔ)充:隨機(jī)數(shù)
導(dǎo)入random模塊避乏,random是Python中內(nè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ù)字游戲
讓機(jī)器隨機(jī)產(chǎn)生一個數(shù),手動輸入一個數(shù)與隨機(jī)數(shù)比較扇住,相同則游戲獲勝
要有提示功能春缕,提示輸入的數(shù)與隨機(jī)數(shù)相比是偏大還是偏小
增加功能:統(tǒng)計玩家猜了多少次,然后根據(jù)次數(shù)范圍給相應(yīng)的評價
import random
random_num = random.randint(0,100)
result = int(input('請輸入一個數(shù):'))
count = 1 #記錄次數(shù)艘蹋,因為前面已經(jīng)輸入了一次
while result != random_num:
count += 1
if result > random_num:
print('偏大了')
else:
print('偏小了')
result = int(input('請重新輸入:'))
print('恭喜你猜對了',random_num)
print('猜的次數(shù):',count)
if count < 2:
print('天才锄贼!')
elif 2<=count<=7:
print('智商正常')
else:
print('你是個憨憨吧?')
- for循環(huán)和while循環(huán)的選擇
a.遍歷(一個一個的扰А)序列元素用for循環(huán)
b.循環(huán)次數(shù)確定的時候紅for循環(huán)
c.死循環(huán)和循環(huán)次數(shù)不確定的時候用while循環(huán)
continueBreakElse
- continue
用法:continue是關(guān)鍵字宅荤,只能出現(xiàn)在循環(huán)體中
功能:執(zhí)行循環(huán)體的時候屑迂,如果遇到continue,就直接結(jié)束檔次循環(huán)冯键,直接進(jìn)入下次循環(huán)的判斷
for x in range(10):
if x % 3 == 0:
continue
print(x)
continue
print('===')
- break
用法:break是關(guān)鍵字惹盼,只能出現(xiàn)在循環(huán)體
功能:執(zhí)行循環(huán)體的時候,如果遇到break惫确,整個循環(huán)直接結(jié)束
for x in range(10):
print(x)
break
print('!!!')
print('結(jié)束')
從0+1+2+3+...+n手报,求看到什么時候和超過1000000,求出這個數(shù)
sum1 = 0
n = 1
while True:
sum1 += n
if sum1 > 1000000:
break
n += 1
print(n,sum1,sum1-n)
- else
a.語法:
'''
for 變量 in 序列:
循環(huán)體
else:
語句塊
while 條件語句:
循環(huán)體
else:
語句塊
'''
b.執(zhí)行過程:如果循環(huán)自然死亡改化,else對應(yīng)的語句塊會執(zhí)行掩蛤;如果循環(huán)因為遇到break而結(jié)束,else對應(yīng)的語句塊不執(zhí)行
for x in range(10):
print(x)
else:
print('循環(huán)結(jié)束')
doubleloop
循環(huán)嵌套:在循環(huán)體中又有循環(huán)結(jié)構(gòu)
執(zhí)行過程:外循環(huán)執(zhí)行一次陈肛,內(nèi)循環(huán)執(zhí)行完
for x in range(5):
for y in range(4):
print(x)
print(y)
執(zhí)行過程:
x = (0,1,2,3,4)
x = 0 y = (0,1,2,3)
y = 0 print(0),print(0)
y = 0 print(0),print(1)
y = 0 print(0),print(2)
y = 0 print(0),print(3)