从raw_input字符串中将布尔值指定为true?

时间:2015-07-26 00:36:30

标签: python if-statement boolean

我有一个简单的if elif else语句,它依赖于用户的输入。

options = ['Try to jump the gap', 'Go back to the entryway']
print "You can:"
for x in options:
    print "\t:>%s" % x
choice = raw_input("What do you do?")
if  'try' in choice:
    print "You try to jump the gap and fail."
    print "You fall into the pool of acid while shrieking in pain."
    print "You dissolve"
    dead()
elif 'go' in choice:
    change()
    entrywaymain()
else:
    unknown()
    change()
    poolroomclosed()

当用户输入“尝试”时,代码可以正常工作。或者'去' 但是,如果用户输入完整的陈述,要么“试着填补空白”。或者'回到入口通道,他们将始终获得if值并将死亡。那么,我如何进行编码,以便布尔将仅使用用户输入中该字符串中的单词激活。

2 个答案:

答案 0 :(得分:1)

这可能是因为"回到en 尝试的方式"包含"尝试"。

目前,由于这个原因,简单地使用if "try" in choice:非常容易出错。您最好使用其他人提到的方法检查字符串的开头:

choice.split()[0].lower() == "try"
# Returns True for "try to jump" but not for "tryto jump"

choice.split(" ")[0].lower() == "try"
# Equivalent to the above

choice.lower().startswith("try")
# Returns True for "try to jump" and "tryto jump"

(对于任何这些片段,资本化并不重要。)

答案 1 :(得分:0)

如果您想获得choice的第一个单词,您可以执行以下操作:

choice.split(' ')[0]

你也可以放小写:

choice.split(' ')[0].lower()

编辑: jweyrich的解决方案似乎更优雅(我不知道有一个startwith字符串方法),我只是将他的解决方案修改为choice.lower().startswith('try'),因此它适用于您的示例(Python字符串区分大小写)。 / p>