Использование словарей в Python вместо оператора Case/Switch

Я хочу рандомизировать кубик Рубика, который инициализирован как завершенный (все цвета на правильных сторонах). У меня есть функции перемещения, которые вращают куб. Я хочу случайным образом выбрать 50 функций подряд, чтобы правильно рандомизировать их.

Я делаю этот проект, чтобы узнать немного больше о Python, так как я в основном работаю с C++ и вижу, что для Python нет регистра/переключателя, поэтому я пробую словарь. Когда я создаю словарь, кажется, что код по какой-то причине выполняется:

def random_cube(self):
    scramble = {    0 : self.up_turn(),
                    1 : self.down_turn(),
                    2 : self.left_turn(),
                    3 : self.right_turn(),
                    4 : self.front_turn(),
                    5 : self.back_turn(),
                    6 : self.up_turn("inverted"),
                    7 : self.down_turn("inverted"),
                    8 : self.left_turn("inverted"),
                    9 : self.right_turn("inverted"),
                    10: self.front_turn("inverted"),
                    11: self.back_turn("inverted")
                }
    for x in range(50):
        i = random.randint(0,11)
        scramble[i]

Итак, когда я создаю этот словарь, кажется, что он по какой-то причине (я думаю) выполняет все 11 записей. Кажется, я не могу найти лучшего способа, по крайней мере, более элегантного, чем длинная строка операторов if/elif.

!EDIT: Реализуя оба предложения, флаг ("перевернутый") для функций не устанавливается ни одним из предложений. Например, вызов 1 и 7 дает мне down_turn, но вывод показывает, что флаг не был установлен, когда он должен был быть на номере 7.

Есть идеи?

8
задан HostileFork 17 November 2012 в 21:22
поделиться