Я абсолютно не замечаю что-то основное здесь ... Я пытаюсь передать возвращение функции (список списков) в другую функцию в качестве аргумента. Когда я компилирую, я получаю сообщение об ошибке, что переменная gameGridWords не определена.Передача функции в другую функцию в python
Любая помощь была бы принята с благодарностью!
Это функция, которая возвращает gameGridWords:
# Populates the tile grid with random word pairs
###########################################################################
def gridWords():
# Picks 18 random words from text file to a list, doubles list and shuffles it, returns a list with 18 pairs of words
words = [line.strip() for line in open("words.txt", 'r')]
randomWords=[]
for i in range(0, 18):
element=random.randint(0, len(words)-1)
randomWords.append(words[element])
randomWords.extend(randomWords)
randomWordPairs=randomWords
random.shuffle(randomWordPairs)
# Populates the game grid with word pairs
gameGridWords=[]
for row in range(6):
columnls=[]
for column in range(6):
columnls.append(randomWordPairs[0])
del randomWordPairs[0]
gameGridWords.append(columnls)
#print (gameGridWords)
return gameGridWords
Это функция, которая генерирует ошибку:
# Draws the game grid and fills it with 18 pairs of random words
###########################################################################
def drawGrid(gameGridWords, revealed=True):
# Background color
gameDisplay.fill(BLACK)
# Draws the grid with gray tiles and populates it with random word pairs
for row in range(6):
for column in range(6):
if not revealed:
color = GRAY
pygame.draw.rect(gameDisplay,color,[(MARGIN + WIDTH) * column + MARGIN,(MARGIN + HEIGHT) * row + MARGIN,WIDTH,HEIGHT])
else:
word_display(gameGridWords[row][column], BLACK, row, column)
"""
# Fills tiles with blue
for row in range(6):
for column in range(6):
if grid[row][column] == 1:
color = BLUE
pygame.draw.rect(gameDisplay,color,[(MARGIN + WIDTH) * column + MARGIN,(MARGIN + HEIGHT) * row + MARGIN,WIDTH,HEIGHT])
"""
timer()
tryCounter()
#pygame.display.update()
Я называю gridWords() внутри моей gameLoop() функцию вне моего фактического время петля.
Я называю drawGrid() в моем gameLoop() внутри цикла в то время как с: drawGrid (gameGridWords, True) Ошибка я получаю следующим образом:
TraceBack (самый последний вызов последнего): Файл «C: \ Users \ Милета Nikoletic \ OneDrive \ Eclipse, рабочая область \ Python \ P-UPPGIFT DD1316 \ Память \ test6.py "строка 440, в gameIntro()
Файл" C: \ Users \ Милета Nikoletic \ OneDrive \ Eclipse, рабочее пространство \ Python \ P-UPPGIFT DD1316 \ Memory \ test6.py ", строка 192, в кнопке gameIntro (" Play (пробел) ", 150,400,250,50, GREY, BLUE, action =" play ")
Файл" C: \ Users \ Mileta Nikoletic \ OneDrive \ Eclipse workspace \ Python \ P-UPPGIFT DD1316 \ Memory \ test6.py ", строка 154, в кнопке gameLoop()
Файл« C: \ Users \ Mileta Nikoletic \ OneDrive \ Eclipse workspace \ Python \ P- UPPGIFT DD1316 \ Память \ test6.py», строка 423, в gameLoop
drawGrid (gameGridWords, True) NameError: название 'gameGridWords' не определен
Если я прошел gameGridWords в drawGrid, чем я предполагаю, что gameGridWords будет определен?
Благодарим за ваше терпение!
Вы можете включить ошибку в свой пост? – Marqin
Как насчет вызова 'gridWords()', который заполняет 'gameGridWords'? –
'drawGrid (gridWords())'? –