我对此代码有疑问
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仍然显示一个TypeError:choice()只需要2个参数(给定3个),我不认为它是True和False只是2个参数?或不?
答案 0 :(得分:4)
您的random.choice()
来电应该是:
>>> import random
>>> random.choice([False, True]) # wrapped within list
True
现在来讨论这个问题。根据{{3}}文档,它只接收一个参数 sequence 。但是在错误中,您会看到正好采用2个参数,因为choice()
函数在Random
类(random.choice())中定义。类方法期望第一个参数(也称为self
)作为同一个类的对象。在这里,random
作为self
传递。
另请阅读source code以获得更清晰的信息。
答案 1 :(得分:0)
random.choice
采用可迭代的,而不是单独的参数。
random.choice([True, False])