2017-08-30 91 views
3

所以这就是我正在努力的。我想要“是”和“否”等于相同的事物并结束循环(我还没有开始),但是当输入的内容不是“是”或“否”时,它会再次循环问题,直到输入yes或no。我很难找出如何做到这一点,我仍然在学习,而循环对我来说是新的领域。循环选择题?

我使用的是2.7

d1 = raw_input('Please answer with Yes or No.\n') 
if d1 == 'Yes': 
    print('Good, let\'s begin.') 
elif d1 == 'No': 
    print('Good, let\'s begin.') 
if d1 == 'yes': 
    print('Good, let\'s begin.') 
elif d1 == 'no': 
    print('Good, let\'s begin.') 
else: 
    ps('Mmmmm...') 
+0

你确定它是Python2.7吗?因为Python3中的print()。但是你使用raw_input - 它来自Python2.7 – AndMar

+0

从Python 2.7.4开始,你可以在括号中使用'print()',就像在python 3.x中一样 – MUYUM

+0

'from __future__ import print_function'是隐含的。 –

回答

1

的两件事情写任何种类的循环时,要记住,尤其是while环路

  1. 我是什么遍历?
  2. 循环结束了什么?更具体地说,我可以立即知道这种情况,还是必须先运行循环?

#1就是在这种情况下raw_input。 #2是当d1是某种形式的“是”或“否”时。在进入循环之前,你无法知道这一点,所以你不能直接将其置于循环的状态。这使你有两个选择:

  1. 设置一个变量来表示病情并初始化,以确保循环的第一次迭代:

    found = False 
    while not found: 
        d1 = raw_input(...) 
        if d1.lower() in ('yes', 'no'): 
         found = False 
        else: 
         print("Mmmm") 
    print("Good, let's begin.") 
    
  2. 歇了一个无限循环的,当你的病情满足:

    while True: 
        d1 = raw_input(...) 
        if d1.lower() in ('yes', 'no'): 
         break 
        print("Mmmm") 
    print("Good, let's begin.") 
    

我认为,对于简单的例子,你现在,第二个选项有点更优雅。第一个选项对于更复杂的情况很有用,在退出循环之前需要做更多不相关的事情。它允许评估条件的三种类型的响应:真,假,以及其中之一。第二个版本只支持前两个,这对你的情况更加简化。

我建议把输入处理后的命令放在循环之外(用print("Good, let's begin.")表示)。他们真的与循环无关,所以不应该成为它的一部分。

此外,如果它们包含单引号,则在您的字符串周围使用双引号。这是Python有两种类型的引号的很大一部分原因。

4

你可以使用while循环不已:

while True: # Endless While Loop 

    d1 = raw_input('Please answer with Yes or No.\n').upper() 

    if(d1 == 'YES'): 
     print('Good, let\'s begin.') 
     break       # Exits While Loop 
    elif(d1 == 'NO'): 
     print('Good, let\'s begin.') 
     break       # Exits While Loop 
    else: 
     print('Mmmmm... Do something...') 

希望它能帮助!

+4

'if d1 in('YES','NO'):'会更好 – kuro

+1

...或者'd1.lower()in('yes' ,'no')' – PRMoureu

6

试试这个:

while True: 
    d1 = input('Please answer with Yes or No.\n') 
    if d1.lower() in ('yes', 'no'): 
     print('Good, let\'s begin.') 
     break 
    else: 
     print('MMMMmm') 
+1

与其他答案一样,'if('yes','no')中的d1.lower()是一个好的选择。 –

+0

@MadPhysicist是的,你是对的 – AndMar

0

这是问题的同时简单。尝试这个。

while True: 
    d1 = raw_input('Please answer with Yes or No.\n') 
    if d1 in ('Yes','No'): 
     print('Good, let\'s begin.') 
     break