2017-06-20 83 views
-2

你好我写一个大富翁游戏模拟器,并有 公益金卡号的卡对象中的以下列表: -随机洗牌错误信息

self.CChcards_MessNo = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] 

我想洗牌这些,下面的方法

def shuffle(self): 
    import random 
    random.shuffle(self.CChcards_MessNo) 

它在程序的早期工作,但在程序的主要部分稍后失败并给出 以下消息。

File "C:\Users\David\AppData\Local\Programs\Python\Python35\lib\random.py", line 278, in shuffle 
    for i in reversed(range(1, len(x))): 
TypeError: object of type 'int' has no len() 

当程序已经通过16卡循环,就会出现此,现在需要洗牌

+1

因为'x'是一个整数... –

+5

有代码(在你的问题中未示出),它给CChcards_MessNo分配一个整数。 – NPE

+1

我猜''self.CChcards_MessNo'在这一点上不再是一个列表。 –

回答

1
>>> class Foo(): 
...  def __init__(self): 
...   self.CChcards_MessNo = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] 
...  def shuffle(self): 
...   import random 
...   random.shuffle(self.CChcards_MessNo) 
...  def bug(self): 
...   print("I'm a bug that makes shuffle() fail by assigning an int to self.CChcards_MessNo") 
...   self.CChcards_MessNo = 0 
... 
>>> foo = Foo() 
>>> foo.shuffle() 
>>> foo.bug() 
I'm a bug that makes shuffle() fail by assigning an int to self.CChcards_MessNo 
>>> foo.shuffle() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 6, in shuffle 
    File "C:\Program Files (x86)\Python36-32\lib\random.py", line 271, in shuffle 
    for i in reversed(range(1, len(x))): 
TypeError: object of type 'int' has no len() 
+1

** TL; DR **:在您的代码中的某处分配'self.CChcards_MessNo'。 –

+0

^被设置为一个整数。 –

+0

是的,我已经设置为一个整数! Thankyou所有的repliers。我被错误消息难住 - 大概与洗牌模块中的一行有关。 – deezil