我是Python的新手,我有一个问题。
我正在制作一个简单的聊天机器人,我希望它能够回答问题和类似问题。
以下是一个例子:
def ChatMode():
ChatCommand = raw_input ("- user: ")
if "quit" in ChatCommand :
print "Lucy: See you later."
print ""
UserCommand()
else :
print "Lucy: sorry i don\'t know what you mean."
ChatMode()
对于更高级的东西,我需要它来检查2个字符串。
我尝试了一些类似的事情:
def ChatMode() :
ChatCommand = raw_input ("- user: ")
if "quit" + "now" in ChatCommand :
print "Lucy: See you later."
print ""
UserCommand()
else :
print "Lucy: sorry i don\'t know what you mean."
ChatMode()
但那造成了"quitnow"
。
我还尝试用+
替换&
,但这给了我一个错误:
TypeError:&:'str'和'str'不支持的操作数类型
有没有人有短代码才能这样做?我不想要5个以上的句子,我想尽量缩短句子。
答案 0 :(得分:2)
使用单独的条款来检查"quit"
和"now"
是否都在ChatCommand
中。
if "quit" in ChatCommand and "now" in ChatCommand:
请注意,在Python中,logical and operator&&是and
,&
是bitwise and。
答案 1 :(得分:1)
if "quit" in ChatCommand and "now" in ChatCommand:
另外,作为一种风格,Python CamelCase
通常会保留给Class
es。
答案 2 :(得分:1)
使用all()
:
if all(word in ChatCommand for word in ("quit", "now")):
如果您想避免在quit
内匹配quite
,可以使用正则表达式:
import re
if all(re.search(regex, ChatCommand) for regex in (r"\bquit\b", r"\bnow\b")):
因为\b
word boundary anchors仅匹配单词的开头和结尾。