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 ......
编辑:语法编辑
答案 0 :(得分:1)
return
语句之后的任何内容都不会被执行。
您定义了该功能。现在您需要做的就是调用它......
sumfunction(number1, number2)
您的功能仍然无法正常工作。由于raw_input
返回一个字符串,因此您的函数将返回连接的数字(对于数字1
和2
,它将返回字符串'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"
。这就是我捕获错误的原因,并要求用户再试一次。