为什么我的Python计算器不打印其函数返回的结果?

时间:2019-08-03 20:49:15

标签: python

我是Python的初学者,正在尝试编写我的第一个计算器程序。但是,我为此设置的测试无效。它要求我提供操作和数字,但没有打印出结果。为什么不呢?

我尝试用不同的方式重写它,但是它仍然不起作用。

def add(num1, num2):
    print(str(num1+num2))
def sub(num1, num2):
    return str(num1-num2)
def mul(num1, num2):
    return str(num1*num2)
def div(num1, num2):
    return str(float(num1)/float(num2))



def main():
    operation = input("What operation would you like to perform? add, sub, mul or div: ")
    num1 = input("What is number 1? ")
    num2 = input("What is number 2? ")
    if (operation == 'add'):
        add(num1, num2)

main()

我希望它询问我要执行的操作,然后询问数字是什么,然后打印结果。相反,除了打印结果外,它会执行所有这些操作。请有人指出我错了。 NB:我只是放入一个“ add”的案例,因为我只是在测试它。

3 个答案:

答案 0 :(得分:1)

  

除了打印结果外,它会执行所有这些操作

最简单的答案是,这是因为您没有告诉您。当您在代码中编写ref时,Python只会打印出您告诉它的内容。

当您写print(<something>)时,它是在计算结果,但是您并没有对该结果做任何操作。例如,您可以这样做:

add(num1, num2)

这声明了一个变量来存储结果,以免丢失。然后打印出来。


除了直接要打印结果的问题外,您还会发现从answer = add(num1, num2) print(answer) 获得的值是字符串,而不是数字。您的input()函数将执行add(),但是由于它们是字符串,因此实际上是在串联(联接)它们,例如num1 + num2并不是您想要的。

您应确保使用"3" + "4" = "34"int()将输入内容转换为数字。而且我建议不要在float()内部进行str()调用。 add()函数可以很好地打印数字。

答案 1 :(得分:0)

num1 = input("What is number 1? ")

input()返回一个字符串,因此您需要将两个输入都转换为int(),以便它们可以执行数学运算。

答案 2 :(得分:0)

以下是您的计算器的一个有效示例:

def add(num1, num2):
    return num1+num2

def sub(num1, num2):
    return num1-num

def mul(num1, num2):
    return num1*num2

def div(num1, num2):
    return num1/num2

def main():
    operation = raw_input("What operation would you like to perform? add, sub, mul or div: ")
    num1 = float(input("What is number 1? "))
    num2 = float(input("What is number 2? "))
    if (operation == 'add'):
        print(add(num1, num2))
    elif (operation == 'sub'):
        print(sub(num1, num2))
    elif (operation == 'mul'):
        print(mul(num1, num2))
    elif (operation == 'div'):
        print(div(num1, num2))
    else:
        print("Error: no such operation")

main()

注意:为了进行操作,您必须使用raw_input而不是input