猿问

如何使用整数验证计算器程序的运算符?

我正在尝试创建一个程序,允许用户输入 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()


HUH函数
浏览 163回答 3
3回答

慕工程0101907

您应该检查用户是否输入了有效的操作,try except因为input()不会抛出任何错误,所以在这里不起作用。还有更优雅的方法可以从用户那里获取 2 个有效整数,并计算最终方程(使用eval())inputNumbers = ["first number", "second number"]operations = ['+', '-', '*', '/']numbers = []operator = ''while not operator:&nbsp; &nbsp; operator = input('Please choose a valid operation (+, -, *, /): ')&nbsp; &nbsp; if operator not in operations:&nbsp; &nbsp; &nbsp; &nbsp; print("Please enter a valid operator.")while len(numbers) < len(inputNumbers):&nbsp; &nbsp; try:&nbsp; &nbsp; &nbsp; &nbsp; numbers.append(int(input("Type in {}: ".format(inputNumbers[len(numbers)]))))&nbsp; &nbsp; except:&nbsp; &nbsp; &nbsp; &nbsp; 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 (+, -, *, /): additionPlease enter a valid operator.Please choose a valid operation (+, -, *, /): /Type in first number: 123.321Please enter a whole number.Type in first number: 10&nbsp;Type in second number: hundredPlease enter a whole number.Type in second number: 10010 / 100 = 0.1

蝴蝶不菲

您应该使用python的内置operator 模块。然后你可以使用这样的字典:import operatoroperator_dict = {"+": operator.add,&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"-": operator.sub,&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"*": operator.mul,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"/": 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:&nbsp; &nbsp; ... get the numbers ...&nbsp; &nbsp; print("{}{}{}={}".format(num1, user_input, num2, operator_func(num1, num2))这样您就不需要自己实现简单的运算符功能。

www说

最简单和最干净的方法是使用operatorPython 中的模块,因此您的userOutput方法将如下所示。但是,您应该对代码进行一些更改,将小时operator变量重命名为op,因为它会与 python 模块名称冲突,并将 更新operator为从 的返回userInput():import operatorop = ""numbers = []inputNumbers = ["first number", "second number"]operators = {&nbsp; &nbsp; &nbsp; &nbsp; '+' : operator.add,&nbsp; &nbsp; &nbsp; &nbsp; '-' : operator.sub,&nbsp; &nbsp; &nbsp; &nbsp; '*' : operator.mul,&nbsp; &nbsp; &nbsp; &nbsp; '/' : operator.truediv,&nbsp; &nbsp; &nbsp; &nbsp; '%' : operator.mod,&nbsp; &nbsp; &nbsp; &nbsp; '^' : operator.xor,}def userInput(op):&nbsp; &nbsp; while not op:&nbsp; &nbsp; &nbsp; &nbsp; op = input("Please choose a valid operation (+, -, *, /): ")&nbsp; &nbsp; &nbsp; &nbsp; if op not in operators:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print("Please enter a valid operator.")&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; op = ""&nbsp; &nbsp; for inputNumber in inputNumbers:&nbsp; &nbsp; &nbsp; &nbsp; user_num_input = -1&nbsp; &nbsp; &nbsp; &nbsp; while user_num_input < 0:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; user_num_input = int(input("Type in {}: ".format(inputNumber)))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; except:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; user_num_input = -1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print("Please enter a whole number.")&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if user_num_input > -1:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; numbers.append(user_num_input)&nbsp; &nbsp; return opdef userOutput(op, operators):&nbsp; &nbsp; result = operators[op](numbers[0], numbers[1])&nbsp; &nbsp; print("{} {} {} = {}". format(numbers[0], op, numbers[1], result))op = userInput(op)userOutput(op, operators)
随时随地看视频慕课网APP

相关分类

Python
我要回答