【问题标题】:Why doesn't my Python calculator print the results its functions return? [duplicate]为什么我的 Python 计算器不打印其函数返回的结果? [复制]
【发布时间】:2019-08-03 20:49:15
【问题描述】:

我是 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()

我希望它会询问我想要执行的操作是什么,然后询问数字是什么,然后打印结果。相反,它会完成所有这些,除了打印结果。请有人指出我哪里出错了。注意:我只为“添加”添加了一个案例,因为我只是在测试它。

【问题讨论】:

    标签: python


    【解决方案1】:

    它会做所有这些,除了打印结果

    最简单的答案是因为你没有告诉它。当您在代码中编写 print(<something>) 时,Python 只会打印您告诉它的内容。

    当您编写add(num1, num2) 时,它正在计算结果,但是您并没有对这个结果做任何事情。例如,您可以这样做:

    answer = add(num1, num2)
    print(answer)
    

    这声明了一个变量来存储结果,这样它就不会丢失。然后打印出来。


    除了关于打印结果的直接问题之外,您会发现从input() 获得的值是一个字符串,而不是一个数字。您的 add() 函数将执行 num1 + num2 但由于这些是字符串,它实际上是连接(加入)它们,例如 "3" + "4" = "34" 这不是您想要的。

    您应该确保将输入转换为带有int()float() 的数字。我建议不要在add() 中调用str()print() 函数可以很好地打印数字。

    【讨论】:

      【解决方案2】:
      num1 = input("What is number 1? ")
      

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

      【讨论】:

      • 如果这是问题,OP 会出现错误或异常,而他们只是报告他们没有打印任何结果。 (这意味着它们在 Python 2 上,其中input() 隐式执行eval(),并且返回字符串)。
      • 嗯。他们可能在 Python 3 上得到不准确的结果 ("3" + "4" == "34"),但即便如此,这也不能解决他们实际提出的问题 i>,即没有任何输出。
      【解决方案3】:

      这是您的计算器的一个工作示例:

      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

      【讨论】:

      • 您可能对 python 2 和 python 3 感到困惑。在 python 3 中(我假设 Inigo Burrell 将使用它), raw_input() 不存在。而在 python 2 中它确实如此。因此 Inigo 应该使用 input 代替。但是,如果 Inigo 使用的是 Python 2,那么 raw_input() 就可以了。
      • 在 Python 3 中,input() 是正确的,在除法之前不需要将num1num2 强制转换为浮点数,因为/ 运算符总是执行浮点除法。
      • 4.2 + 7.915 在这里不起作用,因为 int 转换:(
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 2014-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多