[英]How to validate operators with integers for a calculator program?
我正在嘗試創建一個程序,該程序允許用戶輸入4個運算符之一(加,減,乘或除),然后輸入兩個數字。 然后,程序將計算操作。 我似乎無法驗證輸出的運算符。 我正在嘗試使用if
... else
語句,但是沒有運氣。 這里有指針嗎?
operator = ""
numbers = []
inputNumbers = ["first number", "second number"]
def userInput():
try:
operator = input("Please choose a valid operation (+, -, *, /): ")
except:
print("Please enter a valid operator.")
for inputNumber in inputNumbers:
user_num_input = -1
while user_num_input < 0:
try:
user_num_input = int(input("Type in {}: ".format(inputNumber)))
except:
user_num_input = -1
print("Please enter a whole number.")
if user_num_input > -1:
numbers.append(user_num_input)
userInput()
def addNumbers():
add = numbers[0] + numbers[1]
return add(numbers)
def subNumbers():
sub = numbers[0] - numbers[1]
return sub(numbers)
def mulNumbers():
mul = numbers[0] * numbers[1]
return mul(numbers)
def divNumbers():
div = numbers[0] / numbers[1]
return div(numbers)
def userOutput():
if operator == "+":
print(numbers[0], "+", numbers[1], "=", addNumbers())
elif operator == "-":
print(numbers[0], "-", numbers[1], "=", subNumbers())
elif operator == "*":
print(numbers[0], "*", numbers[1], "=", mulNumbers())
elif operator == "/":
print(numbers[0], "/", numbers[1], "=", divNumbers())
userOutput()
您應該檢查用戶是否輸入了有效的操作,請try
except
此處except
操作,因為input()
不會引發任何錯誤。 另外,這是從用戶那里獲得2個有效整數並計算最終方程式的更優雅的方法(使用eval()
)
inputNumbers = ["first number", "second number"]
operations = ['+', '-', '*', '/']
numbers = []
operator = ''
while not operator:
operator = input('Please choose a valid operation (+, -, *, /): ')
if operator not in operations:
print("Please enter a valid operator.")
while len(numbers) < len(inputNumbers):
try:
numbers.append(int(input("Type in {}: ".format(inputNumbers[len(numbers)]))))
except:
print("Please enter a whole number.")
result = eval(operator.join(map(str, numbers)))
print('{} {} {} = {}'.format(numbers[0], operator, numbers[1], result))
輸出:
Please choose a valid operation (+, -, *, /): addition
Please enter a valid operator.
Please choose a valid operation (+, -, *, /): /
Type in first number: 123.321
Please enter a whole number.
Type in first number: 10
Type in second number: hundred
Please enter a whole number.
Type in second number: 100
10 / 100 = 0.1
您應該使用python的內置operator
模塊 。 然后,您可以使用這樣的字典:
import operator
operator_dict = {"+": operator.add,
"-": operator.sub,
"*": operator.mul,
"/": operator.truediv}
user_input = input("Please choose a valid operation (+, -, *, /): ")
operator_func = operator_dict.get(user_input, None)
# if operator_func is not None then the input was correct!
if operator_func is not None:
... get the numbers ...
print("{}{}{}={}".format(num1, user_input, num2, operator_func(num1, num2))
這樣,您無需自己實現簡單的操作員功能。
最簡單,最干凈的方法是在Python中使用operator
模塊,因此userOutput
方法將如下所示。 但是,您應該對代碼進行一些更改,將小時operator
變量重命名為op
,因為它會與python模塊名稱沖突,並更新該operator
作為userInput()
的返回值:
import operator
op = ""
numbers = []
inputNumbers = ["first number", "second number"]
operators = {
'+' : operator.add,
'-' : operator.sub,
'*' : operator.mul,
'/' : operator.truediv,
'%' : operator.mod,
'^' : operator.xor,
}
def userInput(op):
while not op:
op = input("Please choose a valid operation (+, -, *, /): ")
if op not in operators:
print("Please enter a valid operator.")
op = ""
for inputNumber in inputNumbers:
user_num_input = -1
while user_num_input < 0:
try:
user_num_input = int(input("Type in {}: ".format(inputNumber)))
except:
user_num_input = -1
print("Please enter a whole number.")
if user_num_input > -1:
numbers.append(user_num_input)
return op
def userOutput(op, operators):
result = operators[op](numbers[0], numbers[1])
print("{} {} {} = {}". format(numbers[0], op, numbers[1], result))
op = userInput(op)
userOutput(op, operators)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.