if (80 <= m <= 100):
g = "A"
elif (70 <= m < 80):
g = "B"
elif (60 <= m < 70):
g = "C"
elif (50 <= m < 60):
g = "D"
elif (m < 50):
g = "U"
Run Code Online (Sandbox Code Playgroud)
这基本上是一个等级测量代码,它接收值m,意思是标记,并获得等级g.为了同一目的,是否有更短的不一定更多的pythonic方式?
提前致谢.
首先,您可以通过删除其中一个边界来简化:
if m >= 80:
g = "A"
elif m >= 70:
g = "B"
elif m >= 60:
g = "C"
elif m >= 50:
g = "D"
else: # default catch-all
g = "U"
Run Code Online (Sandbox Code Playgroud)
其次,您可以通过循环捕获进程的重复性(默认情况下为for-else构造提供选项):
# iterator: ('A', 80) -> ('B', 70) -> ...
for grade, score in zip('ABCD', (80, 70, 60, 50)):
if m >= score:
g = grade
break
else: # executed if for-loop isn't 'break'-ed out of
g = 'U'
Run Code Online (Sandbox Code Playgroud)