raw_input() 会停止无限循环吗?
Does raw_input() stop an infinite while loop?
下面有一小段代码包含 while 循环。
question = raw_input("How are you? > ")
state = True
number = 0
print "Hello"
while True:
if question == "good":
print "Ok. Your mood is good."
state = False
question_2 = raw_input("How are you 2? > ")
elif question == "normal":
print "Ok. Your mood is normal."
elif question == "bad":
print "It's bad. Do an interesting activity, return and say again what your mood is."
else:
print "Nothing"
如果我输入 "normal",程序会打印 Ok。你的心情是正常的。无数次。
但是如果我输入 "good",程序会打印 Ok。你心情正常。 并打印了 question_2 的内容。
为什么question_2 = raw_input("How are you 2? > ")
中的问题没有重复无数次?
得出 raw_input()
停止任何无限 while 循环的结论是否合理?
raw_input()
不会中断循环。它只是等待输入。由于您的 question
没有被第二个 raw_input()
覆盖,您的 if
块将始终以 good
的情况结束。
另一种方法:
answer = None
while answer != '':
answer = raw_input("How are you? (enter to quit)> ")
if answer == "good":
print( "Ok. Your mood is good.")
elif answer == "normal":
print( "Ok. Your mood is normal.")
# break ?
elif answer == "bad":
print( "It's bad. Do an interesting activity, return and say again what your mood is.")
# break ?
else:
print( "Nothing")
# break ?
没有。这不是 停止 循环;它正在主动阻止输入。一旦收到输入,它就不会再被阻塞(这就是为什么你从其他选择中得到无限文本的原因);这些分支中没有阻塞 I/O。
您没有从选项 1 获得大量文本输出的原因是它的评估方式。在循环内部,question
永远不会改变,所以它 总是 将评估为 "good"
并且会不断地问你第二个问题 1.
1:这个是如果确实是while True
;如果它是 while state
,它将停止迭代,因为 state
在随后的 运行 上是 False
。
一旦你回答 "good, the value returned by the second raw_input will be stored in variable question_2 rather than question. So variable question never changes again, but will remain " 好”。所以你会继续点击第二个 raw_input,无论你回答什么。它不会停止你的循环,而是暂停它直到你回答。我认为你也应该好好看看 Alfasin 的评论...
您可以通过使用 break
输出的 else
或 elif
来停止无限循环。希望有帮助! :D
示例:
while True:
if things:
#stuff
elif other_things:
#other stuff
#maybe now you want to end the loop
else:
break
下面有一小段代码包含 while 循环。
question = raw_input("How are you? > ")
state = True
number = 0
print "Hello"
while True:
if question == "good":
print "Ok. Your mood is good."
state = False
question_2 = raw_input("How are you 2? > ")
elif question == "normal":
print "Ok. Your mood is normal."
elif question == "bad":
print "It's bad. Do an interesting activity, return and say again what your mood is."
else:
print "Nothing"
如果我输入 "normal",程序会打印 Ok。你的心情是正常的。无数次。
但是如果我输入 "good",程序会打印 Ok。你心情正常。 并打印了 question_2 的内容。
为什么question_2 = raw_input("How are you 2? > ")
中的问题没有重复无数次?
得出 raw_input()
停止任何无限 while 循环的结论是否合理?
raw_input()
不会中断循环。它只是等待输入。由于您的 question
没有被第二个 raw_input()
覆盖,您的 if
块将始终以 good
的情况结束。
另一种方法:
answer = None
while answer != '':
answer = raw_input("How are you? (enter to quit)> ")
if answer == "good":
print( "Ok. Your mood is good.")
elif answer == "normal":
print( "Ok. Your mood is normal.")
# break ?
elif answer == "bad":
print( "It's bad. Do an interesting activity, return and say again what your mood is.")
# break ?
else:
print( "Nothing")
# break ?
没有。这不是 停止 循环;它正在主动阻止输入。一旦收到输入,它就不会再被阻塞(这就是为什么你从其他选择中得到无限文本的原因);这些分支中没有阻塞 I/O。
您没有从选项 1 获得大量文本输出的原因是它的评估方式。在循环内部,question
永远不会改变,所以它 总是 将评估为 "good"
并且会不断地问你第二个问题 1.
1:这个是如果确实是while True
;如果它是 while state
,它将停止迭代,因为 state
在随后的 运行 上是 False
。
一旦你回答 "good, the value returned by the second raw_input will be stored in variable question_2 rather than question. So variable question never changes again, but will remain " 好”。所以你会继续点击第二个 raw_input,无论你回答什么。它不会停止你的循环,而是暂停它直到你回答。我认为你也应该好好看看 Alfasin 的评论...
您可以通过使用 break
输出的 else
或 elif
来停止无限循环。希望有帮助! :D
示例:
while True:
if things:
#stuff
elif other_things:
#other stuff
#maybe now you want to end the loop
else:
break