Task05&扩展01学习笔记

Task05:条件Conditionals

if 语句

  • 通过缩进上下对齐判断条件满足要执行的内容
if 条件:
  print()
  • 例:
  1. f(0) --> ABCD
  2. f(1) --> AD
def f(x):
  print("A", end="")
  if x == 0:
    print("B”, end="")
    print("C", end="")
  print("D")

if-else 语句

  • 条件成立执行if下面的代码,条件不成立执行else下面的代码
  • 例:
  1. float(9) --> hello wahoo! goodbye
  2. 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

  • 否定条件(带有 else 部分)
  1. 可能不清晰的:
b=True
if not b:
  print('no')
else:
  print('yes')
  1. 清晰的:
b = True
if b:
  print('yes')
else:
  print('no')
  • 空白的 if 部分
  1. 不清晰的:
b = False
if b:
  pass
else:
  print('no')
  1. 清晰的:
b=False
if not b:
  print('no')
  • 用嵌套的 if 而不是 and 来判断
  1. 混乱的:
b1 = True
b2 = True
if bl:
  if b2:
    print('both!')
  1. 清晰的:
b1 = True
b2 = True
if bl and b2:
  print('both!')
  • 使用 if 而不是 else 来控制
  1. 可能会引入bug:
b = True
if b:
  print('yes')
if not b:
  print('no')
  1. 更好的做法:
b = True
if b:
  print('yes')
else:
  print('no')
  • 使用一些 trick(如用算数逻辑来代替布尔逻辑)
  1. 不清晰的:
x= 42 
y=((x>θ) and 99)
  1. 清晰的:
x= 42
if x>0:
  y = 99
  • 例1:
  1. 又混乱又有产生 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')
  1. 更好的做法:
x= 10
if x< 5:
  print('smal1')
elif x< 10:
  print('medium')
elif x< 15:
  print('large')
else:
  print('extra large')
  • 例2:
  1. 又混乱又有产生 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!')
  1. 更好的做法:
c='a'
if(c>='A')and(c<='Z'):
  print('Uppercase!')
elif(c >= 'a')and(c<='z'):
  print('lowercase!')
else:
  print('not a letter!')
posted @ 2024-12-04 22:46  Uu_up  阅读(4)  评论(0编辑  收藏  举报