python的選擇結構

dunne21發表於2021-09-09

python的邏輯運算子:and(邏輯與),or(邏輯或),not(邏輯非).
和其它語言與[&&],或[||],非[!]不一樣,感覺有些怪。

>>> not 0
True
>>> not ''
True
>>> not ' '
False
>>> 1+True
2

判斷閏年

(year%4==0 and year%100!=0) or  year%400==0

判斷字母

(ch>='a' and ch='a' and ch

邏輯運算具有短路的性質,可以進行一些操作,在shell命令中,或者替代一些if語句

>>> 2>3 and 8>6
False
>>> 22 or 1+1!=2
22
>>> 1+1!=2
False
>>> 22 and '333'
'333'

測試運算
in運算子用於在指定的序列中查詢某一值,存在返回True,否則False.

>>> 6 in [1,2,6]
True
>>> a=(1,2,3)
>>> 1 in a
True
>>> 2 not in a
False

身份測試
身份測試用於測試二個變數是否指向同一個物件。

>>> a=68
>>> b=68
>>> c=66
>>> a is b
True
>>> a is not c
True

選擇結構

單分直格式:

if 條件表示式:
    語句塊。

雙分支結構
格式:

if 條件表示式:
    語句塊1
else:
    語句塊2
if (1+1==2):
    print('yes')
yes

條件表示式後面的語句塊必須向右縮排,預設4個空格,類似其它語言的 { },其它比如for語句,def等都需要縮排,注意一下就行了。

a,b=eval(input("put into a,b"))
if(a>b):
    max=a
else:
    max=b
print('max={0}'.format(max))
put into a,b6,8
max=8

多分支語句

if 條件表示式1:
    語句塊1
elif 條件表示式2:
    語句塊2
elif 條件表示式3:
   語句塊3
[else:
    語句塊n]

看一個相關的程式碼:

a,b,c=eval(input("input a,b,c:"))
if a>b:
    max=a
    if max
input a,b,c:55,88,+55
max= 88

條件運算子
python的條件運算子相當於一個三元運算子,有3個分量。
形式: 表示式1 if 條件表示式 else 表示式2

規則,先求條件表示式的值,如果其值為true,則求表示式1,並以表示式1的值為結果,如果條件表示式的值為flase,則求表示式2,並以表示式2的值為條件運算子的結果。

x,y=eval(input("x,y:"))
max=x if x>y else y
print("max=",max)
x,y:66,88
max= 88

其它語言,比如c,是 max=a>b?a:b這樣,相當於簡寫了if else,但是其可讀性差,不好理解。

求3個數最大值

x,y,z=eval(input("x,y,z:"))
max1= x if x>y else y
max= max1 if max1>z else z
print("max=",max)  
x,y,z:231,-88,999
max= 999

這樣或許,讀起來還行。

x,y,z=eval(input("x,y,z:"))
max= x if x>y else y if (x if x>y else y)>z else z
print("max=",max)
x,y,z:34,68,22
max= 68

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1600/viewspace-2800219/,如需轉載,請註明出處,否則將追究法律責任。

相關文章