我想知道如何将循环包含在多项选择测验中

时间:2016-01-22 20:03:44

标签: python

begin = raw_input('would you like to start')
if begin == 'yes':
    print 'A) awesome'
    print 'B) pretty awesome'
    print 'C) you dont even know'
    print ''
    test = raw_input('How awesome is hayden?: ')
    if test == 'B' or test == 'b':
        print 'correct'
    else:
        if test == 'A' or test == 'a' or test == 'C' or test == 'c':
            print 'incorrect'

细节:一旦用户输入错误答案,程序结束或在第二次回答后遇到错误。我想循环所以在输入“c”或“b”之后它会要求另一个猜测或者他们可以再次回答。请帮忙吗?

3 个答案:

答案 0 :(得分:3)

这是我真正希望python有until循环结构的地方之一... 它没有,所以我们用while做。有很多方法可以编写逻辑 - 这是一个:

test = None
while test.lower() != 'b':
    test = raw_input('How awesome is hayden?:')
    if test.lower() != 'b':
        print 'incorrect'
print 'correct'

另一个选择是使用2个参数iter ...

def get_input():
    return raw_input('How awesome is hayden?:').lower()

for answer in iter(get_input, 'b'):
    print 'incorrect'
print 'correct'

这是有效的,因为当你调用iter(function, sentinal)时,python会调用function(产生结果)直到function返回sentinal,此时它会停止产生更多的值。< / p>

答案 1 :(得分:0)

所以,你想要使用的是一个叫做循环的概念。在这种情况下,您希望用户循环,直到他们输入正确的答案。

这种类型的循环称为&#34;而#34;循环 - 在满足某个条件时继续循环。

因此,您可以编写如下所示的函数,该函数会检查提供的答案是否在正确答案列表中:

def is_correct_answer(answer, correct_answers):
    return answer in correct_answers

然后你可以编写你的程序如下:

answer = None
while not is_correct_answer(answer, ['B', 'b']):
    # your code for getting the answer
    # make sure to set the answer variable to their answer!

需要注意的一件重要事项是确保将答案初始化为不正确的答案,因为循环首先要做的是评估函数,所以如果你开始回答包含&#39; B&#39;或者&#39; b&#39;,循环永远不会运行!

我还鼓励您阅读Python初学者指南,因为您似乎是新手! Here is a good place to start.

答案 2 :(得分:0)

您可以使用while True创建循环,使用break离开循环。

while True:

    test = raw_input('How awesome is hayden?:').lower()

    if test == 'b':
        break

    print 'incorrect'

print 'correct'