2

所以,我正在创建两个随机词生成器,一个基于二元组,另一个基于三元组。在每种情况下,我都设置了一个字典(称为二元组,它有两个嵌套字典或三元组,它有三个嵌套字典)......还有很多其他代码,但这是导致问题的行三元组生成器:

 #generates random phonemes
 def generate_trigramphoneme(phoneme1, phoneme2):
    rand = random.uniform(0,1)

    **for phoneme3 in trigrams[phoneme1][phoneme2]:**
        rand -= trigrams[phoneme1][phoneme2][phoneme3]

        if rand < 0.0: return phoneme3
    return phoneme3

其中变量“phoneme3”会产生本地未绑定错误。

但是,在这里,在我的二元组生成器(有效)中,变量“Following”很好,并且不会产生错误:

def generate_bigramphoneme(phoneme):
    rand = random.uniform(0,1)
    for following in bigrams[phoneme]:
        rand -= bigrams[phoneme][following]
        if rand < 0.0: return following
    return following

我在eli bendersky的网站上查找了python中未绑定的本地错误,这有助于我理解错误,但我仍然不知道如何摆脱它,或者为什么bigram代码不会产生错误......

4

1 回答 1

3

假设您确实在trigrams某处定义了一个,那么您的参数可能trigrams[phoneme1][phoneme2]是一个空的可迭代对象,因此循环永远不会执行并且phoneme3不会被绑定。

于 2012-10-12T21:32:33.827 回答