[英]Problems with if else statements using python
学习如何创建 if else 语句并苦苦挣扎。 我不明白最终的输出。 如果答案是“N”,那么下雨部分应该不再有效,它应该移动到 else 语句。 那确实发生了,但为什么它会打印出“留在里面等待”? 这不是 else 语句的一部分吗?
Raining = input("Is it raining outside? Press Y or N")
if Raining == "N":
print("Go outside")
exit
if Raining == "Y":
print()
print("Stay inside and wait")
print()
while Raining == "Y":
Raining = input("Is it still raining outside?")
print()
print("Stay inside and wait")
else:
print("Go outside")
exit ()
输出:
外面下雨了吗? 按 Y 或 NY
留在里面等待
外面还在下雨吗?Y
呆在里面等待 外面还在下雨吗?N
呆在里面等 出去
else
部分链接到while
, while
不是if
。 它们没有根据缩进对齐。 else
for while
意味着不同。 你应该更正这部分:
if Raining == "Y":
print()
print("Stay inside and wait")
print()
while Raining == "Y":
Raining = input("Is it still raining outside?")
print()
print("Stay inside and wait")
else:
print("Go outside")
exit ()
改写如下。
Raining = input("Is it raining outside? Press Y or N")
while Raining == "Y":
print("Stay inside and wait")
print()
Raining = input("Is it still raining outside?")
print()
print("Stay inside and wait")
print("Go outside")
Raining = input("Is it raining outside? Press Y or N: ")
if Raining == "N":
print("Go outside")
exit
if Raining == "Y":
while Raining == "Y":
print()
print("Stay inside and wait")
print()
Raining = input("Is it still raining outside?")
else:
print("\nGo outside")
exit ()
这是我对您的代码的建议。 你也可以考虑这个:
Raining = input("Is it raining outside? Press Y or N: ")
while Raining == 'Y':
print()
print("Stay inside and wait")
print()
Raining = input("Is it still raining outside?")
if Raining == 'Y':
print()
print("Stay inside and wait")
break
else:
print("Go outside")
如果第一个输入是“Y”,您可以在 if/else 语句中中断循环,然后它不会显示while
循环的else
部分。
而不是只是向你扔代码,我实际上会告诉你发生了什么,因为我没有看到任何人解释发生了什么。
让我们一步一步来。
Raining = input("Is it raining outside? Press Y or N")
在此行之后,您的程序将暂停执行并等待输入。 您按Y
或N
。 对于这种情况,因为您在问题中提出了这个问题,所以假设您此时按下了Y
if Raining == "N":
print("Go outside")
exit
它不会进入这个块,因为Raining == 'Y'
if Raining == "Y":
print()
print("Stay inside and wait")
print()
while Raining == "Y":
Raining = input("Is it still raining outside?")
print()
print("Stay inside and wait")
else:
print("\nGo outside")
exit ()
不,事情是这样的。 Raining == "Y"
是真的,所以它进去了。 程序第一次在 while 循环之外打印"Stay inside and wait"
。 然后while Raining == "Y":
被评估时 - 这是真的,因为Raining
仍然是Y
,因为它还没有改变。 它要求在输入中input("Is it still raining outside?")
然后继续执行块的其余部分,不管你是输入Y
还是N
并且下面有两行print("Stay inside and wait")
最后输入。 只有在块完成并循环回到while Raining == "Y":
它意识到Raining
不再是Y
而是已更改为N
因此它进入else
块。
要解决此问题,您可能希望将输出放在更合适的位置。
if Raining == "N":
print("Go outside")
exit
if Raining == "Y":
while Raining == "Y":
print()
print("Stay inside and wait")
Raining = input("Is it still raining outside?")
else:
print("Go outside")
exit ()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.