我在python中的示波器有问题,变量称为全局,但仍然会出现错误



即使将变量声明为global

import random
def wordRandomizer(categorie):
    randomNum = random.randint(0, len(categorie))
    #Picks a random number to pick a word from the list
    choosenWord = categorie[randomNum]
    #actually chooses the word
    global hidden_word
    #Globals the variable that I have the problem with
    hidden_word = "_" * len(choosenWord)
    return choosenWord
def wordFiller(word,letter):
    hidden_wordTemp = hidden_word.split()
    for i in range(len(word)):
        if word[i] == letter:
            hidden_wordTemp[i] = letter
        else:
            pass
    hidden_word = ''.join(hidden_wordTemp)
    print(hidden_word)
wordFiller(wordRandomizer(['book', 'bottle', 'door']), 'o')

错误输出如下:

Traceback (most recent call last):
  File "C:UsersamitkOneDriveSchool2018-2019 טCyberHangman.py", line 295, in <module>
    wordFiller(wordRandomizer(['book', 'bottle', 'door']), 'o')
  File "C:UsersamitkOneDriveSchool2018-2019 טCyberHangman.py", line 286, in wordFiller
    hidden_wordTemp = hidden_word.split()
UnboundLocalError: local variable 'hidden_word' referenced before assignment

由于某种原因,它说即使分配了局部变量,也会在分配之前引用本地变量,并且"全局"

hidden_word wordfiller函数仍然是该函数的局部变量。尝试在该功能中将其全局化。

def wordFiller(word,letter):
   global hidden_word
   hidden_wordTemp = hidden_word.split()
   // etc

另外,randint(start, end)功能包括开始和结束,因此您可以生成最终值。那将超出您的数组范围。改用这个。

  randomNum = random.randint(0, len(categorie) - 1)

最后,split()可能没有做您认为的事情。如果您想要字符列表,请改用list(str)

 hidden_wordTemp = list(hidden_word)

正如错误消息所述,您在分配之前引用了 hidden_word

def wordFiller(word,letter):
    hidden_wordTemp = hidden_word.split()

wordFilter的范围内,您从不初始化hidden_word。在使用变量之前,请确保初始化您的变量。

相关内容

  • 没有找到相关文章