Advertisement
tuomasvaltanen

Untitled

Nov 20th, 2024 (edited)
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.16 KB | None | 0 0
  1. # Johdatus ohjelmointiin, 20.11.2024, koodipaja 8
  2. print("Tervetuloa!")
  3.  
  4. # UUSI TIEDOSTO
  5.  
  6. # ladataan weather -data normaalisti (ks. monimutkaiset tietorakenteet -luennon muistio)
  7.  
  8. # tapa 1: tehdään jokaiselle alueelle oma lista
  9. # johon kerrytetään sen alueen tuulen nopeudet
  10. # hyvät puolet: yksinkertainen ja helpohko toteuttaa
  11. # huonot puolet: ei taivu kovin hyvin siihen, että alueiden
  12. # tarkka lukumäärä muuttuu datassa
  13. lapland_winds = []
  14. middle_winds = []
  15. south_winds = []
  16.  
  17. # silmukoidaan säädata mittauspaikka kerrallaan
  18. for city in weather:
  19.     # print(city['area'])
  20.  
  21.     # esim. jos tuuli on lapland-alueelta
  22.     # lisätään se lapland-listaan
  23.     if city['area'] == "lapland":
  24.         lapland_winds.append(city['wind'])
  25.        
  26.     # tähän sitte muiden alueiden ehtolauseet, todnäk elif sopivin jne.
  27.  
  28.  
  29. # esim. lapland_winds-listassa on nyt kaikki lapland-alueen tuulet
  30. print(lapland_winds)
  31.  
  32. # ja tästä eteenpäin voidaan laskea keskiarvo normaalisti
  33. lapland_average = sum(lapland_winds) / len(lapland_winds)
  34. print(lapland_average)
  35.  
  36. # UUSI TIEDOSTO, dynaamisempi versio ylemmästä
  37.  
  38. # ladataan weather -data normaalisti (ks. monimutkaiset tietorakenteet -luennon muistio)
  39.  
  40. # tapa 2: tehdään tyhjä dictionary, jonka tarkoitus on varastoida
  41. # kaikkien alueiden keskiarvot huolimatta siitä, kuinka monta aluetta datassa on
  42. # hyvät puolet: skaalautuu erittäin hyvin muutoksiin
  43. # huonot puolet: koodin rakenne on monimutkaisempi, ja voi olla aluksi vaikea ymmärtää
  44. area_winds = {}
  45.  
  46. # silmukoidaan säädata mittauspaikka kerrallaan
  47. for city in weather:
  48.     # idea on tämä: jos tämänhetkistä areaa ei ole vielä tullut vastaan:
  49.     # lisätään area_winds-dictionaryyn uusi avain tällä arealla ja luo
  50.     # sille uusi tyhjä lista
  51.     # jos tämä area jo löytyy dictionarystä: lisätään tämänhetkinen tuuli
  52.     # tämän arean listan jatkoksi
  53.     index = city['area']
  54.  
  55.     # onko kyseinen area eli indeksi dictionaryssä, jos ei,
  56.     # lisätään dictionaryyn + tyhjä lista arvoksi
  57.     if index not in area_winds:
  58.         area_winds[index] = []
  59.  
  60.     # koska nyt voimme olla varmoja että tällä indeksillä on lista
  61.     # voimme lisätä tämän alueen tuulen siihen kuuluvan arean listaan
  62.     area_winds[index].append(city['wind'])
  63.  
  64.  
  65.  
  66. # tarkistetaan dictionaryn sisältö
  67. print(area_winds)
  68.  
  69. # tämän jälkeen voitaisiin tehdä toinen for-silmukka, jossa
  70. # käydään area_winds -dictionaryä alueen nimi kerrallaan läpi
  71. # ja lasketaan lennosta keskiarvo jokaiselle alueelle
  72.  
  73. # tehtävänannossa tulee myös käyttää käyttäjäystävällisempää nimeä
  74. # kuin lapland, middle tai south => Lappi, Maan keskiosa tai Etelä-Suomi
  75. # yleensä näille tehdään joku apudictionaryä, missä on jokaiselle
  76. # avaimelle käyttäjäystävällisempi nimi, jota voi sitten hyödyntää
  77. # samassa listassa missä lasketaan keskiarvot
  78.  
  79. # vielä näppärämpi tapa on tallentaa nämä selitteet omaan asetustiedostoon
  80. # jos ne haetaan koodilla
  81. # jos käyttäjäystävällisempää nimeä ei löydy asetustiedostosta => käytetään datasta
  82. # löytyvää alueen avainarvoa ns. default-arvona (esim. west, east ym.)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement