Python 我想将数字从1打印到n,但运行此代码后,出现错误";“堆芯倾倒”;发生

Python 我想将数字从1打印到n,但运行此代码后,出现错误";“堆芯倾倒”;发生,python,python-3.x,Python,Python 3.x,我想将数字从1打印到n,但运行此代码后,出现错误“core dumped”。 我知道如果我把self改为n,代码运行得很好,但为什么self不行呢 n = int(input("?")) def again_book(self): if n > 0: again_book(self - 1) print(self) again_book(n) 当必须传递对象本身时,使用Self。 您的代码不起作用,因为您从未更改n变量。在您的函数中,您正在检查n>0,

我想将数字从1打印到n,但运行此代码后,出现错误“core dumped”。 我知道如果我把self改为n,代码运行得很好,但为什么self不行呢

n = int(input("?"))

def again_book(self):
    if n > 0:
        again_book(self - 1)
    print(self)

again_book(n)

当必须传递对象本身时,使用Self。
您的代码不起作用,因为您从未更改
n
变量。在您的函数中,您正在检查
n>0
,它将始终是

这里有一个修正:

n=int(输入(“?”)
def(自我)手册:
如果self>0:
再看一本书(self-1)
打印(自我)
再看一本书(n)
另一种方法是使用
while
循环:

n=int(输入(“?”)
x=0
而x
我认为您可以使用列表理解

[num for num in range(num_limit)]

因为
n
永远不会改变,所以它总是大于0如果self>0,你应该说
(a)
self
不是你自己参数的好名字(b)不要递归地做迭代。