算符與流程控制:if條件判斷)
Python運(yùn)算符與流程控制if條件判斷上一篇我們學(xué)習(xí)了變量和數(shù)據(jù)類型本篇將學(xué)習(xí)運(yùn)算符和if條件判斷讓程序具備「思考」和「決策」的能力。一、Python運(yùn)算符1. 算術(shù)運(yùn)算符運(yùn)算符描述示例結(jié)果加法5 38-減法5 - 32*乘法5 * 315/除法結(jié)果為float5 / 22.5//整除向下取整5 // 22%取余5 % 21**冪運(yùn)算2 ** 38print(10/3)# 3.3333333333333335print(10//3)# 3print(10%3)# 1print(2**10)# 1024# 負(fù)數(shù)整除注意向下取整不是向零取整print(-5//2)# -3不是-22. 比較運(yùn)算符運(yùn)算符描述示例結(jié)果等于5 5True!不等于5 ! 3True大于5 3True小于5 3False大于等于5 5True小于等于5 3Falsea,b10,20print(ab)# Falseprint(a!b)# Trueprint(ab)# False# 字符串也可以比較按ASCII碼print(abcabd)# Trueprint(Aa)# True大寫字母ASCII碼更小3. 邏輯運(yùn)算符運(yùn)算符描述示例結(jié)果and與兩邊都為True才為TrueTrue and FalseFalseor或一邊為True就為TrueTrue or FalseTruenot非取反not TrueFalseage20has_ticketTrue# 同時(shí)滿足兩個(gè)條件ifage18andhas_ticket:print(可以入場(chǎng))# 滿足任一條件is_weekendTrueis_holidayFalseifis_weekendoris_holiday:print(今天休息)# 取反is_rainingFalseifnotis_raining:print(可以出門)短路求值# and左邊為False時(shí)右邊不執(zhí)行deffunc():print(函數(shù)被調(diào)用了)returnTrueresultFalseandfunc()# func不會(huì)被調(diào)用print(result)# False# or左邊為True時(shí)右邊不執(zhí)行resultTrueorfunc()# func不會(huì)被調(diào)用print(result)# True4. 賦值運(yùn)算符運(yùn)算符描述示例等價(jià)于簡(jiǎn)單賦值a 5-加后賦值a 3a a 3-減后賦值a - 3a a - 3*乘后賦值a * 3a a * 3/除后賦值a / 3a a / 3//整除后賦值a // 3a a // 3%取余后賦值a % 3a a % 3**冪后賦值a ** 3a a ** 3count0count1# 等價(jià)于 count count 1count*2# 等價(jià)于 count count * 2print(count)# 25. 成員運(yùn)算符與身份運(yùn)算符# 成員運(yùn)算符in / not infruits[蘋果,香蕉,橙子]print(蘋果infruits)# Trueprint(葡萄notinfruits)# True# 身份運(yùn)算符is / is not比較內(nèi)存地址a[1,2,3]ba c[1,2,3]print(aisb)# True同一個(gè)對(duì)象print(aisc)# False值相同但不是同一個(gè)對(duì)象print(ac)# True值相等??比較的是值是否相等is比較的是是否為同一個(gè)對(duì)象內(nèi)存地址相同。6. 運(yùn)算符優(yōu)先級(jí)從高到低**冪運(yùn)算x, -x, ~x正負(fù)號(hào)、按位取反*, /, //, %, -比較運(yùn)算符, !, , , , notandor建議不確定優(yōu)先級(jí)時(shí)用括號(hào)()明確表達(dá)代碼更清晰。二、if條件判斷1. 基本if語(yǔ)句age18ifage18:print(你已經(jīng)成年了)?? Python用縮進(jìn)通常4個(gè)空格表示代碼塊不用大括號(hào){}。2. if-else語(yǔ)句age16ifage18:print(你已經(jīng)成年了)else:print(你還未成年)3. if-elif-else語(yǔ)句多分支score85ifscore90:gradeAelifscore80:gradeBelifscore70:gradeCelifscore60:gradeDelse:gradeFprint(f你的等級(jí)是:{grade})# B?? elif是else if的縮寫條件從上到下判斷滿足一個(gè)就不再判斷后面的。4. 嵌套if語(yǔ)句age20has_idTrueifage18:ifhas_id:print(可以進(jìn)入網(wǎng)吧)else:print(請(qǐng)出示身份證)else:print(未成年人禁止進(jìn)入)5. 三元表達(dá)式簡(jiǎn)潔寫法# 普通寫法ifage18:status成年else:status未成年# 三元表達(dá)式status成年ifage18else未成年print(status)三、實(shí)戰(zhàn)簡(jiǎn)易計(jì)算器print( 簡(jiǎn)易計(jì)算器 )num1float(input(請(qǐng)輸入第一個(gè)數(shù): ))opinput(請(qǐng)輸入運(yùn)算符( - * /): )num2float(input(請(qǐng)輸入第二個(gè)數(shù): ))ifop:resultnum1num2elifop-:resultnum1-num2elifop*:resultnum1*num2elifop/:ifnum20:print(錯(cuò)誤除數(shù)不能為0)exit()resultnum1/num2else:print(錯(cuò)誤不支持的運(yùn)算符)exit()print(f結(jié)果:{num1}{op}{num2}{result})運(yùn)行示例 簡(jiǎn)易計(jì)算器 請(qǐng)輸入第一個(gè)數(shù): 10 請(qǐng)輸入運(yùn)算符( - * /): * 請(qǐng)輸入第二個(gè)數(shù): 5 結(jié)果: 10.0 * 5.0 50.0四、常見坑點(diǎn)縮進(jìn)錯(cuò)誤Python嚴(yán)格依賴縮進(jìn)同一代碼塊縮進(jìn)必須一致混淆和是賦值是比較if后忘記冒號(hào)if condition:末尾必須有冒號(hào)浮點(diǎn)數(shù)比較浮點(diǎn)數(shù)有精度問題不要直接用比較print(0.10.20.3)# False# 正確做法比較差值是否足夠小print(abs(0.10.2-0.3)1e-9)# True空值判斷用if x is None而不是if x None五、課后練習(xí)編寫程序輸入一個(gè)年份判斷是否為閏年能被4整除但不能被100整除或能被400整除編寫程序輸入三個(gè)數(shù)按從小到大的順序輸出編寫程序輸入一個(gè)月份輸出該月份有多少天考慮閏年2月六、小結(jié)本篇學(xué)習(xí)了Python的各類運(yùn)算符算術(shù)、比較、邏輯、賦值、成員、身份和if條件判斷的三種形式。運(yùn)算符是程序的基礎(chǔ)if語(yǔ)句讓程序具備了決策能力。下一篇我們將學(xué)習(xí)循環(huán)結(jié)構(gòu)讓程序能重復(fù)執(zhí)行。下一篇預(yù)告《Python循環(huán)結(jié)構(gòu)for與while的用法及區(qū)別》本專欄持續(xù)更新中歡迎點(diǎn)贊、收藏、關(guān)注三連支持