gpt4 book ai didi

python - 编写长if-else语句的pythonic方式是什么?

转载 作者:行者123 更新时间:2023-12-04 23:35:30 27 4
gpt4 key购买 nike

尽管我之前有过 Java 的经验,但我对 Python 还是很陌生。

我有以下代码将分数转换为间隔增量(作为我正在实现的间隔重复系统(SRS)程序的一部分)。这段代码看起来很丑,可读性也不是很好。通常我会在 Java 中使用 switch 语句。但是在python中我找不到等价物。因此我编写了这段代码来产生结果。但我想借此机会学习使用更多 Pythonic 方式实现相同输出的不同选项。我将不胜感激,即使它们是指向我可以阅读以改进此代码的资源的指针。

   # Convert score into an interval delta
if score == 0: # Perfect page
intervalDelta = +3
elif score == 1: # 1 Word Mistake
intervalDelta = +2
elif score <= 3: # 3 Word Mistakes
intervalDelta = +1
elif score == 4: # 1 Line Mistake
intervalDelta = 0
elif score <= 8: # 2 Line Mistakes
intervalDelta = -1
elif score <= 12: # 3 Line Mistakes
intervalDelta = -2
elif score <= 20: # 5 Line Mistakes
intervalDelta = -3
elif score <= 30: # 7.5 Line Mistakes - Half a page
intervalDelta = -5
else: # More than half a page
intervalDelta = -7

最佳答案

我没有找到长 if不可读的声明,尽管我会改为使用 <=为了一致性(因为 == 案例已经是使用 <= 的单一可能性)。如果我从头开始实现它,我可能会写如下内容只是为了让关联更加明显:

from math import inf


SCORE_DELTAS = (
(0, +3),
(1, +2),
(3, +1),
(4, +0),
(8, -1),
(12, -2),
(20, -3),
(30, -5),
(inf, -7),
)


def score_to_delta(score):
for bound, delta in SCORE_DELTAS:
if score <= bound:
return delta

关于python - 编写长if-else语句的pythonic方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59132385/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com