2013-07-02 166 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