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

Python 如何重复循环直到给出有效答案?,python,while-loop,Python,While Loop,所以我编写了一个函数,它取一个变量的值。如果值为“是”或“否”,我希望它做一些事情。如果值不是这些答案中的任何一个,我希望它再次无限次地询问它。这是我的代码,以防我的描述不好 def batterie_answer(): batteries = raw_input("yes or no > ").lower() print batteries while True: if batteries != "yes" or batteries != "no"

所以我编写了一个函数,它取一个变量的值。如果值为“是”或“否”,我希望它做一些事情。如果值不是这些答案中的任何一个,我希望它再次无限次地询问它。这是我的代码,以防我的描述不好

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()

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


while True
向上移动几行,使其包含
原始输入()
命令。

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


while True
向上移动几行,使其包含
原始输入()
命令。

您需要将赋值移动到
while
循环内部或添加另一个赋值。您还需要将
更改为
。您还需要删除额外的
raw_输入
行,该行未将值分配给
batters
变量

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()

您需要将分配移动到
中,而
循环或添加另一个分配。您还需要将
更改为
。您还需要删除额外的
raw_输入
行,该行未将值分配给
batters
变量

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()

问题在于你的if语句。不管给定什么值,条件总是等于true,它会再次请求一个值。例如,如果值为“是”,则条件将为
(false或true)
,等同于true;如果值为“否”,则条件将为
(true或false)
,也等同于true;如果值类似于“asdf”,则条件将为
(true或true)
,也等同于true

要解决此问题,请将“or”运算符更改为“and”运算符

if batteries != "yes" and batteries != "no":

问题在于你的if语句。不管给定什么值,条件总是等于true,它会再次请求一个值。例如,如果值为“是”,则条件将为
(false或true)
,等同于true;如果值为“否”,则条件将为
(true或false)
,也等同于true;如果值类似于“asdf”,则条件将为
(true或true)
,也等同于true

要解决此问题,请将“or”运算符更改为“and”运算符

if batteries != "yes" and batteries != "no":

查看您第二次使用的
raw_input
应与第一次使用相同:使用lower并分配给电池(旁白:
answer
可能是比
batters
更好的变量名)。查看您第二次使用的
raw_input
应与第一次使用相同:使用lower并分配给电池(旁白:
answer
可能是比
batters
更好的变量名)。while循环确实有一个
raw\u输入
行。修复该行可能比忽略该行更有助于OP。while循环确实有一个
raw\u输入
行。修复该行可能比忽略该行更有助于OP。嘿,我是编码高手,这就是为什么我问一些简单的问题,但是你能给我解释一下为什么我必须把电池分配线放在while循环中,为什么我必须把and而不是or。如果你不把分配线放在while循环中,那么变量的值在循环中永远不会改变,这意味着你永远不能离开它。还有你必须使用
不同的是
的表达式总是正确的。如果
电池
等于
,那么它就不等于
,所以第二部分是正确的,反之亦然。因此
的至少一个分支总是正确的,这使得整个事情都是正确的。嘿,我是个努比在编码中,这就是为什么我会问一些简单的问题,但是你能解释一下为什么我必须把电池分配线放在while循环中,为什么我必须放一个and而不是or。如果你不把分配线放在while循环中,那么变量的值在你在循环中时永远不会改变,这意味着你永远也出不去当然。你必须使用
而不是
的原因是,对于
,这个表达式总是正确的。如果
电池
等于
,那么它就不等于
,所以第二部分是正确的,反之亦然。因此
至少有一个分支总是正确的这使整个事情成为事实。