Python 3.x 防止input().split()引发错误

Python 3.x 防止input().split()引发错误,python-3.x,input,Python 3.x,Input,我正在编写一个简单的计算器,让用户使用input().split()函数输入3个值的算术运算。我想知道,如果用户输入的值少于或多于3个,是否有办法防止程序抛出“没有足够的值来解包/太多的值来解包”错误,而是让我用“else:”条件或类似的方法来处理它,在屏幕上打印出更有用的内容?或者有没有一个完全可以替代的方法 num1, operator, num2 = input("enter operation: ").split() num1 = int(num1) num2 = int(num2)

我正在编写一个简单的计算器,让用户使用input().split()函数输入3个值的算术运算。我想知道,如果用户输入的值少于或多于3个,是否有办法防止程序抛出“没有足够的值来解包/太多的值来解包”错误,而是让我用“else:”条件或类似的方法来处理它,在屏幕上打印出更有用的内容?或者有没有一个完全可以替代的方法

num1, operator, num2 = input("enter operation: ").split()

num1 = int(num1)
num2 = int(num2)

if operator == "+":
  print("{} + {} = {}".format(num1, num2, num1+num2))

# etc.

不要解压缩返回值。而是返回单个对象,然后检查对象的长度。像这样:

obj = input("enter operation: ").split()
if len(obj) == 3:
    num1, operator, num2 = obj
    ...
else:
    ...

不要解压缩返回值。而是返回单个对象,然后检查对象的长度。像这样:

obj = input("enter operation: ").split()
if len(obj) == 3:
    num1, operator, num2 = obj
    ...
else:
    ...

Python中的一种典型方法是尝试一个操作,如果有错误,则捕获错误。在这里,您将捕获
ValueError
,并相应地采取行动:

try:
    num1, operator, num2 = input("enter operation: ").split()

    num1 = int(num1)
    num2 = int(num2)

    if operator == "+":
        print("{} + {} = {}".format(num1, num2, num1+num2))

except ValueError:
    print("you didn't enter enough values")
您还可以将其封装在某种循环中,再次询问该值是否为坏值

该方法列在下表中:

EAFP
请求原谅比允许更容易


Python中的一种典型方法是尝试一个操作,如果有错误,则捕获错误。在这里,您将捕获
ValueError
,并相应地采取行动:

try:
    num1, operator, num2 = input("enter operation: ").split()

    num1 = int(num1)
    num2 = int(num2)

    if operator == "+":
        print("{} + {} = {}".format(num1, num2, num1+num2))

except ValueError:
    print("you didn't enter enough values")
您还可以将其封装在某种循环中,再次询问该值是否为坏值

该方法列在下表中:

EAFP
请求原谅比允许更容易