def ensure_float(v):
if is_number(v):
return float(v)
def audit_population_density(input_file):
for row in input_file:
population = ensure_float(row['populationTotal'])
area = ensure_float(row['areaLand'])
population_density = ensure_float(row['populationDensity'])
if population and area and population_density:
calculated_density = population / area
if math.fabs(calculated_density - population_density) > 10:
print "Possibly bad population density for ", row['name']
if __name__ == '__main__':
input_file = csv.DictReader(open("cities.csv"))
skip_lines(input_file, 3)
audit_population_density(input_file)