关于python:NameError:未定义名称’recPower’

NameError: name 'recPower' is not defined

我正在做作业,遇到了这个错误。名称错误:未定义名称"recpower"

  • 编写一个名为pow(base,power)的递归函数,它接受两个数字。第一个数字是基数,第二个数字是幂。函数将返回提升到幂的数字。因此,如果数字为2,功率为4,函数将返回16。(75分)。

  • 编写一个请求数字和幂的main()函数。然后调用步骤1中创建的递归函数(15点)。不要使用书中432页的算法:

    定义:回收功率(A,N):

    1
    2
    3
    4
    5
    6
    7
    8
    if n == 0:
        return 1
    else:
        factor = recPower (a, n//2)
        if n%2 == 0:
             return factor * factor
         else:
              return  factor * factor * a
  • 我现在的代码如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    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行,主打印("total=",recpower(a,n))名称错误:未定义名称"recpower"


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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    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()

    在"recpower"之后定义"run"函数。

    如前所述,您需要使用int()或float()将从input()返回的字符串转换为整数或float。当你尝试像除法这样的操作时,你会得到类型错误异常。


    在主代码上面写方法,因为如果在主代码下面写方法是未定义的


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

    试试这个代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    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()