就像num1
仅会保留整数一样,我希望op
仅保留符号“ / *-+”,如果该人输入了其他内容,我可以抛出“无效”在输入了这4个符号以外的内容后立即输入“运算符”消息。
try:
num1 = float(input("enter a number"))
op = input(("enter a operator"))
num2 = float(input("enter another number"))
if op == "+":
print(num1 + num2)
elif op == "-":
print(num1 - num2)
elif op == "*":
print(num1 * num2)
elif op == "/":
print(num1 / num2)
except ValueError:
print("invalid operator")
except:
print("invalid")
答案 0 :(得分:1)
您可以进行while
循环,并在每次用户输入值时检查字符串。
while True:
user_input = input('Operation: ')
if len(user_input) == 1 and user_input in '+-*/': break
else: print('Invalid operation!')
答案 1 :(得分:0)
我采用了另一种方法,只允许用户在输入有效信息后继续操作。
import operator
def get_int_only(s: str):
while True:
in_str = input(s)
try:
out = int(in_str)
except ValueError:
continue
else:
return out
def get_str_in_list_only(s: str, ls: list):
while True:
in_str = input(s)
if in_str in ls:
return in_str
table = {"+": operator.add,
"-": operator.sub,
"*": operator.mul,
"/": operator.truediv,
"//": operator.floordiv,
"^": operator.pow
}
num1 = get_int_only("Number 1: ")
num2 = get_int_only("Number 2: ")
op = get_str_in_list_only("Operator: ", table.keys())
print(table.get(op)(num1, num2))
答案 2 :(得分:0)
您可以尝试使用所有运算符创建一个数组,例如:operators = ['+', '-', '*', '/']
,然后遍历每个项目并进行比较。
operators = ['+', '-', '*', '/']
for operator in operators:
if op == operator:
# Do something...
else:
print("Invalid operator")
break