Python:如何有效地使用异常?
我有一个包含170行代码和5个函数的程序(每个函数大约35行代码)。每个函数都有大约两次用户输入(正如您所知,这些函数用于平方数或乘法)。此外,输入变化很大,因此我不认为我可以创建一个类来检查是否有不好的用户输入(例如,在某些地方“c”应该有效,而在其他函数中则不应该有效,并且创建复杂的参数以查看“c”是否有效似乎是一种更低效的方法) 当我自己进行Python:如何有效地使用异常?,python,python-3.x,try-except,Python,Python 3.x,Try Except,我有一个包含170行代码和5个函数的程序(每个函数大约35行代码)。每个函数都有大约两次用户输入(正如您所知,这些函数用于平方数或乘法)。此外,输入变化很大,因此我不认为我可以创建一个类来检查是否有不好的用户输入(例如,在某些地方“c”应该有效,而在其他函数中则不应该有效,并且创建复杂的参数以查看“c”是否有效似乎是一种更低效的方法) 当我自己进行try和exceptions时,它会导致程序的大小加倍,因为每个函数中基本上只有一半的代码用于检查无效的用户输入。我知道,一旦我开始做更大的项目,用户
try
和exception
s时,它会导致程序的大小加倍,因为每个函数中基本上只有一半的代码用于检查无效的用户输入。我知道,一旦我开始做更大的项目,用户的输入在大多数情况下都不会占到程序的一半,这样做是有意义的,但对于类似我的案例,难道没有更有效的方法吗
编辑:
def power():
select = input("Enter:\n'f' to find powers of numbers,\n'v' to view powers of "
"numbers (such as for study purposes),\n'x' to exit. "
"\nEnter what you would like to do: ").lower()
if select == "f":
while 1 == 1:
base = float(input("\nEnter base (enter '0' to exit): "))
if base == 0:
print()
break
print("\nPower:", pow(base, float(input("Enter exponent: "))))
if select == "v":
while 1 == 1:
until = int(input("\nEnter how many powers you would like to view "
"(enter '0' to exit): "))
if until == 0:
print()
break
exponent = float(input("Enter the exponent: "))
print("\n'^' indicates \"raised to the power of\"\n")
for number in range(until):
print(number, "^", exponent, ": ", pow(number, exponent),
sep = "")
if select == "x":
return
power()
异常通常不用于验证用户输入。您可以使用异常来捕获包抛出的致命错误。您应该创建一个接受所有其他函数都可以调用的userinput的函数,例如
def userinput(message)
,并返回None
,或指示用户输入错误的内容。@Aurora对于Python来说,这显然不是真的。在代码中使用异常作为控制流是一种完美的python方式,而且一直都是这样。您是否考虑过使用正则表达式来验证用户输入?如果您熟悉正则表达式,一个简单的re.match可以处理验证。@NeelKamath更像是检查用户键入的是否是数字\d是你的朋友:)