Python 2.7 递归函数未输出预期值
如果函数在第一次运行时没有vakud输出,我很难理解为什么下面的函数似乎输出的是Python 2.7 递归函数未输出预期值,python-2.7,function,recursion,speech-recognition,Python 2.7,Function,Recursion,Speech Recognition,如果函数在第一次运行时没有vakud输出,我很难理解为什么下面的函数似乎输出的是None,而不是1 import win32com.client BING_KEY = "XXXXXXXX" import speech_recognition as sr import win32com.client as wincl s = sr.Recognizer() def hey_pc(): print(" Hey PC = Command") with sr.Microphone()
None
,而不是1
import win32com.client
BING_KEY = "XXXXXXXX"
import speech_recognition as sr
import win32com.client as wincl
s = sr.Recognizer()
def hey_pc():
print(" Hey PC = Command")
with sr.Microphone() as source:
audio = s.listen(source)
try:
x= (s.recognize_bing(audio, key=BING_KEY))
if x in ['hey PC']:
return 1
else: hey_pc()
except:
print('Try again')
hey_pc()
t = hey_pc()
print t
如果函数在第一次运行时输出,我将获得以下输出:
Hey PC==命令
1
但是如果它调用它的递归属性,我得到的最终输出是None
Hey PC == Command
Hey PC == Command
Hey PC == Command
Hey PC == Command
None
还是这个
Hey PC == Command
Try again
Hey PC == Command
Hey PC == Command
None
我不明白为什么我一个也得不到
编辑:
我已经将代码的第二部分更改为这一部分,并进行了更多操作,但仍然存在相同的问题:
t =hey_pc()
if t == 1:
speak = wincl.Dispatch("SAPI.SpVoice")
speak.Speak("This is the pc voice speaking")
import automation
automation.Apply_Command()
else:
hey_pc()
如果我的声音在第一次尝试时被识别,则运行If t==1
下的代码,没有问题,但是如果我的声音在第一次尝试时未被识别,并且代码的反向部分被激活,一旦我的声音最终被识别,程序就结束了(意味着Python命令提示符>>
再次弹出)。因此我假设传递的是空值
仍然很难回答。(可能不是您要寻找的答案,特别是,但这通常是因为“if x in['hey PC']”永远不会为真。返回数字的唯一条件(从而设置值)是您的if语句。因此,最有可能的情况是,if语句从未输入。但是,如果函数运行平稳(不调用函数的递归部分),则我的输出为1。如果我运行上述函数,则在不引发
重试或嘿PC
多次输出的情况下,设法获得输出,(这表明函数的递归部分正在被激活),我可以得到1的输出。希望你能理解我的意思。