使用python的if-else语句的问题

使用python的if-else语句的问题,python,if-statement,while-loop,Python,If Statement,While Loop,学习如何创建if-else语句,并努力学习。我不明白最后的结果。如果答案为“N”,则while raining部分应不再有效,并应移到else语句。这确实发生了,但为什么要打印“待在里面等待”?那不是else陈述的一部分 Raining = input("Is it raining outside? Press Y or N") if Raining == "N": print("Go outside") exit i

学习如何创建if-else语句,并努力学习。我不明白最后的结果。如果答案为“N”,则while raining部分应不再有效,并应移到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

呆在里面等着

外面还在下雨吗

呆在里面等着 外面还在下雨吗

呆在里面等着
转到外部

如果,则
其他
部分在时链接到
,而不是
。它们没有根据凹痕对齐
else
表示
,而
表示不同。您应该更正此部分:

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: ")
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语句中中断循环,然后它将不会显示
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循环之外第一次打印
“待在里面等待”
。然后雨下时
==“Y”:
得到评估-这是真的,因为
雨下
仍然是
Y
,因为它还没有改变。它要求在
输入中输入(“外面还在下雨吗?”)
但是继续执行块的其余部分,不管您是输入
Y
还是
N
,并且在最后一个输入下有
打印(“待在里面等待”)
两行。只有在块完成并在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 ()

else
上,而
不在
if
上。google:while..python中的else和第一个
if
可以是removed@F.NiX这适用于“否”,但不适用于“是”。外面在下雨吗?按Y或N:你们呆在里面等外面还在下雨吗?呆在里面等着,谢谢,但我不明白。我复制了那个代码,但是“是”的回答不起作用?它要么没有给出正确的响应,要么在第二个“是”后终止程序。外面在下雨吗?按Y或NY呆在屋里等外面还在下雨吗?看在上帝的份上等一下:)嗨,怎么了?如果你回答Y,你将通过while循环,如果你再次回答Y,你将得到
待在里面…
。如果在循环中回答N,则会得到
等待…
。你没有遇到什么问题吗?两个问题。如果按两次Y键,程序将终止。如果你按Y然后按N,它说看在上帝的份上等待,然后终止。唯一可行的方法是,如果删除“看在上帝的份上等待”else语句,那么Y和N将得到正确的响应。您好,如果您得到了想要的,请修改我的代码以达到您的目标。但代码运行良好。如果按两次Y键,它将按预期终止。您可以删除
if
循环的
else
部分,然后将最后一个
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 ()