在Python中使用while循环打印输出字符串

时间:2015-10-17 02:09:48

标签: python loops while-loop

所以我的问题是:我在 while 循环中使用 if-elif-else 子句创建了。我提示用户输入y或n,不区分大小写。但我希望循环保持循环,直到它们输入y,Y,n,N来打印出相应的字符串。但是当我输入任何字符串或整数时,它会像我想要的那样循环,但当我输入y,Y,n,N时,它仍然保持循环并且不打印我想要的字符串。

var = input("Enter Y/N:")


while var != 'y' or var != 'Y' or var != 'n' or var != 'N' :
    if var == 'y' or var == 'Y' :
        print("You said yes")
        break
    elif var == 'n' or var == 'N':
        print("You said no")
        break
    else:
        input("Enter Y/N:")

1 个答案:

答案 0 :(得分:2)

根据您的帖子,您似乎希望有机会根据用户的输入跳过循环。为此,您可以使用此算法:

var = input("Enter Y/N:")
if var in ['y', 'Y']:
    print("You said yes")
elif var in ['n', 'N']:
    print("You said no")
else:
    while True :
        var = input("Enter Y/N:")
        if var in ['y', 'Y']:
            print("You said yes")
            break
        elif var in ['n', 'N']:
            print("You said no")
            break

为什么不用var not in ['y', 'Y', 'n', 'N']之类的条件写

var = input("Enter Y/N:")
if var in ['y', 'Y']:
    print("You said yes")
elif var in ['n', 'N']:
    print("You said no")
while var not in ['y', 'Y', 'n', 'N']:
    var = input("Enter Y/N:")
    if var in ['y', 'Y']:
        print("You said yes")
    elif var in ['n', 'N']:
        print("You said no")

我们可以将其他语句切换为更明确的语句,这也会有效,但正如您所看到的,我们的代码似乎有更多的分界点。 唯一的问题是我们通过冗余例程增加了切点。

在我看来,在循环中实现输入更好,更具可读性。

for python 3.x

while True :
    var = input("Enter Y/N:")
    if var in ['y', 'Y']:
        print("You said yes")
        break
    elif var in ['n', 'N']:
        print("You said no")
        break

for python 2.x

while True :
    var = raw_input("Enter Y/N:")
    if var in ['y', 'Y']:
        print("You said yes")
        break
    elif var in ['n', 'N']:
        print("You said no")
        break

现在我们有一个非常小的代码做同样的事情。

我也注意到你只想阅读{y,n}字母。区分大小写的定义仅对用户有用,案例将产生相同的答案。因此,您可以降低或提高所有输入以简化条件

for python 3.x

while True :
    var = input("Enter Y/N:").lower()
    if var == 'y':
        print("You said yes")
        break
    elif var == 'n':
        print("You said no")
        break

for python 2.x

while True :
    var = raw_input("Enter Y/N:").lower()
    if var == 'y':
        print("You said yes")
        break
    elif var == 'n':
        print("You said no")
        break