首页 文章

当用户输入字符串而不是整数时,如何保护我的python代码?

提问于
浏览
2

当用户输入字符串而不是整数时,我想保护我创建的python计算器不会崩溃 .

当用户输入字符串而不是数字时,我尝试使用else语句打印“无效输入”(或其他我无法记住的内容) .

我还想知道是否有办法让用户执行另一个操作而不必重新启动应用程序 .

如果需要任何导入(如果可以),请列出它是否与cx_Freeze兼容 .

Source code:

def add (x, y):
    return(x + y)

def subtract(x, y):
    return(x - y)

def multiply(x, y):
    return(x * y)

def divide(x, y):
    return(x / y)

print("Select operation.")
print("1.Add")
print("2.Subtract")
print("3.Multiply")
print("4.Divide")

choice = input("Enter choice(1/2/3/4):")

num1 = int(input("Enter first number: "))
num2 = int(input("Enter second number: "))

if choice == '1':
   print(num1,"+",num2,"=", add(num1,num2))

elif choice == '2':
   print(num1,"-",num2,"=", subtract(num1,num2))

elif choice == '3':
   print(num1,"*",num2,"=", multiply(num1,num2))

elif choice == '4':
   print(num1,"/",num2,"=", divide(num1,num2))
else:
   print("Invalid input")

3 回答

  • 7

    你可以使用这样的东西来输入

    while True:
        try:
            num1 = int(input("Enter first number: "))
        except ValueError:
            continue
        else:
            break
    
  • 2

    看看我对您的代码所做的更改,如下所示:

    def add (x, y):
        return(x + y)
    
    def subtract(x, y):
        return(x - y)
    
    def multiply(x, y):
        return(x * y)
    
    def divide(x, y):
        return(x / y)
    
    def input_number(prompt):
        while True:
            try:
                return int(input(prompt))
            except ValueError:
                print("That was not a number")
    
    # Keep going around the loop until the user chooses 5 to quit
    
    while True:
        print
        print("Select operation.")
        print("1.Add")
        print("2.Subtract")
        print("3.Multiply")
        print("4.Divide")
        print("5.Quit")
    
        choice = input("Enter choice(1/2/3/4/5):")
    
        # Do they want to quit?
    
        if choice == 5:
            break
    
        num1 = input_number("Enter first number: ")
        num2 = input_number("Enter second number: ")
    
        if choice == 1:
            print(num1,"+",num2,"=", add(num1,num2))
    
        elif choice == 2:
            print(num1,"-",num2,"=", subtract(num1,num2))
    
        elif choice == 3:
            print(num1,"*",num2,"=", multiply(num1,num2))
    
        elif choice == 4:
            print(num1,"/",num2,"=", divide(num1,num2))
    
        else:
            print("%s - Invalid input" % choice)
    

    为了要求更多输入,您需要将提示包装在一个循环中 . 然后,您需要向用户添加一个选项以允许它们退出 .

    此外,您可以将数字提示移动到一个功能 . 如果用户输入字符,这将继续询问号码 .

  • 0

    此代码段应该有所帮助: -

    def is_string(test_data):
        if type(test_data) is str:
            return True
        else:
            return False
    

相关问题