此问题在此处已有答案:
Invalid syntax on '=' when using global(1个答案)
Python - Change variable outside function without return(4个答案)
4小时前关门了。
我目前正在尝试制作一个hangman game。我已经在任何函数之外定义了变量lives,但是当我尝试在start_game函数中使用它时,编辑器会说变量已经定义但从未使用过。然而当我尝试将它声明为全局变量时,无论它是在函数内部还是外部,它都会给我一个“invalid syntax”错误-特别是在赋值运算符“=”处。
import random
words = "dog cat log hog etc" # <-- just a huge string of a bunch of words
words = words.split()
word = random.choice(words)
# Difficulties: Easy:12 Medium:9 Hard:6
lives = 0
current = "_" * len(word)
def gameLoop():
while current != word and lives > 0:
print("Guess a letter. If you wish to exit the game, enter 'exit'")
input("")
print(lives)
def start_game():
while True:
print("Welcome to Hangman! What game mode would you like to play? Easy, medium, or hard?")
game_mode = str.lower(input(""))
if game_mode == "easy":
lives = 12
gameLoop()
break
elif game_mode == "medium":
lives = 9
gameLoop()
break
elif game_mode == "hard":
lives = 6
gameLoop()
break
start_game()
2条答案
按热度按时间ffx8fchx1#
当我写这个问题的时候,我意识到我做错了什么,所以我决定继续自己回答这个问题。
当你把一个变量定义为全局变量时,你不想像这样当场给这个变量赋值:
字符串
这会给予你一个错误,为什么?当你想定义一个全局变量时,你告诉计算机,“嘿,这个变量是全局使用的,以上代码行的问题是,您也在为变量赋值,而此时您应该做的只是告诉计算机该变量是全局变量。如果您想为变量赋值(无论是第一次还是重新赋值),那么您需要在不同的代码行上赋值。
当我查阅这篇文章时,我没有发现任何明确说明这一点的内容,所以我希望这篇文章能帮助那些不熟悉python编码的人,或者像我一样忘记了它是如何工作的人。
n1bvdmb62#
首先,
global
语句是一个声明语句,而不是一个可执行语句,它只是告诉解释器在模块名称空间中查找,而不是在函数调用名称空间中查找,它只需要在函数内部使用。在外部,局部和全局名称空间是相同的(模块名称空间),因此
global
语句什么也不做。该语句必须是关键字
global
,后跟逗号分隔的名称列表,才能被视为全局名称。如果要为任何名称赋值,无论是否为全局名称,都必须在单独的赋值语句中执行此操作。你可能想要一些更像下面的代码,它会“工作”(我意识到这只是一个部分程序在开发中),因为你想要它。我修正了缩进,以符合PEP 8,因为我的老眼睛发现它太难阅读代码,否则!