Python:定义了新函数,但它不打印结果

时间:2016-08-07 13:17:00

标签: python function printing

Python初学者,尝试:

  • 从键盘插入两个数字
  • 创建两个
  • 的和函数
  • 打印和函数。

我的代码如下所示:

number1 = raw_input("Insert number1 = ")
print number1

number2 = raw_input("Insert number2 = ")
print number2

def sumfunction (number1, number2):
   print "Were summing number1 and number2 %d + %d" % (number1, number2)
   return number1 + number2
   print()

我想要打印sumfunction,或者打印函数结果的东西。 目前我的代码只返回number1和number2 ......

编辑:语法编辑

3 个答案:

答案 0 :(得分:1)

  1. return语句之后的任何内容都不会被执行。

  2. 您定义了该功能。现在您需要做的就是调用它......

    sumfunction(number1, number2)
    
  3. 您的功能仍然无法正常工作。由于raw_input返回一个字符串,因此您的函数将返回连接的数字(对于数字12,它将返回字符串'12'而不是数字3 })。您应该将每个号码转换为int(或float):

    number1 = int(raw_input("Insert number1 = "))
    

答案 1 :(得分:1)

让我们一步一步来看看。

我们可以从更改您的功能开始:

def add(number1, number2):
    print "We're summing number1 and number2 %d + %d = %d" % (number1, number2, number1 + number2)

请注意,在此版本中,您实际上是在添加数字,而不是过早退出。在调用此函数之前,数字必须从字符串转换为整数,我们马上就会这样做。在您的版本中,您只需返回结果但无法打印。

此外,您需要调用您的函数以便它能够完成其工作,即add(number1, number2)

如果我们稍微重构您的脚本,您可以获得以下内容:

def add(number1, number2):
    "Only adds the two arguments together and returns the result"
    return number1 + number2

# convert inputs from strings to integers
number1 = int(raw_input("Insert number1 = "))
print number1

# convert inputs from strings to integers
number2 = int(raw_input("Insert number2 = "))
print number2

result = add(number1, number2)
print "The result of %d + %d = %d" % (number1, number2, add(number1, number2))

注意输入现在也是如何从字符串转换为实际的整数,以便它们被添加,而不是连接。也就是"2" + "2" = "22"2 + 2 = 4

使用以下检查包装代码也是一种好习惯:

if __name__ == '__main__':
    # your main code here

所以上面的内容可以重构为:

def add(number1, number2):
    "Only adds the two arguments together and returns the result"
    return number1 + number2

if __name__ == '__main__':
    number1 = int(raw_input("Insert number1 = "))
    print number1

    number2 = int(raw_input("Insert number2 = "))
    print number2

    result = add(number1, number2)
    print "The result of %d + %d = %d" % (number1, number2, add(number1, number2))

这允许代码的主要部分仅在直接调用脚本时执行,而不是在从另一个Python脚本作为模块获取import时执行。建议进行此检查,因为在Python中,每个文件都被视为一个模块,即说from <yourfile> import add是合法的,并且您不希望在这种情况下实际测试您的add实现的代码执行。

另请注意,我们已从print函数中删除了add语句。这是为了确保你的函数只做一个只有一个,即add参数。这使得您的功能更加通用,并且更容易在其他部分重复使用您的代码,包括那些在计算内容时呼叫者不想立即print任何内容的代码。

这被称为Single-Responsibility-Principle。遵循这一原则将使您能够在长期内对软件设计/实施做出改进并做得更好。

  

我想要打印函数,或者打印函数结果的东西。

现在您可以执行以下操作:

x = 5
y = 10
print add(x, y)

答案 2 :(得分:1)

更改您的代码以使用main功能。它将帮助您更好地理解代码流:

def sumfunction(n1, n2):
   print "Were summing %d + %d" % (n1,   n2)
   return n1 + n2

def input_int(prompt):
    while True:
        try:
            return int(raw_input(prompt))
        except ValueError:
            print "Invalid input! Please try again."

def main():
    number1 = input_int("Insert number1 = ")
    print number1

    number2 = input_int("Insert number2 = ")
    print number2

    result = sumfunction(number1, number2)
    print "Result: %d" % result

if __name__ == '__main__':
    main()

这是编写Python脚本的标准方法。看看,当脚本运行时,它实际上会执行一切。所以我们把__name__检查放在最后,说'#34;好吧,脚本已经加载,现在实际上开始在这个预定义的点(main)&#34;开始运行。

我已更改了您的变量名称,因此您可以了解它们作用域到声明它们的函数。

我还展示main如何从sumfunction获取返回值,并将其存储到变量中(就像使用raw_input一样)。然后,我打印那个变量。

最后,我写了一个名为input_int的函数。在DeepSpace's answer indicated时,raw_input会返回字符串,但您希望使用整数。这样做,您需要在int返回的字符串上调用raw_input。这样做的问题是,如果用户输入了一个无效的整数,它会引发ValueError异常,例如"snake"。这就是我捕获错误的原因,并要求用户再试一次。