#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
что никогда не изменяется, поэтому оно всегда больше 02. Вы должны сказать
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 используется, когда вам нужно передать сам объект. далее вы можете прочитать здесь