Python 少行异常处理

Python exception handling in less lines

我的代码块中有很多异常语句,我需要将代码缩短到 100 行。有没有更好的方法用更少的行来编写下面的异常代码之一?

while True: 
    try:
        difficulty = int(input("Choose level 1: Easy  2: Difficult): "))
        if (difficulty!=1 and difficulty!=2):
            raise ValueError # this will send it to the print message
        break
    except ValueError:
        print("Please enter the right value")

[...] with less lines to write one of my exception codes below?

不完全是...但是如果您愿意,可以将其缩短一行:

while (difficulty!=1 and difficulty!=2):

这将使 raiseif 语句变得无用。

代码行越少并不总是越好!

但是,您可以在此处改进一些地方。例如,对于您的示例中有限数量的有效输入值,错误处理过于复杂:您检查由于输入不是数字而导致的异常,但您还检查该数字是否是两个允许数字之一。相反,您也可以只检查输入是否是两个有效 strings 之一。如果是,您肯定知道可以毫无例外地完成到 int 的转换,因此您不需要 try-catch 块。

对于相同的功能,我能想到的最小代码是 5 行代码:

response = None
while response not in ['1', '2']:
    response = input("Choose level 1: Easy  2: Difficult): ")
    if response not in ['1', '2']: print("Please enter the right value")
difficulty = int(response)

但是,优化可能在全局范围内更有效(即,如果您看得更远一点,那么只有这段代码)。例如,根据您要对变量 difficulty 执行的操作,可能根本不需要转换为 int。在那种情况下,您也可以删除最后一行。

但正如我之前所说,行数越少并不一定会使代码越好。对于可维护性,readability counts.