Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何有效地使用异常?_Python_Python 3.x_Try Except - Fatal编程技术网

Python:如何有效地使用异常?

Python:如何有效地使用异常?,python,python-3.x,try-except,Python,Python 3.x,Try Except,我有一个包含170行代码和5个函数的程序(每个函数大约35行代码)。每个函数都有大约两次用户输入(正如您所知,这些函数用于平方数或乘法)。此外,输入变化很大,因此我不认为我可以创建一个类来检查是否有不好的用户输入(例如,在某些地方“c”应该有效,而在其他函数中则不应该有效,并且创建复杂的参数以查看“c”是否有效似乎是一种更低效的方法) 当我自己进行try和exceptions时,它会导致程序的大小加倍,因为每个函数中基本上只有一半的代码用于检查无效的用户输入。我知道,一旦我开始做更大的项目,用户

我有一个包含170行代码和5个函数的程序(每个函数大约35行代码)。每个函数都有大约两次用户输入(正如您所知,这些函数用于平方数或乘法)。此外,输入变化很大,因此我不认为我可以创建一个类来检查是否有不好的用户输入(例如,在某些地方“c”应该有效,而在其他函数中则不应该有效,并且创建复杂的参数以查看“c”是否有效似乎是一种更低效的方法)

当我自己进行
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是你的朋友:)