我坚持这个包含全局变量的那个,我知道,我如何创建它们的方式,它只是不起作用。让我告诉你我的代码:
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
添加任何内容?谢谢你的帮助!
答案 0 :(得分:0)
您必须使用global suffix_map
和global prefix
。