我是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”的案例,因为我只是在测试它。
答案 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
。