<p>编辑:在Ned Batchelder格式化了代码之后,我重新阅读了这个问题,看我对你想做什么的猜测并不完全正确。。。尽管还不能百分之百的清楚你是否在尝试循环。如果您只想经历一次,就不需要while循环,只需删除它。至于针对名为octopusList的<a href="http://docs.python.org/tutorial/datastructures.html#dictionaries" rel="nofollow noreferrer">dictionary</a>中的值测试输入,可以使用<a href="http://docs.python.org/reference/expressions.html#in" rel="nofollow noreferrer">in test</a>,但这只针对dict的键进行测试。如果您在dict条目中寻找值,那么您要么将octopusList设置为一个true列表(例如<code>octopusList = ['red', 'white', 'blue', 'green']</code>),然后进行in-test(例如<code>if resp in octopusList:</code>),要么在解析dict时稍微复杂一点</p>
<p>原始答案:
似乎您正在尝试创建一个循环来获取用户输入并打印一个字符串以响应该输入。如果是这样的话,我认为有一些事情需要纠正:</p>
<ul>
<li>您不需要break语句,因为它们会导致循环退出。在</li>
<li>正如其他人所说,将输入与octopusList进行比较是行不通的,只需将其与随机生成的octopus值进行比较。在</li>
<li>如果要使用1作为退出输入,则需要根据字符串形式(“1”)测试输入,而不是整数形式(1)。在</li>
<li>如果我对你所做的猜测是正确的,那么原始的输入需要在循环中。在</li>
</ul>
<p>这不是标记的家庭作业,所以我在下面贴了代码来做我认为你想做的事情。如果您希望octopus值对用户保持未知,只需删除<code>print octopus</code>行,但我将其放入其中,以便您知道要输入什么值进行测试。在</p>
<pre><code>import random
octopusList = {"first": ["red", "white"],
"second": ["green", "blue", "red"],
"third": ["green", "blue", "red"]}
squidList = ["first", "second", "third"]
squid = random.choice(squidList)
octopus = random.choice(octopusList[squid])
print octopus # So we know what value to use - necessary for testing at least
resp = ''
while resp != '1':
resp = raw_input("Please Type Something: ")
if resp == octopus:
print squid + " " +octopus
elif resp == "Something":
print "Elephants are pachyderms"
else:
print "That's another text to think about."
print "One More Comment"
</code></pre>
<p>如果我的猜测和建议偏离了目标,请提供一个更好的解释,你正在试图做什么。在</p>