我被困在这个包含全局变量的问题上,我知道,我如何将它们装箱的方式,它只是不起作用。让我向您展示我的代码:
suffix_map = {}
prefix = ()
def markov_body(file, order, header_text, header = True):
start = open(file)
if header:
for line in start:
if line.startswith(header_text):
break
for line in start:
for word in line.rstrip().split():
global prefix
if len(prefix) < order:
prefix += (word,)
return
try:
suffix_map[prefix].append(word)
except KeyError:
suffix_map[prefix] = [word]
prefix = shifted(prefix, word)
def shifted(t, word):
return t[1:] + (word,)
def markov_text(n):
begin = random.choice(list(suffix_map.keys()))
for i in range(n):
suff = suffix_map.get(begin)
if suff == None:
return markov_text(n-i)
word = random.choice(suff)
print(word, end = "")
begin = shifted(begin, word)
print(markov_text(100))
global
变量是 prefix
和 suffix_map
。第一个问题是,如果它是全局的并且在方法之外定义,为什么我必须再次将其定义为 for 循环中的global
?第二个问题是:为什么根本不向prefix
和suffix_map
添加任何东西?感谢您的帮助!
你将不得不使用 global suffix_map
和 global prefix
.