我在亚历山大滑雪中一直收到关于speech_output的UnboundLocalError错误

2024-06-16 14:24:55 发布

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

我开始收到这个错误,但它在以前工作过,所以我不确定发生了什么变化

File "/var/task/lambda_function.py", line 126, in get_elevator_status speech_output += 'On' + elevators['line'] + ' at station ' + elevators['station'] + \ UnboundLocalError: local variable 'speech_output' referenced before assignment

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))

Tags: inoutputgetonresponsesessionstatusline
2条回答

您还没有定义else案例中的speech_output是什么

如果septa_elevator_status['meta']['elevators_out'] == 0,则定义speech_output,否则不定义。else子句还需要定义speed_output,或者需要在if/else块之前定义它。请记住:a += b意味着a就是它本来的样子,加上b。因此,如果未定义a,您将引发一个错误

据推测,这以前不会是一个错误,因为if case的计算结果为True,这意味着正在定义speech_output,但现在if case不是True,因此不再定义speech_output

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

相关问题 更多 >