Skip to content

Instantly share code, notes, and snippets.

@codecademydev
Created May 17, 2022 15:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save codecademydev/4dd60e18a2d6cf0ebc506a3accb084ab to your computer and use it in GitHub Desktop.
Save codecademydev/4dd60e18a2d6cf0ebc506a3accb084ab to your computer and use it in GitHub Desktop.
Codecademy export
# names of hurricanes
names = ['Cuba I', 'San Felipe II Okeechobee', 'Bahamas', 'Cuba II', 'CubaBrownsville', 'Tampico', 'Labor Day', 'New England', 'Carol', 'Janet', 'Carla', 'Hattie', 'Beulah', 'Camille', 'Edith', 'Anita', 'David', 'Allen', 'Gilbert', 'Hugo', 'Andrew', 'Mitch', 'Isabel', 'Ivan', 'Emily', 'Katrina', 'Rita', 'Wilma', 'Dean', 'Felix', 'Matthew', 'Irma', 'Maria', 'Michael']
# months of hurricanes
months = ['October', 'September', 'September', 'November', 'August', 'September', 'September', 'September', 'September', 'September', 'September', 'October', 'September', 'August', 'September', 'September', 'August', 'August', 'September', 'September', 'August', 'October', 'September', 'September', 'July', 'August', 'September', 'October', 'August', 'September', 'October', 'September', 'September', 'October']
# years of hurricanes
years = [1924, 1928, 1932, 1932, 1933, 1933, 1935, 1938, 1953, 1955, 1961, 1961, 1967, 1969, 1971, 1977, 1979, 1980, 1988, 1989, 1992, 1998, 2003, 2004, 2005, 2005, 2005, 2005, 2007, 2007, 2016, 2017, 2017, 2018]
# maximum sustained winds (mph) of hurricanes
max_sustained_winds = [165, 160, 160, 175, 160, 160, 185, 160, 160, 175, 175, 160, 160, 175, 160, 175, 175, 190, 185, 160, 175, 180, 165, 165, 160, 175, 180, 185, 175, 175, 165, 180, 175, 160]
# areas affected by each hurricane
areas_affected = [['Central America', 'Mexico', 'Cuba', 'Florida', 'The Bahamas'], ['Lesser Antilles', 'The Bahamas', 'United States East Coast', 'Atlantic Canada'], ['The Bahamas', 'Northeastern United States'], ['Lesser Antilles', 'Jamaica', 'Cayman Islands', 'Cuba', 'The Bahamas', 'Bermuda'], ['The Bahamas', 'Cuba', 'Florida', 'Texas', 'Tamaulipas'], ['Jamaica', 'Yucatn Peninsula'], ['The Bahamas', 'Florida', 'Georgia', 'The Carolinas', 'Virginia'], ['Southeastern United States', 'Northeastern United States', 'Southwestern Quebec'], ['Bermuda', 'New England', 'Atlantic Canada'], ['Lesser Antilles', 'Central America'], ['Texas', 'Louisiana', 'Midwestern United States'], ['Central America'], ['The Caribbean', 'Mexico', 'Texas'], ['Cuba', 'United States Gulf Coast'], ['The Caribbean', 'Central America', 'Mexico', 'United States Gulf Coast'], ['Mexico'], ['The Caribbean', 'United States East coast'], ['The Caribbean', 'Yucatn Peninsula', 'Mexico', 'South Texas'], ['Jamaica', 'Venezuela', 'Central America', 'Hispaniola', 'Mexico'], ['The Caribbean', 'United States East Coast'], ['The Bahamas', 'Florida', 'United States Gulf Coast'], ['Central America', 'Yucatn Peninsula', 'South Florida'], ['Greater Antilles', 'Bahamas', 'Eastern United States', 'Ontario'], ['The Caribbean', 'Venezuela', 'United States Gulf Coast'], ['Windward Islands', 'Jamaica', 'Mexico', 'Texas'], ['Bahamas', 'United States Gulf Coast'], ['Cuba', 'United States Gulf Coast'], ['Greater Antilles', 'Central America', 'Florida'], ['The Caribbean', 'Central America'], ['Nicaragua', 'Honduras'], ['Antilles', 'Venezuela', 'Colombia', 'United States East Coast', 'Atlantic Canada'], ['Cape Verde', 'The Caribbean', 'British Virgin Islands', 'U.S. Virgin Islands', 'Cuba', 'Florida'], ['Lesser Antilles', 'Virgin Islands', 'Puerto Rico', 'Dominican Republic', 'Turks and Caicos Islands'], ['Central America', 'United States Gulf Coast (especially Florida Panhandle)']]
# damages (USD($)) of hurricanes
damages = ['Damages not recorded', '100M', 'Damages not recorded', '40M', '27.9M', '5M', 'Damages not recorded', '306M', '2M', '65.8M', '326M', '60.3M', '208M', '1.42B', '25.4M', 'Damages not recorded', '1.54B', '1.24B', '7.1B', '10B', '26.5B', '6.2B', '5.37B', '23.3B', '1.01B', '125B', '12B', '29.4B', '1.76B', '720M', '15.1B', '64.8B', '91.6B', '25.1B']
# deaths for each hurricane
deaths = [90,4000,16,3103,179,184,408,682,5,1023,43,319,688,259,37,11,2068,269,318,107,65,19325,51,124,17,1836,125,87,45,133,603,138,3057,74]
# write your update damages function here:
def update_damages(lst):
float_damages = []
for damage in lst:
if damage[-1] == 'B':
float_damages.append(float(damage.strip('B'))*1000000000)
elif damage[-1] == 'M':
float_damages.append(float(damage.strip('M'))*1000000)
else:
float_damages.append(damage)
return float_damages
updated_damages = update_damages(damages)
#print(updated_damages)
# write your construct hurricane dictionary function here:
# { "name_hurricane" : {Name: "name_hurricane", Month: "month", Year: "year", wind: "wind", area: "area", damage: "damage", death: "death"} }
def build_hurricane_by_name(names, months, years, winds, areas, damages, deaths):
hurricane_dict = {}
for i in range(0,34):
hurricane_information = {}
hurricane_information["Name"] = names[i]
hurricane_information["Month"] = months[i]
hurricane_information["Year"] = years[i]
hurricane_information["Wind"] = winds[i]
hurricane_information["Area"] = areas[i]
hurricane_information["Damage"] = damages[i]
hurricane_information["Death"] = deaths[i]
hurricane_dict[names[i]] = hurricane_information
return hurricane_dict
hurricane_dict_by_name = build_hurricane_by_name(names, months, years, max_sustained_winds, areas_affected, updated_damages, deaths)
#for elem in hurricane_dict.items():
# print(elem)
# write your construct hurricane by year dictionary function here:
# {"year" : [hurricane_information, hurricane_information],
# "year2" : [hurricane_information, hurricane_information]}
def build_hurricane_by_year(hurricane_dict_by_name):
hurricane_dict_by_year = {}
for elem in hurricane_dict_by_name.items():
if elem[1]['Year'] in hurricane_dict_by_year:
hurricane_dict_by_year[elem[1]['Year']].append(elem[1])
else:
hurricane_dict_by_year[elem[1]['Year']] = []
hurricane_dict_by_year[elem[1]['Year']].append(elem[1])
return hurricane_dict_by_year
hurricane_dict_by_year = build_hurricane_by_year(hurricane_dict_by_name)
#for elem in hurricane_dict_by_year.items():
# print(elem)
# write your count affected areas function here:
# { "affected_areas" : count_affected, "affected_areas" : count_affected, "affected_areas" : count_affected }
def count_affected_areas(areas_affected):
areas_count_dict = {}
for hurricane_affected_area in areas_affected:
for each_area in hurricane_affected_area:
if each_area in areas_count_dict:
areas_count_dict[each_area] += 1
else:
areas_count_dict[each_area] = 0
areas_count_dict[each_area] += 1
return areas_count_dict
areas_count_dict = count_affected_areas(areas_affected)
#print(areas_count_dict)
# write your find most affected area function here:
# ("affected areas name", "affected areas count")
def find_most_affected(areas_count_dict):
max_count = -1
selected_area = ()
for item in areas_count_dict.items():
if item[1] > max_count:
max_count = item[1]
selected_area = (item[0], item[1])
return selected_area
most_areas = find_most_affected(areas_count_dict)
#print(most_areas)
# write your greatest number of deaths function here:
# ("hurricane_name", "number of death")
def find_greatest_death(names, deaths):
max_death = -1
idx = 0
for i in range(0, 34):
if deaths[i] > max_death:
max_death = deaths[i]
idx = i
return (names[idx], max_death)
greatest_death_hurricane = find_greatest_death(names, deaths)
#print(greatest_death_hurricane)
# write your catgeorize by mortality function here:
# {mortality_rating : [hurricane_information, hurricane_information]}
mortality_scale = {0: 0,
1: 100,
2: 500,
3: 1000,
4: 10000}
def rate_mortality_scale(mortality_scale, hurricane_information):
mortality_dict = {}
for hurricane in hurricane_information.items():
mortality_key = -1
for scale in mortality_scale.items():
if hurricane[1]["Death"] > scale[1]:
mortality_key = scale[0]+1
if mortality_key in mortality_dict:
mortality_dict[mortality_key].append(hurricane[1])
else:
mortality_dict[mortality_key] = []
mortality_dict[mortality_key].append(hurricane[1])
return mortality_dict
mortality_dict = rate_mortality_scale(mortality_scale, hurricane_dict_by_name)
#print(mortality_dict)
# write your greatest damage function here:
def find_greatest_damage(names, damages):
max_damage = -1
idx = 0
for i in range(0, 34):
if damages[i] == 'Damages not recorded':
continue
if damages[i] > max_damage:
max_damage = damages[i]
idx = i
return (names[idx], max_damage)
max_damage = find_greatest_damage(names, updated_damages)
#print(max_damage)
# write your catgeorize by damage function here:
damage_scale = {0: 0,
1: 100000000,
2: 1000000000,
3: 10000000000,
4: 50000000000}
def rate_damage_scale(damage_scale, hurricane_information):
damage_dict = {}
for hurricane in hurricane_information.items():
mortality_key = 0
for scale in damage_scale.items():
if hurricane[1]["Damage"] == 'Damages not recorded':
continue
if hurricane[1]["Damage"] > scale[1]:
mortality_key = scale[0]+1
if mortality_key in damage_dict:
damage_dict[mortality_key].append(hurricane[1])
else:
damage_dict[mortality_key] = []
damage_dict[mortality_key].append(hurricane[1])
return damage_dict
damage_dict = rate_damage_scale(damage_scale, hurricane_dict_by_name)
#print(damage_dict)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment