我将提供部分代码。在使用while循环块内的命令后,它无法继续执行。我认为是代码块中的text = get_audio().lower()这一行导致了错误。
def process_text():passif __name__ == "__main__":assistant_speaks('''你好,我是一个虚拟助手。我在这里是为了让你的生活更轻松。你可以命令我执行各种任务,比如计算总和或打开应用程序。请告诉我你是谁。''')name = 'are'name = get_audio()assistant_speaks("你好," + name + '。')while 1: assistant_speaks("我能为你做些什么吗?" + name + '。') text = get_audio().lower() if text == 0: continue if "exit" in str(text) or "bye" in str(text) or "sleep" in str(text): assistant_speaks("好的,再见," + name + '。') break # 调用process_text处理查询 process_text() def process_text(): try: if 'search' in input or 'play' in input: # 使用selenium进行基本的网络爬取 search_web(input) return elif "who are you" in input or "define yourself" in input: speak = '''你好,我是一个虚拟助手。我在这里是为了让你的生活更轻松。你可以命令我执行各种任务,比如计算总和或打开应用程序。''' assistant_speaks(speak) return
基本上,当我询问elif条件时,它不会回答任何问题。在try之后:
有人有任何想法吗?
回答:
为了让你的程序达到你想要的行为,你至少需要纠正三个错误:
- 在
try
块中用text
替换input
。在Python中,input
是一个内置函数,不是字符串。你已经将用户的回答赋值给了变量text
,那么为什么不使用它呢?:) - 在调用
process_text
函数之前定义它。实际上,你应该将调用process_text()
的那一行移动到该函数定义之后。 - 还有一些缩进错误,最重要的是在调用
process_text()
函数时发生的:你应该将那行向后缩进一个级别,否则它将在if "exit" in ...
块内执行。
你还应该在while循环之前定义process_text
,因为你只需要定义它一次。