无法弄清楚这种编码出了什么问题

时间:2015-10-03 04:49:19

标签: python

我试图找出为什么我没有在python中获得正确的答案。到目前为止,这是我的代码:

def main():
    base = input('Enter an integer for the base: ')
    exponent = input('Enter an integer for the exponent: ')
    print(base,'to the power', exponent,'equals', power)

def power(base, exponent):
    if exponent <= 1:
       return base
    else:
       return base * power(base, exponent - 1)
main()

当我用2和5(基数,指数)运行程序时,我得到了这个:

Enter an integer for the base: 2
Enter an integer for the exponent: 5
2 to the power 5 equals <function power at 0x03DDC300>
>>> 

我的问题是:为什么我会在0x03DDC300&#34;处理功能?或类似的答案,而不是32的正确答案?

4 个答案:

答案 0 :(得分:1)

您需要使用适当的整数参数调用函数power以获得正确的输出。

print(base,'to the power', exponent,'equals', power(int(base), int(exponent))) # call the function `power`

如果没有这个,power将只返回一个可调用的。

In [1]: def some_func():
   ...:     return 2 
   ...: 

In [2]: print some_func # print the function without calling 
<function some_func at 0x601a050> # returns a callable

In [3]: print some_func() # call the function
2

答案 1 :(得分:0)

print(base,'to the power', exponent,'equals', power)

看看这条线。你没有调用函数,而只是编写函数名。

您需要调用该函数。

power更改为power(base,exponent)

例如,如果要计算2到3的幂,请更改以上行:

print(base,'to the power', exponent,'equals', power(2,3)) 

答案 2 :(得分:0)

因为power()是一个函数,所以你需要调用它,而不仅仅是打印它 并且您的函数power()需要两个参数,因此您可以尝试以下代码:

def main():
    base = int(input('Enter an integer for the base: '))
    exponent = int(input('Enter an integer for the exponent: '))
    # use `int()` function if you wish user enter a intege


    print(base,'to the power', exponent,'equals', power(base, exponent))

def power(base, exponent):
    if exponent <= 1:
       return base
    else:
       return base * power(base, exponent - 1)

main()

<强>演示:

Enter an integer for the base: 10
Enter an integer for the exponent: 20
10 to the power 20 equals 100000000000000000000

答案 3 :(得分:0)

当你有一个没有括号的函数时,返回值将告诉你函数,而不是返回值。为了获得返回值,必须分别为函数power()插入参数,base和exponent。

此外,当一个函数使用另一个函数时 - 比如函数1使用函数2 - 您应该首先定义函数2,而不是反过来。

这应该有效:

def power(base, exponent): if exponent <= 1: return base else: return base * power(base, exponent - 1) def main(): base = input('Enter an integer for the base: ') exponent = input('Enter an integer for the exponent: ') print(base,'to the power', exponent,'equals', power(base, exponent)) main()