一旦用户说“是”或“是”,该程序应该停止并显示“你最喜欢的颜色是”他们回答“是”的颜色。
如果用户说“不”或“否”,程序应该循环直到用户说“是”。
我的问题是它询问用户颜色是否是列表中的下一个颜色而没有注意用户是否说“是”!
import sys
colourList = ["Pink", "Orange", "Brown", "Black", "Green", "Yellow", "White", "Blue", "Red", "Grey"]
finished = False
i = 0
while not finished:
for i in range (0,9):
favColour=input("Is your favourite colour ?".format(colourList[i]))
if favColour == ("Yes") or ("yes"):
finished = True
else:
i = i + 1
print("Your favorite colour is {}.".format(colourList[i]))
答案 0 :(得分:2)
以下是代码的一个工作示例,其中考虑了在列表用完项目后可能出现的IndexError:
colorList = ['pink', 'blue', 'red']
finished=False
import sys
i=0
while not finished:
for i in range(0, len(colorList)):
favColour=input("Is your favourite color {}?:".format(colorList[i]))
if favColour == "Yes" or favColour == "yes":
print favColour
finished = True
print("Your favourite color is {}".format(colorList[i]))
break
else:
i=i+1
raw_input()
代替input()
。if favColour == "Yes" or favColour == "yes":
(请参阅下面的minocha作为另一个例子的答案)break
,我们正在关闭程序,因为需要正确的结果。 (您的标志`finished = True"当然,如果您还有其他代码可以执行,也可以使用。)len(colorList)
)而不是设定的数字,因为这会使列表在我们达到最后一项/颜色后重新开始。答案 1 :(得分:1)
如果其python2.7输入应更改为raw_input
favColour==("Yes")or("yes")
- 不是写条件的正确方法,因为这总是正确的,这里发生了2个断言favColour ==(“是”)或(“是” )。 不是favColour ==(“是”)
一个独立的字符串是正的,并且断言为true,你应该将它改为 -
favColour in ["yes", "Yes"]
要么
favColour == "Yes" or favColour == "yes"