繁体   English   中英

使用python的if else语句的问题

[英]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部分链接到whilewhile不是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")

在此行之后,您的程序将暂停执行并等待输入。 您按YN 对于这种情况,因为您在问题中提出了这个问题,所以假设您此时按下了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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM