所以这就是我正在努力解决的问题。我希望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...')
答案 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只是raw_input
。 #2是d1
是某种形式的是或否。在进入循环之前你无法知道这一点,所以你不能直接把它放在循环的条件下。这为您提供了两个选项:
设置一个变量来表示条件并初始化它以确保循环的第一次迭代:
found = False
while not found:
d1 = raw_input(...)
if d1.lower() in ('yes', 'no'):
found = False
else:
print("Mmmm")
print("Good, let's begin.")
满足条件时突破无限循环:
while True:
d1 = raw_input(...)
if d1.lower() in ('yes', 'no'):
break
print("Mmmm")
print("Good, let's begin.")
我认为,对于您提供的简单示例,第二种选择更优雅。第一个选项对于更复杂的情况非常有用,在这种情况下,您需要在退出循环之前执行更多不相关的操作。它允许三种类型的响应来评估条件: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