防止input()。split()引发错误

时间:2019-07-27 17:37:02

标签: python-3.x input

我正在编写一个简单的计算器,让用户使用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.

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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")

您也可以将其包装在某种循环中,以再次询问值是否错误。

此方法列在python glossary下:

  

EAFP
  寻求宽恕比允许容易。