tuomasvaltanen

Untitled

Nov 8th, 2022 (edited)
831
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.75 KB | None | 0 0
  1. # KOKEILE HETI LUENNON ALUSSA TOIMIIKO SEURAAVA KOODI PYCHARMISSASI:
  2. # Jos ei toimi, ks. Moodlesta "SSL-ongelmat internet-datan kanssa, korjausvaihtoehdot"
  3.  
  4. # Toimiessaan oikein, tulostaa ohjelma raakadataa konsoliin
  5. # Jos tulee SSL-virhe, silloin koodi ei toimi oikein
  6.  
  7. import urllib.request
  8.  
  9. # get internet data
  10. url = 'https://edu.frostbit.fi/api/events'
  11. req = urllib.request.Request(url)
  12. raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
  13.  
  14. print(raw_data)
  15.  
  16. # UUSI TIEDOSTO
  17.  
  18. # kokoelmat kokoelman sisällä, esim. lista
  19. temp_day_1 = [13.5, 16.4, 11.6, 11.3]
  20. temp_day_2 = [12.1, 15.2, 11.9, 10.4]
  21. temp_day_3 = [15.3, 17.6, 12.5, 11.6]
  22.  
  23. temperatures = [temp_day_1, temp_day_2, temp_day_3]
  24.  
  25. # koska temperatures on lista joka koostuu listoista,
  26. # tarvitaan for-silmukka jonka sisällä on toinen for-silmukka
  27.  
  28. # käsitellään kaikki päivät listassa
  29. for day in temperatures:
  30.     print("Käsitellään seuraava päivä!")
  31.  
  32.     # käsitellään kaikki lämpötilat listassa
  33.     for temp in day:
  34.         print(temp)
  35.  
  36. # UUSI TIEDOSTO
  37.  
  38. books = ["Da Vinci Code", "Taru sormusten herrasta", "Light Fantastic"]
  39. movies = ["Jurassic Park", "Interstellar", "Forrest Gump"]
  40.  
  41. # kaikki verkkokaupan tuotteet, kategoriat omissa listoissaan
  42. products = [books, movies]
  43.  
  44. # käydään ensin jokainen kategoria tuotteista läpi...
  45. for category in products:
  46.     # ... ja sitten jokainen tuote yhdessä kategoriassa läpi
  47.     for item in category:
  48.         print(item)
  49.  
  50. # UUSI TIEDOSTO
  51.  
  52. # dictionary dictionaryn sisällä
  53. book = {
  54.     "name":  "My Lady Jane",
  55.     "year":  2016,
  56.     "publisher": {
  57.         "name": "HarperTeen",
  58.         "organization": "HarperCollins Publishers",
  59.         "location": "New York"
  60.     }
  61. }
  62.  
  63. # perusarvot on helppo hakea, esim. kirjan nimi
  64. print(book['name'])
  65.  
  66. # publisher-tieto on oma dictionarynsä
  67. # jos helpottaa lukemista, voidaan tallentaa tämä dictionary omaan muuttujaan
  68. publisher = book['publisher']
  69. print(publisher)
  70. print(publisher['organization'])
  71.  
  72. # myös suoraan ketjuttaminen on mahdollista
  73. # book -> publisher -> organization, eli kirjan julkaisijan organisaatio
  74. print(book['publisher']['organization'])
  75.  
  76. # UUSI TIEDOSTO
  77.  
  78. # esimerkki, lista dictionaryn sisällä
  79. book = {
  80.     "name":  "My Lady Jane",
  81.     "year":  2016,
  82.     "authors": ["Cynthia Hand", "Brodi Ashton", "Jodi Meadows"]
  83. }
  84.  
  85. # tulostetaan ensimmäinen nimi
  86. print(book['authors'][0])
  87. print()
  88.  
  89. # koska kyseessä lista, voimme käyttää for-silmukkaa
  90. for author in book['authors']:
  91.     print(author)
  92.  
  93. # UUSI TIEDOSTO
  94.  
  95. products = [
  96.     {"name": "Kahvinkeitin", "price": 79},
  97.     {"name": "Astianpesukone", "price": 299},
  98.     {"name": "Arkkupakastin", "price": 199},
  99. ]
  100.  
  101. # lista dictionaryjä, eli voimme silmukan sisällä
  102. # hakea aina yhden tuotteen dictionarystä tarvittavat tiedot
  103. # eli tuotteen nimen ja hinnan ja tulostaa f-stringillä!
  104. for p in products:
  105.     name = p['name']
  106.     price = p['price']
  107.  
  108.     print(f"{name}, {price}€")
  109.  
  110. # UUSI TIEDOSTO
  111.  
  112. import var_dump as vd
  113.  
  114. # luodaan hotelli no. 1
  115. hotel_1 = {
  116.     "name": "Snow Line Hotels",
  117.     "rating": 4.3,
  118.     "wifi": True,
  119.     "free_breakfast": True,
  120.     "services": ["sauna", "meetings", "restaurant", "parking", "safaris"],
  121.     "price_level": 4
  122. }
  123.  
  124. # luodaan hotelli no. 2
  125. hotel_2 = {
  126.     "name": "North Ice Hostel",
  127.     "rating": 3.5,
  128.     "wifi": True,
  129.     "free_breakfast": False,
  130.     "services": ["sauna", "parking"],
  131.     "price_level": 2
  132. }
  133.  
  134. # asetetaan molemmat hotellit samaan listaan
  135. hotels = [hotel_1, hotel_2]
  136.  
  137. vd.var_dump(hotels)
  138.  
  139. # UUSI TIEDOSTO
  140. import var_dump as vd
  141.  
  142. # luodaan hotelli no. 1
  143. hotel_1 = {
  144.     "name": "Snow Line Hotels",
  145.     "rating": 4.3,
  146.     "wifi": True,
  147.     "free_breakfast": True,
  148.     "services": ["sauna", "meetings", "restaurant", "parking", "safaris"],
  149.     "price_level": 4
  150. }
  151.  
  152. # luodaan hotelli no. 2
  153. hotel_2 = {
  154.     "name": "North Ice Hostel",
  155.     "rating": 3.5,
  156.     "wifi": True,
  157.     "free_breakfast": False,
  158.     "services": ["sauna", "parking"],
  159.     "price_level": 2
  160. }
  161.  
  162. # asetetaan molemmat hotellit samaan listaan
  163. hotels = [hotel_1, hotel_2]
  164.  
  165. # vd.var_dump(hotels)
  166.  
  167. # joskus on helpompi tutkia dataa "yksitellen"
  168. # esim. tutkitaan vain ensimmäistä hotellia
  169. # testhotel = hotels[0]
  170. # vd.var_dump(testhotel)
  171.  
  172. # käydään läpi jokainen hotelli yksi kerrallaan
  173. for hotel in hotels:
  174.     print(hotel['name'])
  175.  
  176.     # käydään läpi yhden hotellin kaikki palvelut yksi kerrallaan
  177.     for service in hotel['services']:
  178.         print(service)
  179.  
  180.     print()
  181.  
  182. # UUSI FILE
  183.  
  184. import var_dump as vd
  185.  
  186. # luodaan hotelli no. 1
  187. hotel_1 = {
  188.     "name": "Snow Line Hotels",
  189.     "rating": 4.3,
  190.     "wifi": True,
  191.     "free_breakfast": True,
  192.     "services": ["sauna", "meetings", "restaurant", "parking", "safaris"],
  193.     "price_level": 4
  194. }
  195.  
  196. # luodaan hotelli no. 2
  197. hotel_2 = {
  198.     "name": "North Ice Hostel",
  199.     "rating": 3.5,
  200.     "wifi": True,
  201.     "free_breakfast": False,
  202.     "services": ["sauna", "parking"],
  203.     "price_level": 2
  204. }
  205.  
  206. # asetetaan molemmat hotellit samaan listaan
  207. hotels = [hotel_1, hotel_2]
  208.  
  209. # vd.var_dump(hotels)
  210.  
  211. # joskus on helpompi tutkia dataa "yksitellen"
  212. # esim. tutkitaan vain ensimmäistä hotellia
  213. # testhotel = hotels[0]
  214. # vd.var_dump(testhotel)
  215.  
  216. # käydään läpi jokainen hotelli yksi kerrallaan
  217. for hotel in hotels:
  218.     print(hotel['name'])
  219.  
  220.     # perinteinen tapa: käydään sisältö läpi toisella for-silmukalla:
  221.     # käydään läpi yhden hotellin kaikki palvelut yksi kerrallaan
  222.     # for service in hotel['services']:
  223.     #    print(service)
  224.  
  225.     # koska services on tekstilista, voidaan kaikki palvelut
  226.     # yhidstää toisiinsa rivinvaihdolla!
  227.     services = "\n".join(hotel['services'])
  228.     print(services)
  229.  
  230.     print()
  231.  
  232.  
  233. # käydään läpi jokainen hotelli yksi kerrallaan
  234. for hotel in hotels:
  235.     print(hotel['name'])
  236.  
  237.     # perinteinen tapa: käydään sisältö läpi toisella for-silmukalla:
  238.     # käydään läpi yhden hotellin kaikki palvelut yksi kerrallaan
  239.     #for service in hotel['services']:
  240.         # myös if-lauseita voi hyödyntää jos halutaan tuottaa lisätietoja
  241.     #    if service == "restaurant":
  242.     #        print("Hotellissa on ravintola.")
  243.  
  244.     # koska services on tekstilista, voidaan kaikki palvelut
  245.     # yhidstää toisiinsa rivinvaihdolla!
  246.     services = "\n".join(hotel['services'])
  247.    
  248.     # ehtolauseita tarvitaan usein for-silmukoiden kanssa, jotka
  249.     # käsittelevät listaa joka koostuu dictionarystä
  250.     if "restaurant" in services:
  251.         print("Hotellissa on ravintola.")
  252.  
  253.     print()
  254.  
  255. # UUSI TIEDOSTO
  256.  
  257. sauna_hotels = []
  258.  
  259. # käydään läpi jokainen hotelli yksi kerrallaan
  260. for hotel in hotels:
  261.     print(hotel['name'])
  262.  
  263.     # perinteinen tapa: käydään sisältö läpi toisella for-silmukalla:
  264.     # käydään läpi yhden hotellin kaikki palvelut yksi kerrallaan
  265.     #for service in hotel['services']:
  266.         # myös if-lauseita voi hyödyntää jos halutaan tuottaa lisätietoja
  267.     #    if service == "restaurant":
  268.     #        print("Hotellissa on ravintola.")
  269.  
  270.     # koska services on tekstilista, voidaan kaikki palvelut
  271.     # yhidstää toisiinsa rivinvaihdolla!
  272.     services = "\n".join(hotel['services'])
  273.  
  274.     # ehtolauseita tarvitaan usein for-silmukoiden kanssa, jotka
  275.     # käsittelevät listaa joka koostuu dictionarystä
  276.     if "restaurant" in services:
  277.         print("Hotellissa on ravintola.")
  278.  
  279.     # myös suodatus omaan apulistaan on mahdollinen
  280.     if "sauna" in services:
  281.         sauna_hotels.append(hotel['name'])
  282.  
  283.     print()
  284.  
  285. # katsotaan nopeasti mitä apulistassa on nyt sisällä
  286. print(sauna_hotels)
  287.  
  288. # UUSI TIEDOSTO
  289.  
  290. import urllib.request
  291. import json
  292.  
  293. # this module needs to be installed separately
  294. # in PyCharm you can install the package if its not found!
  295. import var_dump as vd
  296.  
  297. # get internet data
  298. url = 'https://edu.frostbit.fi/api/events'
  299. req = urllib.request.Request(url)
  300. raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
  301.  
  302. # tarvittava data on nyt data-muuttujassa!
  303. data = json.loads(raw_data)
  304. # vd.var_dump(data)
  305.  
  306. # first_event = data[0]
  307. # vd.var_dump(first_event)
  308.  
  309. choice = input("Mitkä tapahtumat suodatetaan?\n")
  310.  
  311. # käsitellään kaikki tapahtumat yksi kerrallaan
  312. for event in data:
  313.  
  314.     categories = ", ".join(event['categories'])
  315.  
  316.     # jos käyttäjän antama hakusana ei täsmää tapahtuman kanssa
  317.     # skipataan koko tapahtuma
  318.     if choice not in categories:
  319.         continue
  320.  
  321.     print(event['name'])
  322.  
  323.     # address on dictionary, jonka alla on vielä street address ja postal code
  324.     street_address = event['address']['street_address']
  325.     postal_code = event['address']['postal_code']
  326.  
  327.     print(f"{postal_code} {street_address}")
  328.  
  329.     # jos kategorioita ei ole, ilmoitetaan käyttäjälle
  330.     # muussa tapauksessa tulostetaan kategoriat
  331.     if categories == "":
  332.         print("Ei kategorioita.")
  333.     else:
  334.         print(categories)
  335.  
  336.     print()
  337.  
  338. # UUSI TIEDOSTO
  339.  
  340. import urllib.request
  341. import json
  342.  
  343. # this module needs to be installed separately
  344. # in PyCharm you can install the package if its not found!
  345. import var_dump as vd
  346.  
  347. # get internet data
  348. url = 'https://edu.frostbit.fi/api/events'
  349. req = urllib.request.Request(url)
  350. raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
  351.  
  352. # tarvittava data on nyt data-muuttujassa!
  353. data = json.loads(raw_data)
  354. # vd.var_dump(data)
  355.  
  356. #first_event = data[0]
  357. #vd.var_dump(first_event)
  358.  
  359. # tehdään hakukone, joka etsii ensimmäisen hakusanaan
  360. # sopivan tapahtuman, ja lopettaa haun siihen
  361. choice = input("Millaista tapahtumaa etsit?\n")
  362.  
  363. # käsitellään kaikki tapahtumat yksi kerrallaan
  364. for event in data:
  365.  
  366.     categories = ", ".join(event['categories'])
  367.  
  368.     if choice in categories:
  369.         print("Löytyi hakusanaan sopiva tapahtuma!\n")
  370.  
  371.         print(event['name'])
  372.  
  373.         # address on dictionary, jonka alla on vielä street address ja postal code
  374.         street_address = event['address']['street_address']
  375.         postal_code = event['address']['postal_code']
  376.  
  377.         print(f"{postal_code} {street_address}")
  378.  
  379.         # jos kategorioita ei ole, ilmoitetaan käyttäjälle
  380.         # muussa tapauksessa tulostetaan kategoriat
  381.         if categories == "":
  382.             print("Ei kategorioita.")
  383.         else:
  384.             print(categories)
  385.  
  386.         print()
  387.         break
  388.  
  389.  
  390. # UUSI TIEDOSTO
  391.  
  392. import json
  393. import urllib.request
  394.  
  395. url = "https://edu.frostbit.fi/api/weather/"
  396. req = urllib.request.Request(url)
  397. raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
  398.  
  399. weather = json.loads(raw_data)
  400.  
  401. strongest_wind = 0
  402. strongest_wind_city = ""
  403. weakest_wind = 0
  404.  
  405. for city in weather:
  406.     print(city)
  407.    
  408.     # jos tämän kaupungin tuuli on kovempi kuin strongest_wind
  409.     # => päivitetään strongest_wind
  410.  
  411.  
Add Comment
Please, Sign In to add comment