2010-07-16 61 views
0

好吧,所以答案可能很明显,但我不知道正确的方式让程序根据用户输入的内容做出不同的响应。语法问题 - if/else和raw_input()

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]) 
名单和鱿鱼和章鱼随机生成一个短语
resp = raw_input("Please Type Something") 
while resp !=1: 
    if resp == octopusList: 
     print squid + " " +octopus 
     break 
    elif resp == "Something": 
     print "Elephants are pachyderms" 
     break 
    else: 
     print "That's another text to think about." 
     break 

print "One More Comment" 
据说这是如果用户输入的任何octopusList打印鱿鱼+“” +章鱼。或者,如果用户输入“Something”,则应该返回“Elephants is pachyderms”这个短语。如果用户输入任何东西,它应该返回“这是另一个需要思考的文本”。最后,它应该打印“更多评论”。实际上,无论用户输入什么内容,它都会跳转到其他地方。

它通向Else,所以我没有得到关于if和elif的东西......感谢你能照亮的任何光。

+0

请编辑您的问题,并格式化您的所有代码。很难弄清楚它应该做什么,特别是因为它是Python。 – GreenMatt 2010-07-16 19:23:25

+0

即使缩进后,我仍然不太确定该程序应该做什么... – 2010-07-16 19:24:32

回答

1

比较字符串的字典没有做什么有用的(它永远是假的,IIRC) - 你也许想“if resp in octopusList”?我不知道为什么第二个条件从不打,为什么你输入“something”而不是“Something”?

+0

这两个权利,谢谢 – Tehto 2010-07-16 19:53:15

0

您正在比较一个字符串(resp)和一个列表。你想是这样的:

if resp == octopus: # not octopusList! 
    # do something 
else: 
    # ... 
3

编辑:Ned Batchelder格式化代码后,我重新阅读这个问题,看看我的猜测,你想做什么并不完全正确......尽管如果你尝试着仍然不是100%清楚的循环或不循环。如果你只想经历一次,那么就不需要while循环,只需删除它。至于对称为octopusList的dictionary中的值的输入测试,您可以使用in test,但该测试仅针对字典的键进行测试。如果你正在寻找字典条目中的值,你将不得不制作一个真正的列表(例如octopusList = ['red', 'white', 'blue', 'green']并做一个测试(例如if resp in octopusList:)或在解析字典时会稍微复杂一点)

原来的答复: 看来你想创建一个循环来获取用户的输入,并响应于该输入打印字符串。如果是那样的话,我看到了一些东西需要修正:

  • 你不想要break语句,因为它们导致循环退出。
  • 正如其他人所说的,将输入与octopusList进行比较将不起作用,只是com削减它到你随机生成的章鱼价值。
  • 如果您打算使用1作为退出输入,则需要针对字符串表单('1')而不是整数形式(1)来测试输入。
  • 如果我的猜测对你正在做的是正确的,那么raw_input需要在循环中。

这不是标记为家庭作业,所以我已经发布了代码来做我认为你想要的代码。如果你希望章鱼价值对用户来说是未知的,只要删除print octopus这一行,但我把它放进去,这样你就知道要输入什么值进行测试了。

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" 

如果我的猜测&建议是没谱,请提供一个更好的解释,你试图做什么。