如何重复循环直到给出有效答案?

时间:2017-08-15 00:52:20

标签: python while-loop

所以我编写了一个函数,它取一个电池变量的值。如果价值是"是"我希望它能做点什么。或"不"。如果值不是这些答案,我希望它再次无限次地询问它。这是我的代码,以防我的描述不好。

def batterie_answer():
    batteries = raw_input("yes or no > ").lower()
    print batteries
    while True:
        if batteries != "yes" or batteries != "no":
            print "Please respond yes or no"
            raw_input("> ")
            continue
        elif batteries == "yes":
            print "batteries taken!"
            items["batteries"] = 1
            break
        elif batteries == "no":
            print "Probably a wise choice. Save some space!"
            break

batterie_answer()

3 个答案:

答案 0 :(得分:2)

您需要将作业移至while循环内或添加其他作业。您还需要将or更改为and。您还需要删除未将值分配给raw_input变量的额外batteries行。

def batterie_answer():
    while True:
        batteries = raw_input("yes or no > ").lower()
        print batteries
        if batteries != "yes" and batteries != "no":
            print "Please respond yes or no"
            continue
        elif batteries == "yes":
            print "batteries taken!"
            items["batteries"] = 1
            break
        elif batteries == "no":
            print "Probably a wise choice. Save some space!"
            break

batterie_answer()

答案 1 :(得分:1)

你的while循环不包含原始raw_input()命令,因此在第一次迭代后它永远不会要求输入。相反,它只会一遍又一遍地打印出答案。

while True向上移动几行,使其包含raw_input()命令。

答案 2 :(得分:1)

问题出在你的if语句中。无论给出什么值都无关紧要,条件总是等于真,它会再次询问一个值。例如,如果值为“是”,那么条件将为(false or true),等于为真,如果值为“否”则为(true or false),如果值为(true or true),则等于为真就像“asdf”那样它会if batteries != "yes" and batteries != "no": 也等同于真。

修复此更改“或”运算符到“和”运算符。

random.nextInt(n)