我开始收到这个错误,但它在以前工作过,所以我不确定发生了什么变化
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))
您还没有定义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
将不会被定义相关问题 更多 >
编程相关推荐