前言回顧
1. 運(yùn)算符:比較坤按、邏輯碌廓、賦值
1 >, <, ==, !=, >=, <= 比較運(yùn)算符結(jié)果都是布爾值
2 and, or, not
print(235 and 89) # 89 and 輸出數(shù)字總是輸出and后面的數(shù)字
print(235 or 89) # 235 or 輸出數(shù)字總是輸出or前面的數(shù)字
數(shù)字進(jìn)行邏輯運(yùn)算是無(wú)意義的
3 =, +=, -=, *=, /= (前面必須為變量维贺,且變量之前必須聲明過)
2. if結(jié)構(gòu)
- 應(yīng)用:一個(gè)操作是在滿足某個(gè)條件的時(shí)候才執(zhí)行
- if、if-else、if-elif-···-else
if 條件語(yǔ)句:
代碼塊
if 19:
print('==')
if '':
print('===')
if判斷條件語(yǔ)句時(shí)蛋叼,若條件語(yǔ)句不是布爾值,則會(huì)先轉(zhuǎn)換成布爾值
數(shù)字類型轉(zhuǎn)為布爾值剂陡,只有0才為False,其他數(shù)字均為True
字符串轉(zhuǎn)換為布爾值狈涮,只有空串才為False,其他字符串均為True
if 條件語(yǔ)句:
代碼塊1
else:
代碼塊2
if 條件語(yǔ)句1:
代碼塊1
elif 條件語(yǔ)句2:
代碼塊2
...
else:
代碼塊n
if-elif-...-else
若執(zhí)行了其中一個(gè)條件語(yǔ)句的代碼塊,就會(huì)跳出if語(yǔ)句鹏倘,不再執(zhí)行了
3. 數(shù)字類型:int, float, bool,comlex
基數(shù)薯嗤、表示方式:0b, 0o, 0x 轉(zhuǎn)換:bin(), oct(), hex()
b:二進(jìn)制 o:八進(jìn)制 d:十進(jìn)制 x:十六進(jìn)制
科學(xué)計(jì)數(shù)法:3e2
True -> 1, False -> 0
python中循環(huán)結(jié)構(gòu)有兩種:for循環(huán)和while循環(huán)
1. for循環(huán)
1. 循環(huán)的作用:讓部分操作重復(fù)執(zhí)行
2. 怎么使用for循環(huán)
- 語(yǔ)法
for 變量 in 序列:
循環(huán)體
- 說明
for、in - 關(guān)鍵字纤泵,固定寫法
變量 - 變量名骆姐,需要滿足變量名的要求
序列 - 容器類型的數(shù)據(jù),python中常見的序列:字符串捏题、列表玻褪、元祖、集合公荧、字典带射、迭代器、生成器循狰、range
: - 固定寫法
循環(huán)體 - 和for保持一個(gè)縮進(jìn)的一條或者多條語(yǔ)句(需要重復(fù)執(zhí)行的語(yǔ)句)
- 執(zhí)行過程
讓變量去序列中取值窟社,一個(gè)一個(gè)的取,取完為止绪钥;每取一個(gè)值執(zhí)行一次循環(huán)體
(序列中數(shù)據(jù)的個(gè)數(shù)灿里,決定了循環(huán)的次數(shù))
for i in 'python':
print(i)
print('+++++')
print('end')
3.range函數(shù)
range是python內(nèi)置的一個(gè)用來生成數(shù)字序列的函數(shù),在python2.x中range由xrange代替
作用:1. 結(jié)合for循環(huán)控制循環(huán)次數(shù) 2. 結(jié)合for循環(huán)產(chǎn)生指定范圍的數(shù)字序列
range(N) - 產(chǎn)生數(shù)字范圍:0 ~ N-1 (這兒的N是任意的正整數(shù))
range(M, N) - 產(chǎn)生數(shù)字范圍:M ~ N-1 (這兒的M和N是整數(shù)程腹,并且N>M)
range(M, N, Step) - 產(chǎn)生數(shù)字范圍:M ~ N-1,每次數(shù)字增加step(注意:step是正整數(shù)N>m; setp是負(fù)整數(shù)N<M)
print('range(N)')
for x in range(10):
print(x)
print('range(M, N)')
for x in range(100, 1000):
print(x)
print('range(M, N, Step)')
for x in range(0, 100, 2): # step為負(fù)數(shù)匣吊,則前面的比后面的大
print(x)
練習(xí)1:使用for循環(huán)計(jì)算1+2+3+...+100
print('=====')
sum = 0 #保存和的變量
for x in range(1, 101):
sum += x
# sum = sum + x
print(sum)
sum = 0
練習(xí)2:打印所有的水仙花數(shù)
思路:一個(gè)一個(gè)的取出所有的三位數(shù),然后判斷是否是水仙花數(shù)
count = 0
for x in range(100, 1000):
if ((x//100)**3+(x//10%10)**3+(x%10)**3) == x:
print(x)
count += 1
print('個(gè)數(shù)',count)
練習(xí)3:統(tǒng)計(jì)100以內(nèi)個(gè)位上的數(shù)是5的個(gè)數(shù)
count = 0
for x in range(5, 100, 10):
print(x)
count += 1
print(count)
count = 0
for x in range(100):
if x%10 == 5:
count += 1
print('個(gè)位是5的個(gè)數(shù)',count)
2. while循環(huán)
1. 怎么使用while
- 語(yǔ)法
while 條件語(yǔ)句:
循環(huán)體
- 說明
while - 關(guān)鍵字,固定寫法
條件語(yǔ)句 - python支持的類型的數(shù)據(jù)色鸳、已經(jīng)聲明過的變量社痛、除了賦值以外的運(yùn)算表達(dá)式
: - 固定寫法
循環(huán)體 - 和while保持一個(gè)縮進(jìn)的一條或者多條語(yǔ)句(循環(huán)體會(huì)重復(fù)執(zhí)行)
- 執(zhí)行過程
先判斷條件語(yǔ)句是否為True,如果為True就執(zhí)行循環(huán)體命雀;
執(zhí)行完循環(huán)體再判斷條件語(yǔ)句是否為True蒜哀,為True繼續(xù)執(zhí)行循環(huán)體
以此類推,直到條件語(yǔ)句結(jié)果為False咏雌,循環(huán)就結(jié)束凡怎,直接執(zhí)行循環(huán)外的其他語(yǔ)句
(若是不小心寫了死循環(huán),ctrl+C 退出)
練習(xí)1:使用for循環(huán)計(jì)算1+2+3+...+100
i = 1
s = 0
while i < 101:
s += i
i += 1
print(s)
練習(xí)2:打印所有的水仙花數(shù)
思路:一個(gè)一個(gè)的取出所有的三位數(shù)赊抖,然后判斷是否是水仙花數(shù)
print('=====水仙花數(shù)')
num = 100
while num <= 999:
ge = num % 10
shi = num // 10 % 10
bai = num // 100
if ge**3 + shi**3 + bai**3 == num:
print(num)
num += 1
while循環(huán)控制數(shù)字的產(chǎn)生
print('=====')
num = 100
while num >= 0:
print(num)
num -=2
2. for循環(huán)和while循環(huán)(選擇問題)
(python里)for循環(huán)能做的事情while循環(huán)都可以做统倒;while循環(huán)能做的事情for循環(huán)不一定能做到
循環(huán)次數(shù)確定的時(shí)候用for循環(huán);循環(huán)次數(shù)不確定的時(shí)候用while循環(huán)氛雪、死循環(huán)
練習(xí):程序能夠不斷進(jìn)行輸入操作房匆,直到輸入的內(nèi)容是0為止
# 強(qiáng)調(diào),sublime沒辦法input輸入
num = int(input('請(qǐng)輸入一個(gè)數(shù)'))
while num != 0:
num = int(input('請(qǐng)輸入一個(gè)數(shù)'))
print('輸入了0报亩,程序結(jié)束')
3. breakContinueElse
1. continue
continue是循環(huán)體中的關(guān)鍵字浴鸿,用來結(jié)束當(dāng)次循環(huán)
當(dāng)執(zhí)行了循環(huán)體的時(shí)候遇到了continue,當(dāng)次循環(huán)結(jié)束弦追,循環(huán)體中continue后面的語(yǔ)句不再執(zhí)行岳链,直接進(jìn)入下次循環(huán)的判斷
sum1 = 0
for x in range(101):
if x%2 == 1:
continue
sum1 += x
print(sum1)
x = 1
while x<101:
if x%3 == 0:
x += 1
continue #若continue沒有前面的x += 1,程序會(huì)陷入死循環(huán)
print(x)
x += 1
2. break
break是循環(huán)體中的關(guān)鍵字劲件,用于直接結(jié)束整個(gè)循環(huán)
當(dāng)執(zhí)行循環(huán)體的時(shí)候遇到了break掸哑,整個(gè)循環(huán)直接結(jié)束,程序直接跳出循環(huán)零远,執(zhí)行循環(huán)后面的語(yǔ)句
while True:
循環(huán)操作
if 循環(huán)結(jié)束條件:
break
while True:
value = int(input('請(qǐng)輸入一個(gè)數(shù):'))
if value == '0':
break
3.else
- for的完整結(jié)構(gòu)
for 變量 in 序列:
循環(huán)體
else:
代碼塊
其他語(yǔ)句
- while的完整結(jié)構(gòu)
while 條件語(yǔ)句:
循環(huán)體
else:
代碼塊
其他語(yǔ)句
當(dāng)循環(huán)自然死亡(for中變量將序列中的數(shù)據(jù)取完了苗分;while后邊的條件語(yǔ)句的值為False),else后面的代碼塊會(huì)執(zhí)行牵辣;
如果循環(huán)是因?yàn)橛龅搅薭reak而結(jié)束的摔癣,else后面的代碼就不會(huì)執(zhí)行
應(yīng)用:可以通過else來檢測(cè)循環(huán)有沒有遇到break
print('=====')
for x in range(10):
print(x)
if x % 4 == 0:
break
else:
print('循環(huán)自然死亡')
print('其他語(yǔ)句')