#python #return-value
Вопрос:
Я пытаюсь вернуть кортеж из функции , но он возвращает только первый элемент , Когда я посмотрел в Интернете, все ресурсы сказали, что все сделано так, как я это сделал, есть какие-нибудь мысли ? мой код :
def depthFirst(initialState): exploredCount = 1 visitedCount = 0 frontier=[] frontier.append(initialState) explored=[] while len(frontier) gt; 0: state=frontier.pop() explored.append(state) visitedCount = visitedCount 1 if state in goalStates: return state nextStates=getNextStates(state) for i in range(len(nextStates)): if not nextStates[i] in frontier and not nextStates[i] in explored: frontier.append(nextStates[i]) exploredCount = exploredCount 1 return [initialState , exploredCount , visitedCount]
Я вызываю функцию следующим образом :
ans = depthFirst(state) arr = ans[0] explored = arr[1] visited = arr[2]
Комментарии:
1. Итак, какова начальная стоимость
state
? Что жеgetNextStates
делать?
Ответ №1:
Ваша проблема связана с частью функции ниже:
if state in goalStates: return state
Вышесказанное выполняется до того, как будет достигнута последняя строка функции. Поэтому функция работает до первого return
(как показано выше) и возвращает только state
, а не список [initialState , exploredCount , visitedCount]
Комментарии:
1. В этом и была проблема , глупый ха-ха-ха , спасибо, приятель
Ответ №2:
Он возвращается нормально, ваш первый элемент не имеет индекса 1
ans = depthFirst(state) # should work fine print(ans[0]) print(ans[1]) print(ans[2]) arr = ans[0] explored = arr[1] # arr doesn't have index 1 visited = arr[2]
РЕДАКТИРОВАТЬ: это при условии, что вы достигнете окончательного оператора возврата и не вернетесь раньше, как предлагается в другом ответе.