条件语句(聪明办法学python)
条件语句
if 语句
实现一个函数,返回输入数字的绝对值,abs( ):
[^共7个,if语句4个,if-else语句2个,if-else 推导式1个]:
-
常规
def abs1(n): if n < 0: n = -n return n -
写在一行(除非有特殊原因,否则强烈建议不要这样写)
def abs1(n): if n < 0: n = -n return n -
多个返回语句
def abs3(n): if n < 0: return -n return n -
使用布尔表达式(不要这样写!)
def abs4(n): return (n < 0)*(-n) + (n>=0)*(n) # 这家伙长得太奇怪了
if-else语句
x=input("x=")
x=float(x)
print("hallo")
if x<10:
print("wahoo")
else :
print("ruh roh")
print("goodbye")
重新设计abs( ):
-
def abs5(n): if n >= 0: return n else: return -n -
def abs6(n): if n >= 0: sign = +1 else: sign = -1 return sign * n
if-elif-else语句
def getGrade(score):
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
elif score >= 60:
grade = "D"
else:
grade = "F"
return grade
if-else推导式
def abs7(n):
return n if (n >= 0) else -n
print("abs7(5) =", abs7(5), "and abs7(-5) =", abs7(-5))
# abs7(5) = 5 and abs7(-5) = 5
match-case 语句
[^match 后的对象会依次与 case 后的内容进行匹配,如果匹配成功,则执行匹配到的表达式,否则直接跳过,_ 可以匹配一切。]:
match subject:
case <pattern_1>:
<action_1>
case <pattern_2>:
<action_2>
case <pattern_3>:
<action_3>
case _: #类似于 C 和 Java 中的 default:,当其他 case 都无法匹配时,匹配这条,保证永远会匹配成功。
<action_wildcard>
例:
-
def http_error(status): match status: case 400: return "Bad request" case 404: return "Not found" case 418: return "I'm a teapot" case _: return "Something's wrong with the internet" mystatus=404 print(http_error(404)) # 输出:Not found ''' 如果不返回(把return换成print)结果会是: Not found I'm a teapot Something's wrong with the internet ''' -
一个 case 也可以设置多个匹配条件,条件使用 | 隔开,例如:
match status: case 401|403|404: return "Not allowed"
清晰的代码风格
-
否定条件(带有
else部分)# 可能不清晰的: b = True if not b: print('no') else: print('yes')# 清晰的: b = True if b: print('yes') else: print('no') -
空白的
if部分,不推荐# 不清晰的: b = False if b: pass else: print('no')# 清晰的: b = False if not b: print('no') -
用
and而不是嵌套的if来判断# 混乱的: b1 = True b2 = True if b1: if b2: print('both!')# 清晰的: b1 = True b2 = True if b1 and b2: print('both!') -
使用
else而不是if来控制# 可能会引入 bug: b = True if b: print('yes') if not b: print('no')# 更好的做法: b = True if b: print('yes') else: print('no')

浙公网安备 33010602011771号