我刚开始学习Python,现在我正在做一些练习。
具体来说,本练习要求编写一个Python程序来对三个给定的整数求和。但是,如果两个值相等,则sum将为零。
这是我的代码:
from sys import argv
script, x, y, z = argv
def sum(x, y, z):
if x == y or y == z or x==z:
sum = 0
else:
sum = x + y + z
return sum
print (sum)
我在WindowPowerShell中打开脚本,指定脚本名称(es3.py)和三个变量,例如:1 2 3。
但是我收到以下消息:
<function sum at 0x0000000001E0F048>
而不是我期待的结果。
有没有人知道为什么会这样?
感谢。
答案 0 :(得分:2)
让我评论你的代码:
script, x, y, z = argv
# we now have four new variables inside the main module:
# script, x, y, z
# all functions defined here have access to these but
# cannot modify them (unless we use "global").
def sum(x, y, z):
# while sum() in principle has access to the
# variables defined outside of sum(),
# sum() (the function) also takes three parameters.
# these need to be passed in with a function call
# (i.e. sum(x, y, z)).
#
# x, y, z here are unrelated to x, y, z outside of sum().
# in fact the parameters shadow the global variables,
# making them inaccessible (via direct means).
if x == y or y == z or x==z:
sum = 0
# this defines a local variable "sum".
# it is unrelated to the function "sum"
else:
sum = x + y + z
# x, y, z are strings, so "sum" is now a string, too.
return sum
print (sum)
# here, you refer to the function "sum".
# the variable "sum" only exists inside the function "sum".
如果你想得到sum()
(函数)的结果,你需要用参数调用它:
print(sum(x, y, z))
您无法访问函数外的变量sum
。
答案 1 :(得分:0)
如果你
print(sum)
然后打印功能 sum
。
如果您要打印结果,则必须致电 sum
:
print(sum(x, y, z))
答案 2 :(得分:0)
print (sum(x,y,z))
表示调用您的函数/方法并打印返回值。
print (sum)
表示打印数据的元数据(总和也是一种数据)
答案 3 :(得分:0)
您应该打印sum
功能的结果:
print(sum(x, y, z))
这样就会打印出sum
函数的返回值。你这样做的方式就是打印出一个函数引用。
另外作为旁注,sum()
是built-in python函数,因此最好避免命名冲突并相应地命名函数。
答案 4 :(得分:0)
请尝试以下代码:
from sys import argv
script, x, y, z = argv
def sum_(x, y, z):
if x == y or y == z or x==z:
the_sum = 0
else:
the_sum = int(x) + int(y) + int(z)
return the_sum
print(sum_(x, y, z))