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循环中,那么变量的值在你在循环中时永远不会改变,这意味着你永远也出不去当然。你必须使用和而不是或的原因是,对于或,这个表达式总是正确的。如果电池等于是
,那么它就不等于否
,所以第二部分是正确的,反之亦然。因此或至少有一个分支总是正确的这使整个事情成为事实。