我想隨機化一個已初始化爲完整的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