Python if工作正常,但elif抛出错误

Python if工作正常,但elif抛出错误,python,speech-recognition,Python,Speech Recognition,我正在编写python代码(提供); 但当我说“打开的照片”时,一切都正常,它承认我说了“打开的照片”,但抛出的语句除外,而不是“elif listen()==”打开的照片“:output”。请帮助我 import speech_recognition as sr import pyttsx3 import time friday = pyttsx3.init('sapi5') r = sr.Recognizer() mic = sr.Microphone() friday.setPropert

我正在编写python代码(提供); 但当我说“打开的照片”时,一切都正常,它承认我说了“打开的照片”,但抛出的语句除外,而不是“elif listen()==”打开的照片“:output”。请帮助我

import speech_recognition as sr
import pyttsx3
import time
friday = pyttsx3.init('sapi5')
r = sr.Recognizer()
mic = sr.Microphone()
friday.setProperty('rate', 150)
def listen():
     with mic as source:
         r.adjust_for_ambient_noise(source)
         audio = r.listen(source)
         try:
           text =  r.recognize_google(audio)
           print(text)
           return text
         except sr.UnknownValueError:
          friday.say("sorry sir , could't do that")
          friday.runAndWait()
print("started!")
while 1:
    if listen() == "hello Jarvis":
        friday.say("hello sir")
        friday.runAndWait()
    elif listen() == "open photos":
            friday.say("opening")
            friday.runAndWait()

我认为你需要的是更好的关注
listen
将使用输入;第二次叫它会迫使你重复这个短语。相反,第一次要注意。:-)


请注意,如果缩进一致,代码更容易阅读:处于相同处理级别的代码,即使是在独立块之间,也应缩进到相同级别。

您遇到了什么错误?请解释一下该错误是什么?您不需要监听两次,只需在if语句之前将其设置为一个变量。您应该共享获取错误。
heard = listen()
if heard == "hello Jarvis":
    friday.say("hello sir")
    friday.runAndWait()
elif heard == "open photos":
    friday.say("opening")
    friday.runAndWait()