可以跳过斜体文本。
首先:如果我要求的是基本知识,也很容易找到答案,或者任何类似的东西可能会让我的帖子对任何人感到厌烦,请原谅我。我是编程新手,刚开始有借口不为考试阅读。我正在尝试制作一个程序,可以模拟从人类部落到……嗯,更先进的人类部落的进化。我的目标是在未来的某个时间制作一款非常简单的类似文明的游戏,专注于人而不是建筑物和单位。从头开始,目前对编程几乎一无所知,我知道这是我可能永远无法完成的任务。希望我能在路上学到一些东西。因为我的知识非常有限,我的问题会很笨拙而且表述很糟糕。对不起,感谢阅读。
当前的问题:我创建了一个类来制作应该代表人的对象。
该类目前看起来像这样:
class Settler:
settlerCount = 0
iqlistfemale = []
iqlistmale = []
maleCount = 0
femaleCount = 0
surnameMale = []
surnameFemale = []
def __init__(self, sex):
if sex=="m" or sex=="f" or sex=="M" or sex=="F":
self.name = choice(surnames)
Settler.settlerCount += 1
self.iq=round(random.normalvariate(100,10))
if sex=="m" or sex=="M":
self.sex = "Male"
Settler.iqlistmale=Settler.iqlistmale+[self.iq]
Settler.surnameMale += [self.name]
Settler.maleCount += 1
else:
self.sex = "Female"
Settler.iqlistfemale=Settler.iqlistfemale+[self.iq]
Settler.surnameFemale += [self.name]
Settler.femaleCount += 1
稍后它将包含更多属性,这只是一个开始。
我还制作了一个循环,要求您创建一定数量的男性,然后创建一定数量的女性。
循环的东西看起来像这样:
x=int(input("Number of male Settlers to generate? (1-20) "))
if x >0 and x <21:
tellergenerator=0
while tellergenerator<x:
Settler("M")
tellergenerator=tellergenerator+1
else:
print("Wrong input!")
x=int(input("Number of female Settlers to generate? (1-20) "))
if x >0 and x <21:
tellergenerator=0
while tellergenerator<x:
Settler("F")
tellergenerator=tellergenerator+1
else:
print("Wrong input!")
另外,我做了一个 def 的东西,可以让你调用对象属性的信息:
def displaySettler(self):
print("Name:", self.name, "Sex:", self.sex, "IQ:", self.iq)
现在,对于问题:
- 主要问题:我的循环东西工作正常,这意味着它创建了我想要创建的正确性别的对象数量。据我所知,我的问题是它创建了没有名称的对象。这意味着我不能调用 displaySettler(),因为它需要我调用 nameofobject.displaySettler()。我怎样才能使用某种循环函数来创建一堆对象,使这些对象具有名称。
我找到了一种将数字组合到字符串的方法,这可能允许我将一个创建对象名称的系统放入循环中,例如settler1、settler2、settler3,但我这样做的方式是执行类似的操作
x=settler
y=(some counter)
z=x+str(y)
那是我可以使用的东西吗?我知道用名称创建对象的唯一方法是编写类似
settler1=Settler("F")
或者
w=Settler("F")
是否可以使用变量 z 的内容来命名?
- 我还想问以下问题:正如您在我的课堂上看到的那样,我正在做一堆列表。我想我必须为每种性别的每个属性制作一个列表,其中包含所有对象的特定属性。我希望这些列表能够计算每个属性的总体平均值,诸如此类。
是否可以直接从对象中获取这些值,并直接遍历所有对象并从中计算平均值?
或者换一种说法:如果我有 200 个对象,有没有办法将所有对象的 IQ 加在一起?
感谢阅读(如果有人走到这一步)。所有建设性的反馈将不胜感激。