运行此代码时,出现错误“NameError:name'w'未定义”
q = open("programma", "r")
q = q.read()
time.sleep(0.5)
print("estrapolazione programma")
a = -1
s = 0
w = [""]
par = [""]
for s in q:
a += 1
if q[a] == ".":
s = w
par.append("".join(s))
del w
else:
w.append(q[a])
print(par)
我不明白为什么它告诉我w
没有在w.append(q[a])
中定义,而它是在上面9行定义的
如果要清除列表
w
而不是del w
,可以使用w.clear()
del w
删除列表,您必须创建列表的新实例才能使用它。其中asw.clear()
清除列表,但不删除列表,可以再次使用因为您在其中一个分支中
del w
,这会删除变量本身,因此如果该分支在任何不是最后一个的迭代中执行,那么下一个迭代将通过尝试在未定义的w
上w.append
或者因为您再次尝试del w
,而中断一半的程序实际上没有意义,你在
q
上迭代,但是你没有使用结果,而是在删除前者之前将w
赋值给s
(你的迭代变量)s
与q[a]
相同,因此您不需要a
,只需直接使用s
,并且通常不需要初始化循环变量,也不应该对其进行签名w
,可以直接使用w.clear()
或del w[:]
w = []
,这并不重要,但在某些情况下确实如此w
初始化为包含空字符串的列表有什么意义,因为您正在连接一个空字符串"".join([])
和"".join([''])
具有相同的结果,并且从不测试它是否为空以下是一些清理工作:
顺便说一句,整个事情都可以写下来
相关问题 更多 >
编程相关推荐