我为自己缺乏知识而道歉。我刚刚开始学习python,我使用youtube视频创建了一个基本的计算器。它是这样的:
user_continue = True
while user_continue:
validInput = False
while not validInput:
# Get user input
try:
num1 = int(input("What is number 1?"))
num2 = int(input("What is number 2?"))
operation = int(input("What do you want to do with these? 1. add, 2. subtract, 3. multiply 4. divide. Enter number:"))
validInput = True
except:
print("Invalid Input. Please try again.")
if(operation == 1):
print("Adding...")
print(add(num1, num2))
elif(operation == 2):
print("Subtracting...")
print(sub(num1, num2))
elif(operation == 3):
print("Multiplying...")
print(mul(num1, num2))
elif(operation == 4):
print("Dividing...")
print(div(num1, num2))
else:
print("I don't understand. Please try again.")
user_yn = input('Would you like to do another calculation? ("y" for yes or any other value to exit.)')
if(user_yn == 'y'):
continue
else:
break
我想要做的是,如果用户输入的数字不同于1,2,3或4,我希望程序为“操作”请求另一个输入。
我再次为任何错误道歉,我刚刚开始。
答案 0 :(得分:1)
这是一个非常简单的修改。在您的代码中:
operation = int(input("What do you want to do with these? 1. add, 2. subtract, 3. multiply 4. divide. Enter number:"))
validInput = True
在将validInput
标记为True
之前,您应该只检查输入是否有效。要继续使用try-except
块,可以使用如下断言来检查:
operation = ...
assert operation in (1,2,3,4)
validInput = True
如果operation
不在(1,2,3,4)
,则代码会抛出AssertionError
块将会捕获的try-except
。
在一个不相关的说明中,您可能不应该使用except
条款来捕获您在此处所做的所有错误。实际上,此块也会捕获KeyboardInterrupt
错误,这意味着您将无法退出程序!最好使用except ValueError
和except AssertionError
答案 1 :(得分:0)
功能是你的朋友。这个只返回1-4,在内部循环,直到输入正确。 break
退出无限while
循环。如果未输入整数,则抛出ValueError
并忽略except
子句。任何无效的内容都会打印出来"输入无效"并继续循环。
def get_operation():
while True:
try:
op = int(input('Enter 1-add, 2-subtract, 3-muliply, 4-divide: '))
if 1 <= op <= 4:
break
except ValueError:
pass
print('Invalid input')
return op
operation = get_operation()