我一直用我的alexa技能收到带有Speech_output的UnboundLocalError

时间:2019-01-24 14:27:44

标签: python python-2.7 alexa alexa-skills-kit

我开始收到此错误,但之前一直在工作,所以我不确定发生了什么变化。

  

get_elevator_status中的文件“ /var/task/lambda_function.py”,第126行   语音输出+ ='开'+车站的电梯['线路'] +'   lifts ['station'] + \ UnboundLocalError:局部变量   分配前引用了“语音输出”

def get_elevator_status():
    session_attributes = {}
    card_title = "Septa Elevator Status"
    should_end_session = True

    response = urllib2.urlopen(API_BASE_URL + "/elevator")
    septa_elevator_status = json.load(response)

    if septa_elevator_status['meta']['elevators_out'] == 0:
        speech_output = 'All Elevators are currently operational'
    else:
        for elevators in septa_elevator_status['results']:
            speech_output += 'On' + elevators['line'] + ' at station ' + elevators['station'] + \
                ' the ' + elevators['elevator'] + \
                ' elevator has ' + elevators['message'] + ' . '

    return build_response(session_attributes, build_speechlet_response(
        card_title, speech_output, reprompt_text, should_end_session))

2 个答案:

答案 0 :(得分:0)

在其他情况下,您尚未定义speech_output是什么。

如果speech_output定义了

septa_elevator_status['meta']['elevators_out'] == 0,但没有定义。 else子句还需要定义speed_output,或者需要在if / else块之前定义。请记住:a += b意味着a是原来的样子,加上b。因此,如果未定义a,则会引发错误。

以前,这可能不会是一个错误,因为if案例的评估结果为True,意味着已定义speech_output,但是现在if案例不是True,因此不再定义speech_output

答案 1 :(得分:0)

检查septa_elevator_status['results']的内容。如果为空(大概就是这种情况),则for循环中的代码将不会执行,并且speech_output也不会被定义。