第44行我的“If语句”和第37行我对变量语句的添加有什么问题?

2024-10-01 15:31:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在为一个语音控制器做一个粗略的大纲,这样我就可以停止设计部件了,但即使在做这个粗略的大纲的时候,我还是遇到了一些问题,因为我在if语句和变量加法语法方面的技能水平太差了。具体的错误是,当我第一次询问脚本如何运行时,程序退出,而不是继续运行,如果我删除了带有变量加法的行以及关于different语句的块,该语句在被询问一次后替换了旧的“你好吗?”

from time import ctime
import time
import os
import pyttsx3
import random


repetitionsocial1=0

numberList = ["Thanks for asking. But I am a computer","222","I eat poop","444","555"]

def recordAudio():
    # Record Audio
    r = sr.Recognizer()
    with sr.Microphone() as source:
     print("Say something!")
     audio = r.listen(source)

    # Speech recognition using Google Speech Recognition
    data = ""
    try:
        # Uses the default API key
        # To use another API key: `r.recognize_google(audio, key="GOOGLE_SPEECH_RECOGNITION_API_KEY")`
        data = r.recognize_google(audio)
        print("You said: " + data)
    except sr.UnknownValueError:
        print("Offline Recognition could not understand audio")
    except sr.RequestError as e:
        print("Could not request results from Offline Recognition service; {0}".format(e))

    return data

def jarvis(data):
    global repetitionsocial1
    if "how are you" in data and repetitionsocial1==0 :
        repetitionsocial1=repetitionsocial1+1
        engine = pyttsx3.init()
        engine.say("What answer do you expect. I am a Computer?")
        engine.runAndWait()
        
        

    if "how are you" in data and repetitionsocial1>=0:
        engine = pyttsx3.init()
        engine.say("I am still fine, but again, I am a computer. You have asked me this"+str(repetitionsocial1)+"times")
        engine.runAndWait()

    if "what time is it" in data:
        engine = pyttsx3.init()
        engine.say(ctime())
        engine.runAndWait()

   # if "where is" in data:
    #    data = data.split(" ")
     #   location = data[2]
      #  speak("Hold on Frank, I will show you where " + location + " is.")
       # os.system("chromium-browser https://www.google.nl/maps/place/" + location + "/&")

# initialization
time.sleep(2)
engine = pyttsx3.init()
engine.say("Hi Frank, what can I do for you?")
engine.runAndWait()

while 1:
    data = recordAudio()
    jarvis(data)

Tags: inimportyoudataiftimeinitam
1条回答
网友
1楼 · 发布于 2024-10-01 15:31:29

请看这两个片段

    if "how are you" in data and repetitionsocial1==0 :
        repetitionsocial1=repetitionsocial1+1
        ...
    if "how are you" in data and repetitionsocial1>=0:
        ...

当第一个条件为true时,它向repetitionsocial1添加1,因此现在该变量包含1。因此,第二个条件也将为真,因为1>=0

当你有互斥条件时,你应该使用^ {CD4>},并且不想考虑由于第一个条件而发生的变量变化。

相关问题 更多 >

    热门问题