为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

HUH函数 2021-09-11 10:29:19
我正在尝试创建一个程序,允许用户输入 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()
查看完整描述

3 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

您应该检查用户是否输入了有效的操作,try 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


查看完整回答
反对 回复 2021-09-11
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

您应该使用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))

这样您就不需要自己实现简单的运算符功能。


查看完整回答
反对 回复 2021-09-11
?
www说

TA贡献1775条经验 获得超8个赞

最简单和最干净的方法是使用operatorPython 中的模块,因此您的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)


查看完整回答
反对 回复 2021-09-11
  • 3 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号