Submit | All submissions | Best solutions | Back to list |
PROG0143 - Airports |
The text file airports.txt contains information on all airports of the US. The information of each airport is on a separate line and consists of the following five fields of information that are separated by a tab:
- code: unique identification code for the airport
- latitude: latitude on which the airport is located (expressed in decimal degrees)
- longitude: longitude on which the airport is located (expressed in decimal degrees)
- city: name of the city in which the airport is located
- state: (abbreviated) name of the state in which the airport is located
The first line of the file is a header that contains the names of the different columns.
Assignment
- Write a function
readairports(filename)
- Write a function
distance(code1, code2, airports)
- Write a function
stopover(code1, code2, airports[, scope=4000])
Example
In the following interactive Python session we assume that the file airports.txt is located in the current directory.
>>> airports = readairports('airports.txt') >>> airports {'AGN': (57.83, 134.97, 'Angoon', 'AK'), ...} >>> airports['ADK'] (51.88, 176.65, 'Adak', 'AK') >>> airports['DCA'] (38.85, 77.04, 'Washington/Natl', 'DC') >>> airports['4OM'] (48.42, 119.53, 'Omak', 'WA') >>> distance('P60', 'MSN', airports) 1694.54554995 >>> distance('ADK', 'DCA', airports) 7295.50355678 >>> stopover('ADK', 'DCA', airports, 4000) '4OM'
Het tekstbestand luchthavens.txt bevat informatie over alle luchthavens van de Verenigde Staten. De informatie van elke luchthaven staat op een afzonderlijke regel, en bestaat uit de volgende vijf informatievelden die van elkaar worden gescheiden door een tab:
- code: unieke identificatiecode voor de luchthaven
- latitude: breedtegraad waarop de luchthaven gelegen is (uitgedrukt in decimale graden)
- longitude: lengtegraad waarop de luchthaven gelegen is (uitgedrukt in decimale graden)
- city: naam van de stad waarin de luchthaven gelegen is
- state: (afgekorte) naam van de staat waarin de luchthaven gelegen is
De eerste regel van het bestand is een hoofding die de namen van de verschillende kolommen bevat.
Opgave
- Schrijf een functie
leesLuchthavens(bestandsnaam)
- Schrijf een functie
afstand(code1, code2, luchthavens)
Om de afstand tussen twee luchthavens te berekenen, maak je gebruik van onderstaande formule \[ R\cdot \arctan\left(\frac{\sqrt{(\cos b_2\sin (l_1-l_2))^2 + (\cos b_1\sin b_2-\sin b_1\cos b_2 \cos(l_1-l_2))^2}}{\sin b_1\sin b_2+\cos b_1\cos b_2\cos(l_1-l_2)}\right) \] Dit is eigenlijk een formule die de afstand tussen twee punten op een bol met straal $R$ berekent. We stellen de Aarde hierbij dus benaderend voor als een bol, met straal $R = 6372{,}795$ km. Voorts stellen $b_1$ en $b_2$ (resp. $l_1$ en $l_2$) de breedteligging (resp. lengteligging) voor van de twee punten op de bol, uitgedrukt in radialen. Voor de omzetting van graden naar radialen moet je gebruik maken van de waarde pi uit de module math van de Python Standard Library. - Schrijf een functie
tussenlanding(code1, code2, luchthavens[, reikwijdte=4000])
Voorbeeld
In onderstaande interactieve Python sessie gaan we ervan uit dat het tekstbestand luchthavens.txt zich in de huidige directory bevindt.
>>> luchthavens = leesLuchthavens('luchthavens.txt') >>> luchthavens {'AGN': (57.83, 134.97, 'Angoon', 'AK'), ...} >>> luchthavens['ADK'] (51.88, 176.65, 'Adak', 'AK') >>> luchthavens['DCA'] (38.85, 77.04, 'Washington/Natl', 'DC') >>> luchthavens['4OM'] (48.42, 119.53, 'Omak', 'WA') >>> afstand('P60', 'MSN', luchthavens) 1694.54554995 >>> afstand('ADK', 'DCA', luchthavens) 7295.50355678 >>> tussenlanding('ADK', 'DCA', luchthavens, 4000) '4OM'
Added by: | Peter Dawyndt |
Date: | 2011-08-08 |
Time limit: | 20s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | |
Resource: | None |