我想随机化一个已初始化为完整的rubik多维数据集(所有颜色位于正确的两侧)。我有移动旋转立方体的函数。我想随机选取50个函数来正确地随机化它。在Python中使用字典代替Case/Switch语句
我正在做这个项目,以学习更多关于Python的知识,因为我大多数人都在做C++,而且我看到没有Python/switch的情况,所以我正在尝试一个字典。当我做了字典,代码似乎执行出于某种原因:
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字符串更优雅。
!编辑:实现这两个建议,函数的(“倒置”)标志不是由任何建议设置。例如,调用1和7都给我down_turn,但输出显示该标志没有设置时,它应该已在第7号。
任何想法?
作为设计笔记,有真的只有两个不同的举动人们可以在魔方上做。其余的只是一个如何定位脸的问题。编写如下所示的函数可能会更容易:'def rotate(face,clockWise = True):'也可以使用dict和for for循环替代列表并使用'random.choice'从中选择。 – 2012-04-29 04:03:06
从列表random.choice,我修好了。我把函数调用放在一个列表中,并尝试过,但对我来说并不适用...另外,我设置了多维数据集,以便始终将白色视为“前”。我不认为这是表示它的最好方法:\ – 2012-04-29 04:29:15