我正在编写一个简单的计算器,让用户使用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.
答案 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
寻求宽恕比允许容易。