【发布时间】:2016-03-18 05:02:26
【问题描述】:
我正在尝试在 python3 中编写一个简单的递归函数。在学习 OO Java 时,我也想编写涉及对象的 Python 代码。下面是我的代码。我提示用户输入一个数字,屏幕应显示小于 5 的每个整数。
class Recursion:
@staticmethod
def recursive(x):
if (x>5):
print (x)
recursive(x - 1)
def main(self):
x = int(input('Enter a number for recursive addition: '))
recursive(x)
但是,当我在终端上运行它时,它显示:“NameError: name 'recursive' is not defined”。以下是错误的样子:
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 5 2015, 21:12:44)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from Recursion import *
>>> a = Recursion()
>>> a.main()
Enter a number for recursive addition: 10
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/ZycinG/Desktop/Python Practice/Recursion.py", line 9, in main
recursive(x)
NameError: name 'recursive' is not defined
是什么导致了这里的问题?我知道如何编写递归函数,给它一个参数,然后让它在终端上运行。但我想练习OOP。
【问题讨论】:
-
好吧,您实际上不必在课堂上编写它,但第二个应该可以工作,您能否提供用于实际调用
main的代码?跨度> -
忽略我关于不在课堂上写它的评论,错过了最后一条语句,但如果它实际上不使用来自对象的数据,则将其设为
staticmethod可能是有意义的。跨度> -
使用您提供的第二个代码块和类定义下方的语句
Recursion().main(),并在提示程序按预期工作时输入10。好吧,忽略“递归加法”实际上倒数到 6。 -
当您发布有关错误的问题时,请记住显示导致错误的步骤,而不仅仅是您的代码+“我使用过”。您的错误很可能在于执行而不是准备
-
@TadhgMcDonald-Jensen 感谢您的回复。这是我的带有静态方法的新代码,它仍然说名称未定义?
class Recursion: @staticmethod def recursive(x): if (x>5): print (x) recursive(x - 1) def main(self): x = int(input('Enter a number for recursive addition: ')) recursive(x)
标签: python python-3.x oop recursion nameerror