我正在尝试创建一种篮球模拟。这就是我到目前为止所做的:
import random
from scipy.stats import norm
class teams:
def __init__(self, pytho, pythd, coach, coachdev):
self.pytho = pytho
self.pythd = pythd
self.coach = coach
self.coachdev = coachdev
def adjpytho(self):
print((norm.ppf(random.random()) * self.coachdev + self.coach) + self.pytho)
def adjpythd(self):
print((norm.ppf(random.random()) * self.coachdev + self.coach) + self.pythd)
class game:
def __init__(self, team1, team2):
self.team1 = team1
self.team2 = team2
def points(self, team1, team2):
print(teams.adjpytho(team1) - teams.adjpythd(team2))
Florida = teams(.90, .84, .06, .05)
Alabama = teams(.88, .83, .04, .06)
Oklahoma = teams(.81, .78, .06, .1)
Virginia = teams(.77, .99, .04, .06)
print(game.points(self, Florida, Virginia))
正如您所看到的,我已经设置了最初的“团队”课程并且工作正常。在其中,我有每个团队的四个主要参数,然后我调整其中两个(“adjpytho”和“adjpythd”)。
但是,我想现在得到游戏的实际模拟,我正在努力。我试图设置一个“游戏”类,它带来两个参数(两个团队在游戏中玩)。但是当我到达班级的“要点”部分时,我遇到了问题。
在“积分”中,我想拉动teams.adjpytho(佛罗里达州),然后是teams.adjpythd(弗吉尼亚州)。为了方便起见,我只是减去了两个,最终的结果应该是在控制台上输出的内容。
我试着做
print(game.points(self, Florida, Virginia))
但那不起作用。任何提示?
答案 0 :(得分:2)
在colors: ['#0d6957','#1fb89a']
中,teams.adjpytho(team1)
是类名,teams
是变量名。在对象上调用方法的正确方法是:
team1
所以你根本不需要提及类名。 Python会发现team1.adjpytho()
是类team1
的一个实例(你应该把它重命名为teams
,顺便说一下 - 类名应该是单数),{{1} }将自动作为team
参数传递。
对于teams1
,您需要先创建它的实例,然后在其上调用self
。此外,game
并不需要points()
和points()
参数,因为您已经将团队作为构造函数参数提供并将它们分配给变量 - 它们将可用作为team1
和team2
,所以在self.team1
内,你可以做到,例如self.team2
。然后,你这样称呼它:
points()
答案 1 :(得分:0)
print(teams.adjpytho(team1) - teams.adjpythd(team2))
将其更改为:
str(teams.adjpytho(team1) - teams.adjpythd(team2))
因为print是一个python命令,它会在屏幕上放置一些内容然后返回0. str()接受一些东西并将其变成一个字符串,然后可以打印。