Получение «UnboundLocalError: локальная переменная ‘n’, на которую ссылаются перед назначением» при запуске моего кода

#python

Вопрос:

Я написал небольшой код, чтобы проверить, является ли мое слово палиндромом или нет:

 def PalorNot():  a =input("Enter your word here: ")  for n in range(0,n 1,1):  if (a[0]==a[-(n 1)]):  print("Your word is a Palindrome")  break  else:  print("Your word is not a Palindrome")  PalorNot()  

Однако при запуске моего кода я получаю эту ошибку «UnboundLocalError: локальная переменная ‘n’, на которую ссылаются перед назначением».

Странно то, что если я закомментирую def PalorNot(): и это вызов, код работает безупречно.

Любая помощь будет признательна, так как я пытаюсь выучить Python.

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

1. Что вы ожидаете range(0,n 1,1) вернуть, когда n еще не определено? Кроме того, ваш код должным образом не проверяет наличие палиндрома. Он выносит вердикт только после проверки первого символа.

2. @Selcuk Не уверен, что ты имеешь в виду. Насколько я понимаю, n будет выполняться из этого диапазона(0,n 1,1), как это было в примере печати от 1 до 10: для n в диапазоне(0, 11, 1): печать(n) Если я ошибаюсь, не могли бы вы исправить мой фактический код и объяснить, что пошло не так?

3. Верно, но в чем ценность n in range(0,n 1,1) ?

4. @Selcuk n на самом деле ссылается на индекс строки, которую я пытаюсь переместить из индекса 0 в (n 1). Кажется, я упускаю самое главное. Если вы можете, пожалуйста, объяснить мне на примере, это было бы здорово!

5. @Selcuk Я думаю, теперь я знаю,в чем была проблема(по крайней мере, есть подсказка): если я напишу для себя в диапазоне(0, n 1,1), это будет работать и правильно?

Ответ №1:

Это потому, что в этой строке:

 for n in range(0,n 1,1):  

Ты пытаешься использовать n … определять n . Вы не можете, потому n что еще не существует, пока не пройдет эта линия.

Я верю, что вместо этого ты хочешь:

 for n in range(0,len(a),1):  

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

1. Спасибо, но я пытаюсь перейти от 0-го к последнему индексу, чтобы мой фактический код работал, если возможно, не могли бы вы исправить мой фактический код и немного объяснить это. ТИА