#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
inrange(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-го к последнему индексу, чтобы мой фактический код работал, если возможно, не могли бы вы исправить мой фактический код и немного объяснить это. ТИА