【发布时间】:2020-02-12 20:08:20
【问题描述】:
这很可能是我的一个错误,因为在开始编码时缺乏技能,但我遇到了以前从未有过的东西,那就是在使用函数并让它们引用其他函数时,变量可以是混淆并产生错误。我需要有人帮助分解正在发生的事情。请帮助并提前感谢您
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()
当我运行代码时,会出现一个错误,上面写着: 回溯(最近一次通话最后): 文件“main.py”,第 30 行,在 main() 文件“main.py”,第 26 行,在 main() 中 菜单(a,b,c,d) UnboundLocalError: 赋值前引用了局部变量 'c'
【问题讨论】:
-
请edit 包含完整的错误回溯
-
旁白:您不需要
==True或elif的整个子句(只需使用else代替)。 -
@G.Anderson 完成
-
Text.txt的内容是什么?您的代码隐含地假定它有 4 行,但鉴于错误表明c未定义,那么它似乎实际上只有两行。 [顺便说一句,编写此逻辑的方法要好得多。] -
以
a为例。如果os.path.exists("Text.txt")返回True,但文件为空,则永远不会分配a。
标签: python function operating-system text-files