Oct-10-2018, 11:27 PM
This is my code. Depending on the season and climate chosen I need to print the 5 closest cities from to coordinates 37°22'N and 107°25'W. I don't know where I would go from here. How do I find the closest cities. I already have the distance formula in my code but I can't implement it correctly
P.S. I know my for loops at the end are wrong. I have them there so I could get the correct syntax.
P.S. I know my for loops at the end are wrong. I have them there so I could get the correct syntax.
with open('cities.txt','r', encoding = 'cp1252') as fin: # opens file with read permission import math season = input('Will you take your vacation during summer or winter? ') climate = input('Do you want to go to a warm or a cold place? ') coldsummer = [] # these are empty lists that will be filled in later warmsummer = [] coldwinter = [] warmwinter = [] data = fin.read().splitlines(True) for line in data[1:-1]: line = line.split('\t') # splits elements in line with a tab lat = line[0] # these assign variables to certain parts of the file long = line[1] city = line[2] lat_deg = int(lat[0:2].strip('°').strip('N').strip('S')) # strips non integer parts lat_min = int(lat[3:5].strip('°').strip('N').strip('S')) long_deg = int(long[0:2].strip('°').strip('E').strip('W')) long_min = int(long[3:5].strip('°').strip('E').strip('W')) lat_DMS = lat_deg + (lat_min/60) # converts to degree-minute-second lat_rad = lat_DMS*(math.pi/180) # converts to radian long_DMS = long_deg + (long_min/60) long_rad = long_DMS*(math.pi/180) R = 6360 # assumed radius of Earth Mercedlat_DMS = 37 + 22/60 # coordinate for Merced, CA in degree-minute-second Mercedlat_rad = Mercedlat_DMS*(math.pi/180) # in radians Mercedlong_DMS = 107 + 25/60 Mercedlong_rad = Mercedlong_DMS*(math.pi/180) distance = 2*R*math.sin(math.sqrt(math.sin((lat_rad - Mercedlat_rad)/2)**2 + # distance formula math.cos(lat_rad)*math.cos(Mercedlat_rad) * math.sin((long_rad - Mercedlong_rad)/2)**2))**-1 if lat_deg > 66: # these if statements will fill in lists with appropriate values coldsummer.append(line) coldwinter.append(line) elif lat_deg > 35 and lat_deg < 66: warmsummer.append(line) coldwinter.append(line) else: warmsummer.append(line) warmwinter.append(line) for x in warmsummer: # the for loops will take desired list and print values if season == 'summer': if climate == 'warm': print(x[2]) for x in coldsummer: if season == 'summer': if climate == 'cold': print(x[2]) for x in warmwinter: if season == 'winter': if climate == 'warm': print(x[2]) for x in coldwinter: if season == 'winter': if climate == 'cold': print(x[2])