2015-04-01 22:48:56 -03:00

50 lines
1.3 KiB
Python

FILENAME = 'metro_areas.txt'
class MetroArea:
def __init__(self, name, country, pop, pop_change, area):
self.name = name
self.country = country
self.pop = pop
self.pop_change = pop_change
self.area = area
def __repr__(self):
return '{0.name}, {0.country} ({0.pop})'.format(self)
def density(self):
return self.pop / self.area
def load():
metro_areas = []
with open(FILENAME, encoding='utf-8') as text:
for line in text:
if line.startswith('#'):
continue
# Country Name Rank Population Yr_change % Area(km2) Pop/km2
country, name, _, pop, pop_change, _, area, _ = line.split('\t')
pop = float(pop.replace(',', ''))
pop_change = float(pop_change)
area = float(area)
metro_areas.append((name, country, pop, pop_change, area))
return metro_areas
def list(metro_areas):
print('{:^18} {:>6} {:>4} {:>6}'.format('name', 'cc', 'pop', 'chg', 'area'))
for metro in metro_areas:
print('{:18} {:2} {:6.0f} {:4.0f} {:6.0f}'.format(*metro))
def list_instances(metro_areas):
metro_areas = [MetroArea(*fields) for fields in metro_areas]
for metro in metro_areas:
print(metro)
if __name__ == '__main__':
#list(load())
list_instances(load())