在Python中处理无效的数学运算

79 阅读2分钟

一位Python初学者遇到了这样的问题:当用户输入一个无效的数学运算时,程序会通知用户,但是随后会退出。该问题出现在代码的第33行,用户想要的是,当输入错误时,可以让用户重新输入一个数学运算。

完整的Python代码如下:

#This python program calculates the sum, difference, product, or quotient of two numbers defined by users.

#Define add function and return the result of num1 + num2
def add(num1, num2):
    return num1 + num2

#Define subract function and return the result of subtracting num1 - num2
def sub(num1, num2):
    return num1 - num2

#Define multiplication function and return the result of multiplying num1 * num2
def mul(num1, num2):
    return num1 * num2

#Define division function and return the result of dividing num1 / num2
def div(num1, num2):
    return num1 / num2


#Define main purpose/function of the program
def main():

    #Ask what math operation to perform
    operation = input("What do you want to do? (+, -, *, /): ")

    #If the operation is not +, -, *, or /, invalid operation
    if(operation != '+' and operation != '-' and operation != '*' and operation != '/'):
        print("You must enter a valid operation!")

    #If valid, perform specified operation
    else:
        var1 = int(input("Enter num1: "))
        var2 = int(input("Enter num2: "))
        if(operation == '+'):
            print(add(var1, var2))
        elif(operation == '/'):
            print(div(var1, var2))
        elif(operation == '-'):
            print(sub(var1, var2))
        else:
            print(mul(var1, var2))

main()

2、解决方案

要解决这个问题,可以简单地让用户重新输入运算符。修改后的代码为:

#This python program calculates the sum, difference, product, or quotient of two numbers defined by users.

#Define add function and return the result of num1 + num2
def add(num1, num2):
    return num1 + num2

#Define subract function and return the result of subtracting num1 - num2
def sub(num1, num2):
    return num1 - num2

#Define multiplication function and return the result of multiplying num1 * num2
def mul(num1, num2):
    return num1 * num2

#Define division function and return the result of dividing num1 / num2
def div(num1, num2):
    return num1 / num2


#Define main purpose/function of the program
def main():

    #Ask what math operation to perform
    operation = input("What do you want to do? (+, -, *, /): ")

    #If the operation is not +, -, *, or /, invalid operation
    while (operation != '+' and operation != '-' and operation != '*' and operation != '/'):
        print("You must enter a valid operation!")
        operation = input("What do you want to do? (+, -, *, /): ")

    var1 = int(input("Enter num1: "))
    var2 = int(input("Enter num2: "))
    if(operation == '+'):
        print(add(var1, var2))
    elif(operation == '/'):
        print(div(var1, var2))
    elif(operation == '-'):
        print(sub(var1, var2))
    else:
        print(mul(var1, var2))

main()

修改后的代码在用户输入无效的运算符时会不停重复要求其输入正确的运算符,直到用户输入了正确的运算符。