斜体のテキストはスキップできます。
まず第一に、私が求めているのが基本的な知識であること、答えを見つけやすいこと、または私の投稿が誰かに迷惑をかける可能性のある同様のものであることを許してください. 私はプログラミングを始めたばかりで、試験のために読まない言い訳をするためにプログラミングを始めました。私は、人間の部族からより高度な人間の部族への進化を模倣できるプログラムを作成しようとしています。私の目標は、将来的には、建物やユニットではなく人に焦点を当てた、非常にシンプルな Civilization のようなゲームを作成することです。ゼロから始めて、現時点ではプログラミングについてほとんど何も知らないので、これはおそらく決して完了することのないタスクであることを知っています. うまくいけば、途中で何かを学ぶことができます。私の知識は非常に限られているため、私の質問はぎこちなく、うまく定式化されていません。すみません、読んでくれてありがとう。
現在の問題: 人を表すオブジェクトを作成するクラスを作成しました。
現時点では、クラスは次のようになります。
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)
さて、質問のために:
- 主な質問: 私のループは正常に動作します。つまり、作成したい正しい性別のオブジェクトを多数作成します。私の問題は、私が知る限り、名前のないオブジェクトを作成することです。これは、nameofobject.displaySettler() を実行する必要があるため、displaySettler() 呼び出しを実行できないことを意味します。ある種のループ関数を使用して一連のオブジェクトを作成し、それらのオブジェクトに名前を付けるにはどうすればよいですか。
数値を文字列に結合する方法を見つけました。これにより、解決者 1、解決者 2、解決者 3 などのオブジェクト名を作成するシステムをループに入れることができますが、その方法は次のようなことです。
x=settler
y=(some counter)
z=x+str(y)
それは私が使用できるものですか?名前付きのオブジェクトを作成する唯一の方法は、次のように書くことです
settler1=Settler("F")
また
w=Settler("F")
変数 z の内容を使用して何かに名前を付けることは可能ですか?
- また、次のこともお聞きしたいと思います。クラスからわかるように、私はたくさんのリストを作成しています。すべてのオブジェクトの特定の属性を含む、すべての性別のすべての属性のリストを作成する必要があると考えています。これらのリストで、各属性の人口平均値などを計算できるようにしたいと考えています。
これらの値をオブジェクトから直接取得し、すべてのオブジェクトを直接調べて、そこから平均を計算することは可能ですか?
別の言い方をすれば、200 個のオブジェクトがある場合、すべてのオブジェクトを合計した IQ を取得する方法はありますか?
読んでくれてありがとう(誰かがここまで来たら)。すべての建設的なフィードバックは大歓迎です。