[英]How to use dictionary to verify against user input?
因此,我想制作一个可以与用户进行简短对话的小机器人。 唯一的问题是,当我键入列表中的一个单词(打招呼或打招呼)时,我会收到欢迎用户消息,但是,如果键入像打招呼计算机这样的消息,它将给我TESTPHRASE消息。 我可以输入一些内容,以便它在用户输入的句子中查找并在使用的列表中找到一个单词,以便可以说出适当的响应。
user_greetings = {"hello", "hi"}
user_input = input("-")
if user_input in user_greetings:
print("Welcome User")
else:
print("TESTPHRASE")
当您将in
一个字符串和一本字典,它将如果整个字符串是一个关键的考验。 看起来您想检查句子中的第一个单词还是字典中句子中的任何单词。
无论哪种情况,您都希望将输入分割为空格:
words = input('-').split()
如果要检查第一个单词,请像以前一样继续进行:
if words[0] in user_greetings:
print("Welcome User")
else:
print("TESTPHRASE")
如果任何单词应触发欢迎消息,请使用any
和一个生成器表达式:
if any(x in user_greetings for x in words):
print("Welcome User")
else:
print("TESTPHRASE")
我收到您的代码的语法错误。 尝试将else
移动到自己的行。 否则,您的代码对我有用。
编辑:
重读问题。 您的代码正在检查“ hello computer”是否打招呼,即{'hello','hi'}。 “您好,计算机”不在问候中。 您可以反转搜索并执行
for greeting in user_greetings:
if greeting in user_input:
# print greeting
否则,您需要在问候列表中添加“ hello computer”。
这样的事情可以做到:
greetings = ['hello', 'hi']
input = 'hello computer'.split()
if set(greetings).intersection(set(input)):
print('Welcome')
@Mad Physicist为此提供了非常全面的答案,我赞成他的答案。
如果有任何单词会触发欢迎消息,无论是否使用大写字母,还有另一种方法。
user_greetings = {"hello", "hi"}
user_input = input("-").split()
# set process control.
greeting = None
for word in user_input:
if word.lower() in user_greetings:
print("Welcome User")
else:
greeting = True
if greeting:
print("TESTPHRASE")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.