Скорее всего, это ошибка с моей стороны из-за недостатка навыков при кодировании, но я столкнулся с чем-то, чего у меня никогда не было, и это было при использовании функций и обращении их к другим функциям, переменные могут быть запутаны и выдать ошибку. Мне нужен кто-то, кто поможет разобраться в происходящем. Пожалуйста, помогите и спасибо заранее
import os
def main():
if os.path.exists("Text.txt")==True:
with open("Text.txt", "r") as f:
li=[]
for lines in f:
li.append(eval(lines))
for i in range(0, len(li)):
if i == 0:
a = li[i]
elif i == 1:
b = li[i]
elif i == 2:
c = li[i]
elif i == 3:
d = li[i]
else:
pass
else:
open("Text.txt", "w").close
a=[1]
b=[2]
c=[3]
d=[4]
menu(a, b, c, d)
def menu(a, b, c, d):
print(a, b, c, d)
main()
когда я запускаю код, появляется сообщение: Traceback (последний вызов был последним): файл "main.py", строка 30, в main () Файл "main.py", строка 26, в главном меню (a, b , c, d) UnboundLocalError: локальная переменная 'c', на которую ссылается перед присваиванием
Всего 3 ответа
переменная с не всегда определяется в вашем коде.
Проверьте, например, что-то вроде:
def main():
c=None
...
if ...
...
import os
def main():
a, b, c, d = None,None,None, None # Use None or any other data type you are using
if os.path.exists("Text.txt"):
with open("Text.txt", "r") as f:
li = []
for lines in f:
li.append(eval(lines))
for i in range(0, len(li)):
if i == 0:
a = li[i]
elif i == 1:
b = li[i]
elif i == 2:
c = li[i]
elif i == 3:
d = li[i]
else:
pass
else:
open("Text.txt", "w").close
a = [1]
b = [2]
c = [3]
d = [4]
menu(a, b, c, d)
def menu(a, b, c, d):
print(a, b, c, d)
main()
Определите a, b, c и d перед этим и должны решить проблему.
В блоке «else» вы открываете «Text.txt» в режиме записи, но на нем ничего не экономится. Таким образом, если вы попытаетесь снова выполнить скрипт, он войдет в блок «если», откроет файл и ничего не прочитает. Например, код не входит в цикл for и, как следствие, не может быть создана переменная, что приводит к ошибке. Вы говорите, что ошибка связана с переменной "c", это может быть связано с тем, что вы написали что-то в текстовом файле, но не более 3 строк.
Я попробовал ваш код и получил это, когда я пишу две строки в текстовом файле:
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
<ipython-input-41-275a763cfa3b> in <module>()
28 print(a, b, c, d)
29
---> 30 main()
<ipython-input-41-275a763cfa3b> in main()
24 c=[3]
25 d=[4]
---> 26 menu(a, b, c, d)
27 def menu(a, b, c, d):
28 print(a, b, c, d)
UnboundLocalError: local variable 'c' referenced before assignment