предложение Магнуса, несомненно, правильный ответ на ваш вопрос, как корректно, но вообще говоря, вы хотите использовать словарь для проблем, как это:
statemap = {(1, 0): (0, 1), (0, 1): (-1, 0), (-1, 0): (0, -1), (0, -1): (1, 0)}
dx, dy = statemap[dx, dy]
Даже в этом случае я мог спорить с помощью словаря лучше, так как ясно, что есть ровно четыре состояния и они повторяются, но трудно противостоять чистой красоте все математические.
Кстати, код в вашем вопросе есть ошибка в нем, и, предполагая, что значения, проверяют на единственно возможные значения, это эквивалентно:
dx, dy = 1, 0
Исправлена ошибка в том, что вам понадобится elif
для второго и последующих условий, в противном случае вы продолжите тестирование dx
и dy
после их замены. Если они 1
и 0
, то все ваши условия будут истинными, и они заканчиваются тем же самым в конце! Если они начинаются как 0
и 1
, тогда второе и все последующие условия будут истинными, и вы снова получите 1, 0
. И так далее ...
Я не эксперт по python, но он выглядит как таблица перехода состояния, поэтому я буду придерживаться их в dict, где ключ - это состояние from, а значение - состояние. –
Вы имели в виду 'elif' на линиях 3,5,7? Потому что, поскольку он стоит 1,0, он будет снова отправлен на дикую охоту за гусями обратно в 1,0! – wim
@wim: На самом деле '1, 0' станет' 0, 1', как и ожидалось, поскольку '[dx, dy] == 0, 1' всегда false. –