我的解决方案是使用一个变量字典,但可能有更好的方法。
这是我的看法:
我有一个应该触发一些代码片段的关键词列表 列表中的每个项目都有一个质数值,因此如果我将它们相乘,将不会有匹配项,并且唯一的数字将仅执行一个操作(这很混乱,我无法将其投入使用: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
(因为“开门”是一整件事,不在清单上)
我正在寻找这个问题的解决方案,即(如何分隔输入中的不同单词,例如,如果输入是“请为我开门”或“打开该死的门”,程序将如何搜索其中的关键词此外,输入如何获取所有单独的值并将其相乘???
p.s 如果我的方法有解决方案我想知道
在输入中搜索关键字之前,您可以通过按空格分割用户输入来创建操作列表。
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
然后,如果将打印行交换为乘法,然后从那里继续处理,则可以执行您所描述的操作。
@user22309639 你说:
如何将所有单独的值相乘???
在字典中你忘记了逗号。
keywords = {
"open": 2,
"close": 3,
"door" : 5,
"don't": -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']
您声明一个将包含乘法结果的变量:
cpt = 1
您创建一个循环来查看列表(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]