繁体   English   中英

如何使用字典来验证用户输入?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM