在循环选择多项问题时?

时间:2017-08-30 05:31:17

标签: python python-2.7 while-loop

所以这就是我正在努力解决的问题。我希望Yes和No两者都相同,并且结束循环(我尚未开始),但是当输入的内容不是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...')

4 个答案:

答案 0 :(得分:5)

试试这个:

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 :(得分: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...')

希望它有所帮助!

答案 2 :(得分:1)

编写任何类型的循环时要记住的两件事,尤其是while循环

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

    #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.")
      
    3. 我认为,对于您提供的简单示例,第二种选择更优雅。第一个选项对于更复杂的情况非常有用,在这种情况下,您需要在退出循环之前执行更多不相关的操作。它允许三种类型的响应来评估条件:true,false和其中之一。第二个版本仅支持前两个版本,更适合您的情况。

      我建议将输入处理后的命令(由print("Good, let's begin.")表示)放在循环外部。它们实际上与循环无关,因此不应该是循环的一部分。

      另外,如果字符串包含单引号,请在字符串周围使用双引号。这是Python有两种类型引用的主要原因。

答案 3 :(得分:0)

问题很简单。试试这个。

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