print "Please Type Something"
resp = raw_input()
if resp *contains* "cuttlefish"
print "Response One"
elif resp *contains* "nautilus"
print "Response Two"
else:
print "Response Three"
我需要知道的是使用正确的语法而不是填充包含。因此,例如,如果用户键入“两个墨鱼”,那么程序应该通过打印“Response One”来响应
我确实试过在一些教程中查找这些信息,所以如果你知道一个很好的解决这个问题,我不会介意那个方向的指针:/
答案 0 :(得分:5)
Python是一种非常简单的语言,只需要思考英语,你就可以把它弄清楚;)
if 'cuttlefish' in resp:
答案 1 :(得分:3)
是您要查找的运算符:
if "cuttlefish" in resp:
print "Response One"
elif "nautilus" in resp:
print "Response Two"
else:
print "Response Three"
in
基本上是一个运算符,适用于str
,tuple
,list
等序列。 x in y
检查x
是否是序列y
的一部分。另请参阅Python标准库文档中的5.6. Sequence Types。
关于你的第二个问题“现在,我如何更改它以便”乌贼“是cuttlefishList上的一个条目,以及其他几个也应该触发打印”Response One“的条目?”。
这实际上是一个更复杂的问题,因为你无法检查多个元素中是否存在任何多个元素。但当然有可能做到这一点。简单的是简单地将所有支票链接在一起:
if "cuttlefish" in resp or "someotherfish" in resp or "yetanotherfish" in resp:
print "Response One"
如果您有太多不同的单词会导致该响应,那么您也可以自动化,如下所示:
if any( x in resp for x in ( "cuttlefish", "someotherfish", "yetanotherfish" ) ):
print "Response One"
这基本上是一种简短的写作方式(当然不是字面意思,但想法是一样的):
checkList = []
for x in ( "cuttlefish", "someotherfish", "yetanotherfish" ):
checkList.append( x in resp )
if True in checkList:
print "Response One"
它的作用是它遍历元组的所有元素,并检查每个元素x
是否是响应的一部分。它保留了这些检查结果的检查清单(简短形式,生成器执行此操作)。最后,检查True
是否是序列checkList
的一部分。如果是,则在响应中找到至少一条鱼,您可以打印结果。
另一种方法是使用正则表达式。将它们用于少数不同的选择可能有点过头了,但另一方面,你可以用它做很棒的事情。
答案 2 :(得分:1)
if "cuttlefish" in resp:
# found
或
if resp.find("cuttlefish") > 0:
# found
答案 3 :(得分:1)
您可以使用以下语法:
if 'string' in word:
#Code
这会检查它是否在单词中,无论它是列表还是其他字符串。因此,如果单词是'foostringbar'或['foo','string','bar',它将匹配True 另外,不要打印告诉用户输入内容,请尝试以下操作:
resp = raw_input("Please Type Something\n")
这将产生相同的东西,但更加pythonic。