for-Schleife komplettieren zum API-Abruf

Code-Stücke können hier veröffentlicht werden.
Antworten
PythonsPalace
User
Beiträge: 12
Registriert: Freitag 9. September 2016, 09:58

Guten Morgen,

ich möchte mit meinem u.g. Code eine API x-mal ausführen und dazu eine for-Schleife vor die eigentliche Funktion setzen. Irgendwie fehlt mir noch ein wichtiger Teil, damit das ganze läuft. Was habe ich vergessen? Kann mir jemand bitte helfen?
Vielen Dank und schöne Wochenendgrüße!


import requests
from pprint import pprint
def main ():

city = ["Johannesburg", "Hamburg", "Hannover", "Berlin"]
for item in city:

....

response = requests.get("http://api.openweathermap.org/data/2.5/weather?q=" + city + "&appid=3600e5cb48f86a62a861f5d9609af316&units=metric")
weather = response.json()
#pprint(weather) auskommentieren, um alle Daten zu sehen.
print("Ort:",weather['name'])
print("Temperatur:", weather['main'] ['temp'])
print("Bewölkung:", weather['weather'] [0] ['description'])
print("Windgeschwindigkeit:", weather['wind'] ['speed'])
if __name__ == '__main__':
main()
Sirius3
User
Beiträge: 17703
Registriert: Sonntag 21. Oktober 2012, 17:20

@PythonsPalace: wenn man etwas wiederholen möchte, sollte man das in eine for-Scheife schreiben. Statt den query-String bei requests selbst per + zusammenzustücken sollte man das params-Argument und ein Wörerbuch verwenden, dann werden Sonderzeichen auch gleich richtig kodiert. Wichtig sind auch Variablennamen, city ist ja keine einzelne Stadt, sondern eine Liste von Städten, der Name cities wäre daher passender. item ist dann auch nicht nur irgendein item sondern eine Stadt city.

Code: Alles auswählen

import requests

APPID = "xxx"

def main ():
    cities = ["Johannesburg", "Hamburg", "Hannover", "Berlin"]
    for city in cities: 
        response = requests.get("http://api.openweathermap.org/data/2.5/weather", params={"q": city, "appid": APPID, "units": "metric"})
        weather = response.json()
        print("Ort:",weather['name'])

if __name__ == '__main__':
    main()
PythonsPalace
User
Beiträge: 12
Registriert: Freitag 9. September 2016, 09:58

Klasse! Viel einfacher und übersichtlicher! :-) Dankeschön!
Antworten