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