#python-3.x #global-variables #local-variables
#python-3.x #глобальные переменные #локальные переменные
Вопрос:
Я только начинаю учиться программировать, поэтому надеюсь, что задаю этот вопрос правильно. Для практики я хотел создать программу, которая будет распечатывать классы, поскольку форма на самом деле не меняется. Он будет принимать входные данные, изменять их, а затем размещать их в правильном порядке.
У меня возникли проблемы с извлечением слов из списка и удалением пробелов, добавлением подчеркиваний и изменением значений. В функции выше следующего кода я получаю входные данные и помещаю их в глобальный список с именем required . Я перепутал с вводом global required
, def modify():
но это ничего не меняет. Закомментированные строки — это те, которые продолжают помечать ошибку «UnboundLocalError: локальная переменная ‘i’, на которую ссылаются перед назначением». Я хочу заменить исходное слово и добавить измененное слово. Я безуспешно пытался перемещать отступ.
Для меня это не имеет смысла, поскольку ранее в коде у него нет проблем с печатью «i», а позже в коде у него тоже нет проблем с выполнением того, что я ищу. Почему у него проблемы с «i» в промежуточном разделе, где он работает просто отлично?
Для справки я использую значения ‘имя’, ‘фамилия’, ‘город’, ‘название компании’, ‘город’. Он правильно выводит результаты для строк с пробелами и изменяет строки из одного слова и правильно помещает их в список.
def modify():
for i in range(0,len(required) 1):
print()
print(i)
print()
if chr(32) in str(required[i]):
no_space = ""
underscore = ""
for l in str(required[i]):
if ord(l) !=32:
no_space = l
underscore = l
elif ord(l) == 32:
del i
underscore = "_"
print()
print(no_space)
print(underscore)
# required.index[c] = no_space
# required.append(underscore)
# required.insert(i 1,underscore)
# required[i] = no_space
elif chr(32) not in str(required[i]):
if chr(95) in str(required[i]):
continue
elif chr(95) not in str(required[i]):
additional = "the_" str(required[i])
required.insert(i 1,additional)
print()
for t in range(len(required)):
print(str(t 1) ". " required[t])
Спасибо! Я надеюсь, что это не слишком запутанно!
Ответ №1:
Я думаю, что ошибка вызвана этой строкой:
del i
Вы удаляете значение, присвоенное i в этот конкретный момент, поэтому в начале вы можете распечатать его, но после этого оно выдает исключение.
Комментарии:
1. Боже мой. В этом проблема. Спасибо! Я удалял неправильную переменную. Теперь я изменил его на ‘L’, чтобы он правильно удалял пробел.