重新編排,怎樣打開(kāi)思路編寫python if 語(yǔ)句
?if條件語(yǔ)句定義
if條件語(yǔ)句是python的流程控制語(yǔ)句,if 語(yǔ)句包含零個(gè)或多個(gè) elif 子句及可選的 else 子句,關(guān)鍵字elif 是else if 的縮寫,適用于避免過(guò)多的縮進(jìn),python里沒(méi)有else if 這種語(yǔ)法。if語(yǔ)句的核心作用是控制程序走向哪一個(gè)邏輯分支。
下面是if語(yǔ)句的偽代碼表示形式。
if test :suite(elif test :suite)*[else :suite]
if關(guān)鍵字后面必須緊跟一個(gè)表達(dá)式,這里用test表示
elif關(guān)鍵字后面也必須緊跟一個(gè)表達(dá)式
if , elif , else 各自產(chǎn)生一個(gè)邏輯分支,也就是suite部分
在偽代碼里,elif 子句我用小括號(hào)括起來(lái)并使用*來(lái)表示這部分可以有0或者多個(gè)
else語(yǔ)句用中括號(hào)括起來(lái),這表示可選,可以有0或者一個(gè)else
如何編寫if語(yǔ)句
if語(yǔ)句的語(yǔ)法是非常簡(jiǎn)單的,真正難的部分是if語(yǔ)句里的條件表達(dá)式。
2.1 邏輯分支只有一個(gè)的情況
使用input函數(shù)接收用戶輸入的整數(shù),如果用戶輸入的整數(shù)是偶數(shù),程序使用print語(yǔ)句輸出:你輸入的是偶數(shù)。
分析題目要求,只有一個(gè)邏輯分支需要處理:判斷用戶輸入是否為偶數(shù),如果是,輸出提示內(nèi)容
value = input("請(qǐng)輸入一個(gè)整數(shù):")value = int(value)if value % 2 == 0:print("你輸入的是偶數(shù)")
這是最最簡(jiǎn)單的if語(yǔ)句,你只需要處理一個(gè)邏輯分支。
2.2 邏輯分支有兩個(gè),且互斥
使用input函數(shù)接收用戶輸入的整數(shù),如果用戶輸入的整數(shù)是偶數(shù),程序使用print語(yǔ)句輸出:你輸入的是偶數(shù);如果用戶輸入的整數(shù)是奇數(shù),程序使用print語(yǔ)句輸出:你輸入的是奇數(shù)。
現(xiàn)在,邏輯分支有兩個(gè),且是互斥的,一個(gè)整數(shù),要么是偶數(shù),要么是整數(shù),對(duì)于這樣的情況,我們使用if ... else ... 這種句式就能夠處理。
value = input("請(qǐng)輸入一個(gè)整數(shù):")value = int(value)if value % 2 == 0:print("你輸入的是偶數(shù)")else:print("你輸入的是奇數(shù)數(shù)")
2.3 邏輯分支有兩個(gè)以上,且互斥
使用input函數(shù)輸入月份,不考慮閏年的情況下,輸出月份最大的天數(shù)。
1,3,5,7,8, 10, 12 這幾個(gè)月份的天數(shù)是31天,2月是28天,4,6,9,11 都是30天。經(jīng)過(guò)這番分析,if語(yǔ)句要處理3個(gè)邏輯分支。用戶輸入的月份只能是1到12中的某個(gè),因此這3個(gè)邏輯分支之間是互斥的,可以使用if ... elif ... else 這種句式來(lái)處理。
value = input("請(qǐng)輸入月份:")month = int(value)if month in (1, 3, 5, 7, 8, 10, 12):print(31)elif month == 2:print(28)else:print(30)
學(xué)習(xí)編程語(yǔ)言語(yǔ)法,是一件特簡(jiǎn)單的事情,因?yàn)椴淮嬖诶斫獠涣说那闆r。那為什么還寫不出代碼呢?
因?yàn)榇a是邏輯思考的一種表達(dá),核心是你對(duì)這個(gè)問(wèn)題的邏輯思考,對(duì)于if語(yǔ)句來(lái)說(shuō),你需要把問(wèn)題里的條件進(jìn)行分類,先整理出邏輯分支有多少個(gè),每一個(gè)邏輯分支里你需要做哪些事情,每一個(gè)邏輯分支都對(duì)應(yīng)著一個(gè)表達(dá)式,你還得有能力把這個(gè)表達(dá)式寫對(duì)。當(dāng)表達(dá)式的結(jié)果是True時(shí),程序自然的進(jìn)入到這個(gè)邏輯分支里執(zhí)行代碼。
?判斷3個(gè)數(shù)的大小
使用input函數(shù)接收用戶輸入的3個(gè)整數(shù),3個(gè)整數(shù)之間使用逗號(hào)分隔,程序從小到大輸出這3個(gè)數(shù)。
首先,你要考慮input函數(shù)返回的數(shù)據(jù)類型是字符串,程序得到一個(gè)字符串,字符串里是3個(gè)用逗號(hào)分隔的整數(shù),你最終要從小到大輸出這3個(gè)整數(shù),那么你實(shí)際處理過(guò)程中需要的是3個(gè)int,而非一個(gè)字符串,第一步就是將字符串拆解成3個(gè)int對(duì)象。
第二步,對(duì)這3個(gè)int對(duì)象,對(duì)他們的彼此間的大小進(jìn)行判斷,這其實(shí)沒(méi)什么神奇的辦法,就是使用比較運(yùn)算符進(jìn)行比較就好了。
value = input("請(qǐng)輸入3個(gè)整數(shù),使用逗號(hào)分隔:")lst = value.split(',')a = int(lst[0])b = int(lst[1])c = int(lst[2])if a > b:if c > a:print(b, a, c)elif c < b:print(c, b, a)else:print(b, c, a)else:if c > b:print(a, b, c)elif c < a:print(c, a, b)else:print(a, c, b)
這個(gè)題目,我建議你好好揣摩,它對(duì)于你理解if語(yǔ)句,鍛煉提升邏輯思考能力非常有幫助。
