语法if/else和raw\u input()有问题

2024-05-19 09:32:57 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,答案可能很明显,但我不知道如何让程序根据用户输入的内容做出不同的响应。在

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])
列表和鱿鱼章鱼生成一个随机短语 ^{pr2}$ 如果用户在octopusList上输入任何内容,这应该打印squid+“”+octopus。或者,如果用户键入“Something”,它应该返回短语“大象是厚皮动物”。如果用户输入任何esle,它应该返回短语“这是另一个要考虑的文本”。最后它应该打印“一个更多的评论”。不管用户输入什么,它实际做的是直接跳转到其他地方。

它和其他的东西很不一样,所以我对if和elif有些东西不了解。。。谢谢你能照亮这一切。在


Tags: 答案用户内容randomgreenblueredsquid
3条回答

编辑:在Ned Batchelder格式化了代码之后,我重新阅读了这个问题,看我对你想做什么的猜测并不完全正确。。。尽管还不能百分之百的清楚你是否在尝试循环。如果您只想经历一次,就不需要while循环,只需删除它。至于针对名为octopusList的dictionary中的值测试输入,可以使用in test,但这只针对dict的键进行测试。如果您在dict条目中寻找值,那么您要么将octopusList设置为一个true列表(例如octopusList = ['red', 'white', 'blue', 'green']),然后进行in-test(例如if resp in octopusList:),要么在解析dict时稍微复杂一点

原始答案: 似乎您正在尝试创建一个循环来获取用户输入并打印一个字符串以响应该输入。如果是这样的话,我认为有一些事情需要纠正:

  • 您不需要break语句,因为它们会导致循环退出。在
  • 正如其他人所说,将输入与octopusList进行比较是行不通的,只需将其与随机生成的octopus值进行比较。在
  • 如果要使用1作为退出输入,则需要根据字符串形式(“1”)测试输入,而不是整数形式(1)。在
  • 如果我对你所做的猜测是正确的,那么原始的输入需要在循环中。在

这不是标记的家庭作业,所以我在下面贴了代码来做我认为你想做的事情。如果您希望octopus值对用户保持未知,只需删除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"

如果我的猜测和建议偏离了目标,请提供一个更好的解释,你正在试图做什么。在

将字符串与字典进行比较没有任何用处(它总是错误的,IIRC)您可能想要“if resp in octopusList”吗?我不知道为什么第二个条件永远不会命中,也许你键入的是“something”而不是“something”?在

您正在将字符串(resp)与列表进行比较。你想要这样的东西吗:

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

相关问题 更多 >

    热门问题