请求输入的 Python 函数不执行 if 语句 - 未显示错误



我彻底搜索了我问题的答案,但找不到任何可以解释我的结果的东西。我真的希望你们中的任何人都能为我指出正确的方向。


目前,我正在尝试使用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(


为您的文本冒险阅读其他好东西,以避免其他初学者陷阱:

  • 如何复制或克隆列表
  • 如何将字符串解析为浮点数或整数
  • 如何从列表中随机选择项目

相关内容

  • 没有找到相关文章

最新更新