我对python和编码一般都比较新。 我已经搜索了一些其他类似的问题,似乎无法找到我正在寻找的答案。 我正在研究一个能够计算篮球运动员进攻效率的小程序,但是当我定义一个程序并将其调回来时,它不会产生价值。
def fgp(x, y):
fgp = (x/y)*100
return;
def fgpoutput():
x = int(input("How many shots made?"));
y = int(input("How many shots attempted?"));
fgp(x, y);
output = "This player is shooting",fgp,"%"
print(output)
fgpoutput()
我认为这似乎有效,但我无法分辨,因为它会返回:
How many shots made?5
How many shots attempted?10
('This player is shooting', function fgp at 0x02561858, '%')
我觉得我已经接近了,但似乎无法确定它。
答案 0 :(得分:1)
output = "This player is shooting",fgp,"%"
正在打印“fgp”函数本身,而不是它正在计算的内容。您可能正在寻找的是:
def fgp(x, y):
return (x / y) * 100
这将返回您想要计算的值。然后你可以在输出中调用它:
def fgpoutput():
x = int(input("How many shots made?"))
y = int(input("How many shots attempted?"))
result = fgp(x, y)
output = "This player is shooting {} %".format(result)
print(output)
此外,您不需要Python末尾的分号。
答案 1 :(得分:1)
好的,你在这里遇到了一些不同的问题。
function fgp
返回任何内容:return;
末尾的fgp
返回None
,这在Python中表示没有值。不要那样!相反,请使用:return fgp
。fgp
中调用fgpoutput
- 您只是打印功能本身。相反,您希望调用这样的函数:fgp(x, y)
,现在返回计算值。output
的方式并不完全正确。在Python中,有一种字符串方法,用于格式化字符串以包含数字:str.format()
。 Check out the documentation on it here。所以,我们总得到:
def fgp(x, y):
fgp = (x/y)*100
return fgp
def fgpoutput():
x = int(input("How many shots made?"));
y = int(input("How many shots attempted?"));
output = "This player is shooting {} %".format(fgp(x, y))
print(output)
fgpoutput()
总的来说,你肯定是在正确的轨道上。祝你好运!
答案 2 :(得分:0)
与Python中的其他内容一样,函数是一个对象。打印fgp
时,您正在打印对可执行功能对象的引用。
但是,与Matlab不同,要从Python中的函数返回,实际上你需要return
值:
def fgp(x, y):
return (x/y) * 100
如果您想致电fgp
,您必须执行此操作:
output = "This player is shooting", fgp(x, y), "%"
答案 3 :(得分:0)
似乎存在一些问题
首先是函数 -
def fgp(x, y):
fgp = (x/y) * 100
return;
在上面的函数中,您正在使用' fgp'再次进入函数' fgp'。这本身不是问题(函数fgp是全局的,而函数fgp中的fgp是本地的),但它非常难以理解和混淆。你应该使用像' f'如果你必须的话。
第二 -
(x/y) * 100
此函数几乎总是返回0(如果x和y都是整数,在你的情况下它们是和x 所以你的fgp变成了 如果y恰好为零,则让它(x * 100.0) / y # force the numerator to a float
def fgp(x,y):
assert y is not 0
return (x * 100.0/y)
AssertionError
。这应该是