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!')