NameError:name' recPower'没有定义

时间:2017-04-28 06:53:10

标签: python python-3.x

我正在处理作业并遇到此错误。 NameError:name' recPower'未定义

  1. 写一个名为pow(base,power)的递归函数,它接收两个数字。第一个数字是基数,第二个数字是幂。该功能将返回提升功率的数字。因此,如果数字为2且功率为4,则函数将返回16.(75分)。

  2. 写一个要求数字和功率的main()函数。然后调用在步骤1中创建的递归函数(15分)。 请勿使用本书第432页的算法:

    def:recPower(a,n):

    if n == 0:
        return 1
    else:
        factor = recPower (a, n//2)
        if n%2 == 0:
             return factor * factor
         else:
              return  factor * factor * a
    
  3. 我目前的代码如下

    def main():
     a=input("enter base :")
     n=input("enter power :")
    
     print ("Total = ",recPower(a,n))
    
    main()
    
    def recPower (a,n):
    
        if n == 0:
            return 1
        else:
            return a*recPower(a,n-1)
    

    ` 我运行它时得到的错误是:

    追踪(最近一次通话):   文件" .py",第7行,in     主要()   文件" .py",第5行,在main中     打印("总计=",recPower(a,n)) NameError:name' recPower'未定义

4 个答案:

答案 0 :(得分:1)

定义您的'运行'功能在' recPower'。

之后

如前所述,您需要使用int()或float()将从input()返回的字符串转换为整数或浮点数。当您尝试像分区这样的操作时,您将获得TypeError异常。

答案 1 :(得分:1)

功能存储在标识符中。你必须先定义它。试试这个:

def recPower(a, n):
    if n == 0:
        return 1
    else:
        return a * recPower(a, n - 1)


def main():
    a = int(input("enter base :"))
    n = int(input("enter power :"))

    print ("Total = ", recPower(a, n))


main()

答案 2 :(得分:0)

函数必须在使用之前定义。

试试这段代码

def recPower(a, n):
    # or just a, n = int(a), int(n) is fine
    if isinstance(a, str):
        a = int(a)
    if isinstance(n, str):
        n = int(n)
    if n == 0:
        return 1
    else:
        return a * recPower(a, n - 1)


def main():
    a = input("enter base :")
    n = input("enter power :")

    print ("Total = ", recPower(a, n))


main()

答案 3 :(得分:0)

在主代码上面编写你的方法,因为如果你在主代码下编写方法是未完成的