我开始收到此错误,但之前一直在工作,所以我不确定发生了什么变化。
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))
答案 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
也不会被定义。