我彻底搜索了我问题的答案,但找不到任何可以解释我的结果的东西。我真的希望你们中的任何人都能为我指出正确的方向。
目前,我正在尝试使用Python 3编写基于文本的冒险游戏,以便更好地理解该语言。
在这样做的时候,我创建了一个函数,该函数应该要求用户输入并根据用户的输入打印特定的语句。如果用户输入无效,则函数应继续请求输入,直到有效。
不幸的是,该函数似乎只不断请求输入,而从未在函数中执行 if/elif 语句。由于没有显示任何错误,我目前不知道为什么会这样......
print("If You want to start the game, please enter 'start'." + "n" +
"Otherwise please enter 'quit' in order to quit the game.")
startGame = True
def StartGame_int(answer):
if answer.lower() == "start":
startGame = False
return "Welcome to Vahlderia!"
elif answer.lower() == "quit":
startGame = False
return "Thank You for playing Vahlderia!" + "n" + "You can now close
the window."
else:
return "Please enter either 'r' to start or 'q' to quit the game."
def StartGame():
answ = input("- ")
StartGame_int(answ)
while startGame == True:
StartGame()
你落入了范围陷阱:你正在函数内部创建一个新的变量startGame
,该变量在你离开它后被丢弃。相反,您需要修改全局的:
def StartGame_int(answer):
global startGame # you need to specify that you want to modify the global var
# not create a same-named var in this scope
# rest of your code
其他 SO 问题可能会引起人们的兴趣:
- Python 作用域规则
- 要求用户输入,直到他们给出有效的响应
- 使用全局关键字
和我一直以来的最爱:
- 如何调试小程序 以便您能够调试自己的代码。
最后一个将帮助您弄清楚为什么您返回的文本没有打印出来,为什么if
不适用于'r'
或'q'
以及您偶然遇到的任何其他问题。它还会告诉你你的if
确实被执行了;o(
为您的文本冒险阅读其他好东西,以避免其他初学者陷阱:
- 如何复制或克隆列表
- 如何将字符串解析为浮点数或整数
- 如何从列表中随机选择项目