2013-07-02 168 views
-2

我是python的初學者,我已經得到了我編寫的閃存卡遊戲的代碼。下面的代碼只是它的一小部分。Python。以隨機順序顯示項目

remove = 0 
     while remove < 2: 
      a = random.choice(list(key))  
      if (a) == line27: 
       print(a) 
       x = input(random.choice(defi)) 
       x = input(random.choice(defi)) 
       x = input(line28) 

       if x == ('c'): 
        remove = remove + 1 
        print('you got it right') 
        score = (score + 1) 
        print('score =', score) 
       if x == ('b', 'a'): 
        print('thats wrong') 
       print() 
       t = t + 1 

       if remove == 2: 
        key.remove(line27) 

我必須要能夠顯示這一點:

x = input(random.choice(defi)) 
x = input(random.choice(defi)) 
x = input(line28) 
隨機順序

每顯示一次。所以這兩個隨機選擇必須顯示在不同的位置,第28行也是如此。如果這是任何幫助,則兩個隨機選擇在列表中,並且行28在另一個列表中。

+4

有幾件事:''x''總是最後一個賦值語句的結果,'input'沒有做你認爲的是。 'x'不會等於_tuple_'('b','a')';最後 - 你忘了問一個問題。 –

+0

當你運行這段代碼時會發生什麼?想必你會看到意想不到的輸出?我猜你是要求用戶隨機輸入一段信息?如果沒有更多的上下文,很難說出你期望的結果,並且x始終等於輸入(line28),所以x的前兩個賦值是多餘的。 「defi」中包含什麼?什麼是line28和line27?什麼是T?它似乎沒有用處...我想幫助你,但你必須首先更清楚地定義問題。 – Luke

+0

我知道什麼輸入,因爲我已經測試到這裏,它工作正常。對不起 –

回答

2

會這樣就夠了嗎?好像這是你在問什麼,但我真的不知道......

def randomInput(list): 
    randIdx = random.randint(0, len(list)-1) 
    in = input(list[randIdx]) 
    list.remove(randIdx) 
    return in, list 

inputs = [random.choice(defi), random.choice(defi), line28] 
x, inputs = randomInput(inputs) 
x, inputs = randomInput(inputs) 
x, inputs = randomInput(inputs) 

而且,布爾汗·哈立德說,X是永遠不會等於元組(「B」, 'a')...我想你的意思是

x == 'b' or x == 'a' 
+1

是的,謝謝你,這是獾。 :-) –

+0

樂於幫助。 :) – Luke