我有一个简单的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值并将死亡。那么,我如何进行编码,以便布尔将仅使用用户输入中该字符串中的单词激活。
答案 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>