2016-10-23 59 views
-1

我有問題,該代碼數在python參數

import random 

class MyPlayer: 

def __init__(self, payoff_matrix, number_of_iterations=0): 
    self.payoff_matrix = payoff_matrix 
    self.number_of_iterations = number_of_iterations 
    self.opponent_move = None 
    self.opponent_move_history = list() 


def move(self): #move is random, True or False 
    return random.choice(False, True) 

def record_opponents_move(self, opponent_move): #recording opponents moves 
    self.opponent_move = opponent_move 
    self.opponent_move_history.append(opponent_move) 

Pycharm依然呈現出類型錯誤:選擇()到底需要2個參數(3給定的),我不明白真和假都只是2參數呢?或不?

回答

0

random.choice需要一個可迭代的,而不是單獨的參數。

random.choice([True, False]) 
+0

可能值得指出OP示例中的「第三」參數是「隨機」本身 – brianpck

4

random.choice()通話應該是這樣的:

>>> import random 
>>> random.choice([False, True]) # wrapped within list 
True 

現在來的問題。按照random.choice()文件,它只接收一個參數序列。但在錯誤中,您看到只需要2個參數,因爲choice()函數在Random類(source code)中定義。類方法期望第一個參數(也稱爲self)作爲同一類的對象。所以在這裏,random作爲self傳遞。

另請閱讀What is the purpose of self in Python?以獲得更多清晰的信息。

+0

非常感謝您的幫助。當然,你是對的,那就是問題所在。 –

+0

@JozefSkála:不需要感謝。如果答案對您有幫助,請標記[已接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –