я хочу напечатать число от 1 до n, но после запуска этого кода произошла ошибка «сброс ядра»

#python #python-3.x

#python #python-3.x

Вопрос:

я хочу напечатать число от 1 до n, но после запуска этого кода произошла ошибка «сброс ядра». Я знаю, что код работает хорошо, если я меняю self на n, но почему не self???

 n = int(input("?"))

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

again_book(n)
  

Комментарии:

1. потому n что никогда не изменяется, поэтому оно всегда больше 0

2. Вы должны сказать if self > 0:

3. (a) self не является подходящим именем для ваших собственных аргументов (b) не выполняйте итеративные действия рекурсивно.

Ответ №1:

Ваш код не работает, потому что вы никогда не меняете n переменную. В вашей функции вы проверяете, n > 0 и это всегда будет

Вот исправление:

 n = int(input("?"))

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

again_book(n)
  

Другой способ сделать это — использовать while цикл:

 n = int(input("?"))
x = 0

while x < n:
    print(x)
    x  = 1
  

Ответ №2:

Я думаю, вы можете использовать понимание списка
[число для числа в диапазоне (num_limit)]

Ответ №3:

Self используется, когда вам нужно передать сам объект. далее вы можете прочитать здесь