0
전역 변수를 포함하고있는이 하나에 중점을두고 있습니다. 어떻게 작성했는지는 알 수 있습니다. 작동하지 않습니다. 내가 당신에게 내 코드를 보여 드리죠 :전역 변수를 사용하는 방법과 전역 변수를 올바르게 정의하는 방법은 무엇입니까?
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
에 아무 것도 추가하지 않는 이유는 무엇입니까? 당신의 도움을 주셔서 감사합니다!
side comment : 전역 변수는 잘못된 프로그래밍입니다. 나는 그들을 사용하지 않을 것이다. 함수에 인수로'prefix'를 추가하지 않으시겠습니까? –