我的节目包含了很多,所以我不会厌烦你的细节,如果你发现其他任何问题,我还没有,你不需要指出他们除非你有严重的强迫症。以下是与我提出的问题相关的计划部分。
def LettersIntoCode():
cluesFile = open("clues.txt", 'r+')
cluesLines = cluesFile.readlines()
cluesFile.close()
clues = {}
for line in cluesLines:
clues[line[1]] = line[0]
CodedFile = open('words.txt')
print()
for line in CodedFile:
***WordsWithChanges = (''.join(clues.get(c,c) for c in line.strip('\r\n')))***
print(WordsWithChanges)
CodedFile.close()
def GameCompletion():
SolvedFile = open("solved.txt", 'r')
***while WordsWithChanges != SolvedFile***:
MenuChoice()
SolvedFile.close()
当被调用时,弹出这个错误:
while WordsWithChanges != SolvedFile:
NameError: global name 'WordsWithChanges' is not defined
现在除了Bold和Italic之外什么都不用担心,尽管你可能会发现其他东西对于理解目的很有用。我已经尝试过global WordsWithChanges
,但大多数人都知道这不起作用,感谢你的合作,如果你需要任何东西就可以问!
答案 0 :(得分:0)
如果你想避免使变量成为全局变量,你可以做的是从原始函数返回它并在你想要使用它的第二个函数中调用该函数,设置一个等于返回值的新变量。 / p>
答案 1 :(得分:0)
对于快速而肮脏的修复,您可以在定义原始变量时使用global
声明:
global WordsWithChanges
但这被认为是非常糟糕的做法,我不会推荐它。
要真正解决您的问题:这种情况正在发生,因为如果您在范围内创建变量,则仅在该范围内可用。因此,变量可以是本地的,但不是全局定义的。正如我在评论中所说,这表明你应该重新考虑程序逻辑。