在Python中使用字典理解用户输入

问题描述 投票:0回答:2

我正在寻找一种理解用户输入的解决方案

我的解决方案是使用一个变量字典,但可能有更好的方法。

这是我的看法:

我有一个应该触发一些代码片段的关键词列表 列表中的每个项目都有一个质数值,因此如果我将它们相乘,将不会有匹配项,并且唯一的数字将仅执行一个操作(这很混乱,我无法将其投入使用:D)

keywords = {"open": 2
            "close": 3
            "door" : 5
            "don't": -1}
actions = input("/ ").lower()
if actions in keywords:
    print(keywords.get(actions)) # I use print for display purposes 

所以假设用户输入是“open”=> 2 get 被打印

但是如果我有 2 个关键词“开门”=> 什么也做不了

(因为“开门”是一整件事,不在清单上)

我正在寻找这个问题的解决方案,即(如何分隔输入中的不同单词,例如,如果输入是“请为我开门”或“打开该死的门”,程序将如何搜索其中的关键词此外,输入如何获取所有单独的值并将其相乘???

如果您有更好的解决方案请帮忙

p.s 如果我的方法有解决方案我想知道

python user-input
2个回答
1
投票

在输入中搜索关键字之前,您可以通过按空格分割用户输入来创建操作列表。

keywords = {"open": 2,
            "close": 3,
            "door" : 5,
            "don't": -1}
user_input = input("/ ").lower()
actions = user_input.split(' ')

for action in actions:
    if action in keywords:
        print(keywords.get(action)) # I use print for display purposes 

然后,如果将打印行交换为乘法,然后从那里继续处理,则可以执行您所描述的操作。


0
投票

@user22309639 你说:

如何将所有单独的值相乘???

步骤0.

在字典中你忘记了逗号。

keywords = {
    "open": 2,
    "close": 3,
    "door" : 5,
    "don't": -1
}

步骤1.

您分割结果:

user_input = input("/ ").lower().split()

详情

Split 是一个将字符串转换为列表的函数,如果你给函数一个参数,当函数看到参数时,它会将字符串切成碎片。

示例:

dot = "0.0.0.0"
print(dot.split(".")
#You will see on the terminal : ['0', '0', '0', '0']

步骤2.

您声明一个将包含乘法结果的变量:

cpt = 1

步骤3.

您创建一个循环来查看列表(user_input)的索引内容是否等于字典(keywords)的键:

for action in user_input:
    if action in keywords:
        #cpt = cpt * keywords[action]
        cpt*=keywords[action]

最终代码:

keywords = {
    "open": 2,
    "close": 3,
    "door" : 5,
    "don't": -1
}

user_input = input("/ ").lower().split()

cpt=1
for action in user_input:
    if action in keywords:
        cpt*=keywords[action]
© www.soinside.com 2019 - 2024. All rights reserved.