In: Computer Science
PYTHON-- trying to teach myself how to create new classes. The Bird class will read a file that has a list of species and will write to another file with the species and # of occurrences . use __lt__ to compare species and use #comments to explain the def methods in the class
example of input file:
blackbird
canary
hummingbird
canary
hummingbird
canary
output file:
Blackbird,1 Hummingbird,2 Canary,3
class Birds: #do i need count in init? def __init__(self, species, count): self.species = species self.count = int(count) def __str__(self): return f" {self.species}, {self.count}" def __repr__(self): def __eq__(self, other): def __lt__(self, other): return self.species < other.species word_freq = [] with open('bird_observations_small.txt', 'r') as input_file: for line in input_file: data = line.strip().split(',') x = Birds(data[0], data[1]) if x not in word_freq: word_freq.append(x) with open('sorted_species.csv', 'w') as output_file: for i in word_freq: output_file.write(f"{i.species},{i.count}\n")
class Birds:
count = 0 #intial bird count is 0
def __init__(self, species):
self.species = species #initialize it with a string that is the bird name
def __count__(self):
self.count = self.count + 1 #increaces 1 everytime it gets called
def __compare__(self, other):
if self.species == other: #compares self.name with the string passed to it
return True
else:
return False
def getSpeciesName(self): #getname
return self.species
def getCount(self): #getcount
return self.count
blackbird = Birds("blackbird") #objects created
canary = Birds("canary")
hummingbird = Birds("hummingbird")
#you can use an array of bird to make things simple and robust
with open('test', 'r') as input_file: #comparision
for line in input_file:
line = line.strip()
if blackbird.__compare__(line):
blackbird.__count__()
if canary.__compare__(line):
canary.__count__()
if hummingbird.__compare__(line):
hummingbird.__count__()
with open('out', 'w') as output_file:
output_file.write(f"{blackbird.getSpeciesName()},{blackbird.getCount()}\n")
output_file.write(f"{canary.getSpeciesName()},{canary.getCount()}\n")
output_file.write(f"{hummingbird.getSpeciesName()},{hummingbird.getCount()}\n")