以下代码段的目的是搜索文本文件,然后查找变量“名称”。如果文本文件中的任何地方都存在“名称”,则应将user_new
设置为False
。否则,它在txt文件中不存在,并且user_new
应该为True
。
但是,在两种情况下,user_new都不会设置为任何值,并且会导致错误:“分配前已引用本地变量'user_new'”
with open("accuracy.txt", "r") as search:
lineno = 0
for line in search:
lineno = lineno + 1
if name in line:
user_new = False
break
else:
user_new = True
break
search.close()
print(user_new)
答案 0 :(得分:1)
此代码中可能发生的唯一方法是,如果for循环没有要迭代的内容。这意味着if语句永远不会运行,并且user_new
永远不会定义。
确保accuracy.txt
至少有一行,否则该循环将永远不会运行,因为没有行可循环通过。
如果不可避免的是在文本文件中没有任何行,请考虑使用以下内容检查文件的长度:
if search.read() == "":
user_new = False
答案 1 :(得分:0)
问题有时accuracy.txt
为空,这导致循环永远不会运行,并且user_new
也从未定义。感谢@Joe Allen的回答。