我正在为自己建立一个虚拟助手,如果像这里举个例子,要求个人执行每一个命令是错误和无效的:
WAKE = 'hello'
while True:
print("Mic ready")
text = voice.get_audio()
if WAKE in text:
if "note" in text:
voice.speak("What do you want to note?")
print("What do you want to note?")
text = voice.get_audio()
Vcm.note(text)
else if "timer" in text:
voice.speak("How long is that timer supposed to run?")
print("How long is that timer supposed to run?")
text = voice.get_audio()
Vcm.timer(text)
else:
voice.speak("At your service")
print("At your service")
text = voice.get_audio()
有没有更有效的方法来检查要执行的命令?
while True:
print("Mic ready")
text = voice.get_audio()
if WAKE in text:
words = text.split(" ")
for word in words:
command = commands.get(word)
if command:
command(text)
break
else:
vcm.default()
```
commands = {
'note': lambda text: note(text)
}
您可以将命令分成函数:
def note():
#note body
def timer():
#timer body
def default():
#default body
然后将命令包装到字典中:
commands = {
'note': lambda: note(),
'timer': lambda: timer()
}
并分别定义默认值:
default_command = lambda: default()
然后您可以检查文本中的内容:
for word in text:
command = commands.get(word, None)
if command not None:
command()
break
else:
default_command()
不确定这是否是您想要的,但如果您有许多命令,它可能会使您的代码更加稀疏。
编辑:
根据lambda函数的bool值是否为false?,lambda表达式表现为true。所以你也可以简化最后一点!
for word in text:
command = commands.get(word, None)
if command:
command()
break
else:
default_command()
我正在使用对进行“printf调试”。在命令运行一次且之前没有任何命令更改后,将缓存结果,并且不提供输出。 我可以用从不执行的部分来更改命令,例如追加< code > | | echo some changing number],这对于每次运行都很烦人,或者关闭构建缓存,这会影响更多的< code >运行,从而减慢< code>Dockerfile的开发。 有没有办法只禁用一个 的缓存而没有任何描
问题内容: 我正在尝试通过从客户端向服务器发送密钥和随机数来认证用户。 我的代码未向我显示客户端的响应。执行下面的代码时,我得到了一个空指针异常。 问题答案: 解决大多数问题的固定步骤: 阅读堆栈跟踪以确定哪一行代码引发NPE 在该行代码处设置一个断点 使用调试器,在遇到断点时,确定该行中的对象引用是 弄清楚为什么引用该文件(到目前为止,这是唯一实际的困难部分) 解决根本原因(也可能很困难)
问题内容: 我有两个简单的Java代码。第一个将恒定功率定义为power = a.pow(b); 第二个将恒定功率定义为power = BigInteger.ONE.shiftLeft(b) 在命令行中设置内存标志- Xmx1024m,第一个代码可以正常工作,但是第二个代码却出现错误:java.lang.OutOfMemoryError:Java堆空间 我的问题:我应该在第二个代码中更改什么以避免
问题内容: 我有一个用于将文本添加到现有.doc文件中的代码,它将通过使用apache POI将其另存为另一个名称。 以下是到目前为止我尝试过的代码 以下是我得到的 我已经添加了与此对应的所有jar文件,但仍然找不到解决方案。我对apache poi是陌生的,所以请帮我提供一些解释和示例。谢谢 问题答案: 从我对问题的评论中复制: 看起来您需要Apache POI发行版中的poi-ooxml-sc
创建表(int(10)不为空AUTO_INCREMENT,int(30),varchar(30),varchar(4)不为空,int(2)不为空,主键()); 创建表(varchar(10),主键()); 创建表(int(10),int(30),varchar(30),varchar(4),int(2), varchar(10), varchar(2)not null默认'p'); 分隔符$$ 为
例如,我们从我们的合作伙伴那里得到这样一条json消息: 合作伙伴希望客户端接收这样的消息(没有换行符,但有) 但我们的生态系统中有一系列的微服务,json需要经过4到5个微服务,在客户端能够获得它之前进行处理。因此,我们的合作伙伴应该给我们,而不是,以便客户在结果中得到。但我想知道,在源消息中添加8个反斜杠来转义每个微服务的“”是否是解决此问题的唯一方法。我认为这不是一个很好的解决方案,因为如果