在 python 中使用 while 循环、输入和字符串时遇到问题



我正在学习python并练习我的技能,我制作一个简单的基于文本的冒险游戏。

在游戏中,我想问玩家他们是否准备好开始了。我通过创建一个 begin(( 函数来做到这一点:

def begin():
print(raw_input("Are you ready to begin? > "))
while raw_input() != "yes":
if raw_input() == "yes":
break
print(start_adventure())
else: 
print("Are you ready to begin? > ")
print(begin())

在我的代码中下面是函数 start_adventure((

def start_adventure():
print("Test, Test, Test")

当我运行程序时,它会启动,我会询问我是否准备好开始。然后它只是无限循环,如果我完全关闭Powershell并重新启动Powershell,我只能退出程序。我做错了什么?如何在玩家输入"是"后让循环停止?

你期望这样做做什么?解决问题的方法是尝试理解代码的作用,而不是简单地将东西放在一起。(别担心;至少有80%的人曾经处于那个阶段!

顺便说一句,我强烈建议使用Python 3而不是Python 2;他们制作了新版本的Python,因为Python 2充满了非常奇怪,令人困惑的东西,例如input导致安全漏洞和10 / 4等同于2


你想让它做什么?

  • 反复询问用户是否准备好开始,直到他们回答"yes"
  • 呼叫start_adventure().

还行。让我们把到目前为止所拥有的东西放到一个函数中:

def begin():
while something:
raw_input("Are you ready to begin? > ")
start_adventure()

这里有很多差距,但这是一个开始。目前,我们正在获取用户的输入并将其丢弃,因为我们没有将其存储在任何地方。让我们解决这个问题。

def begin():
while something:
answer = raw_input("Are you ready to begin? > ")
start_adventure()

这已初具规模。我们只想继续循环while answer != "yes"...

def begin():
while answer != "yes":
answer = raw_input("Are you ready to begin? > ")
start_adventure()

万岁!让我们看看这是否有效!

Traceback (most recent call last):
File "example", line 2, in <module>
while answer != "yes":
NameError: name 'answer' is not defined

嗯。。。我们尚未为answer设置值。为了使循环运行,它必须是不等于"yes"的东西。让我们一起去"no"

def begin():
answer = "no"
while answer != "yes":
answer = raw_input("Are you ready to begin? > ")
start_adventure()

这将起作用!

Python 3 解决方案

您不应该多次调用raw_input()。只需实例化x然后等待用户输入Y即可调用start_adventure函数。这应该可以帮助您入门:

def start_adventure():
print('We have started!')
#do something here

def begin():
x = None
while x!='Y':
x = input('Are you ready to begin (Y/N)?')
if x=='Y':
start_adventure()
begin()
  1. 您的原始输入函数(我假设它工作正常(永远不会分配给变量。相反,您可以在 print 语句中调用它,打印它的结果,然后在 while 循环条件中再次调用它。

  2. 您实际上永远不会满足 while 循环条件,因为您的输入未分配给变量。分配Raw_input("你准备好开始了吗?>"( 到变量以存储输入。然后 while 循环使用变量。确保在 while 循环中,当满足条件时,您将变量重置为其他变量。

  3. 你的程序流也是错误的,你需要在while循环中调用你的原始输入函数。这将更改 while 循环条件,以便在满足条件(用户键入"yes"(时,它不会无限循环。希望这有帮助!

您需要的代码形式示例:

//initialize the condition to no value
condition = None;
#check the condition
while condition != "yes"
#change the condition here based on user input **inside the loop**
condition = raw_input("are you ready to begin? >")
if condition == "yes":
#condition is met do what you need
else:
#condition not met loop again 
#nothing needs to go here to print the message again

相关内容

  • 没有找到相关文章

最新更新