所以我的问题是:我在while循环中使用if-elif-else子句创建了一个while。 我提示用户输入y或n,不区分大小写。 但是我希望循环一直循环,直到他们输入y,Y,n,N来打印出相应的字符串。 但是,当我输入任何字符串或整数时,它会像我想要的那样继续循环,但是当我输入y,Y,n,N时,它仍会继续循环,并且也不会打印我想要的字符串。
1
2
3
4
5
6
7
8
9
10
11
12var = 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:")
将输入移至while循环中,并在顶部(循环之前)定义var =
您的if条件将始终跳至input(...)
是的,我想知道为什么他们不会评估。 如果删除输入功能,则可以得到所需的条件进行打印。 但是,它不会循环。
因为您正在检查输入是yes还是no,并且仅在输入不为while时输入while主体,所以您正在检查输入是否为yes / no(永远不会为真)。
因此,我将var = input(" Enter Y / N:")放入else子句中,它可以正常工作。 谢谢
根据您的帖子,您似乎希望有机会根据用户的输入跳过循环。为此,您可以使用以下算法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14var = 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']这样的条件写?
1
2
3
4
5
6
7
8
9
10
11var = 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")
我们可以将else语句切换为更明确的内容,而while语句也可以,但是您可以看到我们的代码似乎有更多的切入点。
唯一的问题是,我们使用冗余例程增加了切入点。
我认为在循环内实现输入更好,更易读。
对于python 3.x
1
2
3
4
5
6
7
8while 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
对于python 2.x
1
2
3
4
5
6
7
8while 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}。区分大小写是仅对用户有用的定义,大小写将产生相同的答案。因此,您可以降低或升高所有输入来简化条件
对于python 3.x
1
2
3
4
5
6
7
8while True :
var = input("Enter Y/N:").lower()
if var == 'y':
print("You said yes")
break
elif var == 'n':
print("You said no")
break
对于python 2.x
1
2
3
4
5
6
7
8while True :
var = raw_input("Enter Y/N:").lower()
if var == 'y':
print("You said yes")
break
elif var == 'n':
print("You said no")
break
是的,那也是另一种解决方案。 所以我可以在if语句中创建一个列表?
没有得到你的伴侣! 你可以改写吗?
我的问题已得到回答,因为您显然创建了一个列表并执行了大声笑。 谢谢