万无一失的Python计算器

2024-03-29 11:01:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个基本的计算器,它可以处理两个不同的数字。 到目前为止,我成功地编写了一个工作原型,但是在划分和防止它的时候,我遇到了许多问题,所以我将它们发布出来 分开。你知道吗


如果用户没有提供合格的操作员,我希望程序重复这个问题。这就是我现在的代码:

def optn_query():
    print("Hulk can different things with number!")
    print("YOU!")
    optn = input("What Hulk do with number?! ")
    return optn

是否使用if语句来确定输入是否正确?


我还将return optn放入其中,这样下一个函数(优雅地称为hulk\u math)不会中途失败,但它仍然会失败:

Traceback (most recent call last):
  File "hulc.py", line 57, in <module>
    main()
  File "hulc.py", line 13, in main
    hulk_math()
  File "hulc.py", line 41, in hulk_math
    if optn == "+":
NameError: name 'optn' is not defined

我该怎么做才能解决这个问题?你知道吗

以下是绿巨人数学()本身:

def hulk_math():
    if optn == "+":
        result = num1 + num2
        print("Hulk ADDS!!! Hulk thinks it's {0}!".format(result))
    elif optn == "-":
        result = num1 - num2
        print("Hulk SUBTRACTS!!! Hulk thinks it's {0}!".format(result))
    elif optn == "*":
        result = num1 * num2
        print("Hulk MULTIPLIES!!! Hulk thinks it's {0}!".format(result))
    elif optn == "/":
        result = num1 / num2
        print("Hulk DIVIDES!!! Hulk thinks it's {0}!".format(result))
    main()

Tags: pyformatifitmathresultfileprint
2条回答

您需要实际调用函数:

def hulk_math():
    optn = optn_query()
    #The rest of your code

另外,除非在代码的其他地方定义了num1num2,使它们在hulk_math的范围内,否则程序也会在那里失败。你知道吗

使用global不是正确的方法。通过保存返回值并将其作为参数传递,将值从一个函数传递到另一个函数。你知道吗

def main():
    intro()
    num1 = num1_query()
    optn = optn_query()
    num2 = num2_query()
    hulk_math(num1, optn, num2)

def hulk_math(num1, optn, num2):
    #Your original code will work as expected

相关问题 更多 >