Task05:条件Conditionals
if 语句
if 条件:print()
- f(0) --> ABCD
- f(1) --> AD
def f(x):print("A", end="")if x == 0:print("B”, end="")print("C", end="")print("D")
if-else 语句
- 条件成立执行if下面的代码,条件不成立执行else下面的代码
- 例:
- float(9) --> hello wahoo! goodbye
- float(11) --> hello ruh roh goodbye
x= input("x=")
x= float(x)
print("hello")
if x< 10:print("wahoo!")
else:print("ruh roh")
print("goodbye")
if-elif-else 语句
- if条件满足时执行if下面的代码,不满足时看是否满足elif的条件,满足则执行elif下的代码,不满足则执行else下面的代码
- 例:
print("hello")
if x< 10:print("wahoo!")
elif x<= 99:print("meh")
else:print("ruh roh")
print("goodbye")
match ... case 语句
- Python 3.10增加了 match ... case 的条件判断,不需要再使用一连串的if-else 来判断了。
- match后的对象会依次与case后的内容进行匹配,如果匹配成功,则执行匹配到的表达式,否则直接跳过,_可以匹配一切。
- 语法格式如下:
match subject:case <pattern_1>:<action_1>case <pattern_2>:<action_2>case <pattern_3>:<action_3>case _:<action_wildcard>
- case_:类似于C语言中的 defau1t:,当其他 case 都无法匹配时,匹配这条_保证永远会匹配成功。
扩展01:代码风格/Python规范Style
- 可能不清晰的:
b=True
if not b:print('no')
else:print('yes')
- 清晰的:
b = True
if b:print('yes')
else:print('no')
- 不清晰的:
b = False
if b:pass
else:print('no')
- 清晰的:
b=False
if not b:print('no')
- 混乱的:
b1 = True
b2 = True
if bl:if b2:print('both!')
- 清晰的:
b1 = True
b2 = True
if bl and b2:print('both!')
- 可能会引入bug:
b = True
if b:print('yes')
if not b:print('no')
- 更好的做法:
b = True
if b:print('yes')
else:print('no')
- 使用一些 trick(如用算数逻辑来代替布尔逻辑)
- 不清晰的:
x= 42
y=((x>θ) and 99)
- 清晰的:
x= 42
if x>0:y = 99
- 又混乱又有产生 bug 的风险:
x=10
if x< 5:print('small')
if(x>= 5)and(x< 10):print('medium')
if(x>= 10)and(x< 15):print('large')
if x >= 15:print('extra large')
- 更好的做法:
x= 10
if x< 5:print('smal1')
elif x< 10:print('medium')
elif x< 15:print('large')
else:print('extra large')
- 又混乱又有产生 bug 的风险:
c ='a'
if(c >= 'A')and(c <= 'Z'):print('Uppercase! )
if(c >= 'a')and(c <= 'z'):print('lowercase!')
if(c<'A')or((c>'Z')and(c<'a')or(c <= 'z'):print('not a letter!')
- 更好的做法:
c='a'
if(c>='A')and(c<='Z'):print('Uppercase!')
elif(c >= 'a')and(c<='z'):print('lowercase!')
else:print('not a letter!')