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):
这将使 raise
和 if
语句变得无用。
代码行越少并不总是越好!
但是,您可以在此处改进一些地方。例如,对于您的示例中有限数量的有效输入值,错误处理过于复杂:您检查由于输入不是数字而导致的异常,但您还检查该数字是否是两个允许数字之一。相反,您也可以只检查输入是否是两个有效 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.
我的代码块中有很多异常语句,我需要将代码缩短到 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):
这将使 raise
和 if
语句变得无用。
代码行越少并不总是越好!
但是,您可以在此处改进一些地方。例如,对于您的示例中有限数量的有效输入值,错误处理过于复杂:您检查由于输入不是数字而导致的异常,但您还检查该数字是否是两个允许数字之一。相反,您也可以只检查输入是否是两个有效 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.