tuomasvaltanen

Untitled

Oct 24th, 2023 (edited)
610
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 15.04 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 for-silmukka
  27.  
  28. # käsitellään kaikki päivät listassa
  29. for day in temperatures:
  30.     print("Uusi päivä!")
  31.  
  32.     # käsitellään kaikki lämpötilat AKTIIVISESSA päivässä
  33.     # ensimmäinen aktiivinen lista on temp_day_1, sitten temp_day_2 jne.
  34.     for temp in day:
  35.         print(temp)
  36.  
  37.     print()
  38.  
  39. # UUSI TIEDOSTO
  40.  
  41. # tuotteiden eri kategoriat omissa listoissaan
  42. books = ["Da Vinci Code", "Taru sormusten herrasta", "Light Fantastic"]
  43. movies = ["Jurassic Park", "Interstellar", "Forrest Gump"]
  44.  
  45. # kaikki verkkokaupan tuotteet, kategoriat omissa listoissaan
  46. products = [books, movies]
  47.  
  48. # käydään ensin jokainen kategoria läpi...
  49. for category in products:
  50.     # ... ja sitten jokainen tuote tämänhetkisessä kategoriassa läpi:
  51.     for item in category:
  52.         print(item)
  53.  
  54. # UUSI TIEDOSTO
  55.  
  56. # dictionary dictionaryn sisällä
  57. book = {
  58.     "name":  "My Lady Jane",
  59.     "year":  2016,
  60.     "publisher": {
  61.         "name": "HarperTeen",
  62.         "organization": "HarperCollins Publishers",
  63.         "location": "New York"
  64.     }
  65. }
  66.  
  67. # jos halutaan vain tulostaa dictionaryn arvo, ei silmukkaa
  68. print(book["name"])
  69.  
  70. # voidaan tallentaa publisher-dictionary omaan apumuuttujaan
  71. # jotta alitiedot on helpompi tulostaa ja hakea
  72. publisher = book['publisher']
  73. print(publisher['organization'])
  74.  
  75. # voidaan hakea myös suoraan alitieto, eli tässä tapauksessa
  76. # book -> publisher -> organization, eli kirjan julkaisijan organisaatio
  77. print(book['publisher']['organization'])
  78.  
  79. # UUSI TIEDOSTO
  80.  
  81. # esimerkki, lista dictionaryn sisällä
  82. book = {
  83.     "name":  "My Lady Jane",
  84.     "year":  2016,
  85.     "authors": ["Cynthia Hand", "Brodi Ashton", "Jodi Meadows"]
  86. }
  87.  
  88. # huom: authors on lista, eli siksi tämä toimii:
  89. for author in book['authors']:
  90.     print(author)
  91.  
  92. # UUSI TIEDOSTO
  93.  
  94. # lista dictionaryjä, ehdottomasti yleisin yhdistelmä datan osalta
  95. products = [
  96.     {"name": "Kahvinkeitin", "price": 79},
  97.     {"name": "Astianpesukone", "price": 299},
  98.     {"name": "Arkkupakastin", "price": 199},
  99.     {"name": "Hammasharja", "price": 3},
  100. ]
  101.  
  102. # for-silmukalla lista läpi
  103. for p in products:
  104.     # puretaan jokainen dictionary osiin listassa yksi kerrallaan
  105.     name = p['name']
  106.     price = p['price']
  107.  
  108.     print(f"{name}, {price} €")
  109.  
  110. # UUSI TIEDOSTO
  111.  
  112. # esimerkki 1
  113. import var_dump as vd
  114.  
  115. # luodaan hotelli no. 1
  116. hotel_1 = {
  117.     "name": "Snow Line Hotels",
  118.     "rating": 4.3,
  119.     "wifi": True,
  120.     "free_breakfast": True,
  121.     "services": ["sauna", "meetings", "restaurant", "parking", "safaris"],
  122.     "price_level": 4
  123. }
  124.  
  125. # luodaan hotelli no. 2
  126. hotel_2 = {
  127.     "name": "North Ice Hostel",
  128.     "rating": 3.5,
  129.     "wifi": True,
  130.     "free_breakfast": False,
  131.     "services": ["sauna", "parking"],
  132.     "price_level": 2
  133. }
  134.  
  135. # asetetaan molemmat hotellit samaan listaan
  136. hotels = [hotel_1, hotel_2]
  137.  
  138. # print(hotels)
  139. vd.var_dump(hotels)
  140.  
  141. # UUSI TIEDOSTO
  142.  
  143. # esimerkki 1
  144. import var_dump as vd
  145.  
  146. # luodaan hotelli no. 1
  147. hotel_1 = {
  148.     "name": "Snow Line Hotels",
  149.     "rating": 4.3,
  150.     "wifi": True,
  151.     "free_breakfast": True,
  152.     "services": ["sauna", "meetings", "restaurant", "parking", "safaris"],
  153.     "price_level": 4
  154. }
  155.  
  156. # luodaan hotelli no. 2
  157. hotel_2 = {
  158.     "name": "North Ice Hostel",
  159.     "rating": 3.5,
  160.     "wifi": True,
  161.     "free_breakfast": False,
  162.     "services": ["sauna", "parking"],
  163.     "price_level": 2
  164. }
  165.  
  166. # asetetaan molemmat hotellit samaan listaan
  167. hotels = [hotel_1, hotel_2]
  168.  
  169. # vd.var_dump(hotels)
  170.  
  171. # laitetaan kommenttiin muistiin mitä hotellissa on sisällä
  172.  
  173. # [0] => dict(6)
  174. #         ['name'] => str(16) "Snow Line Hotels"
  175. #         ['rating'] => float(4.3)
  176. #         ['wifi'] => bool(True)
  177. #         ['free_breakfast'] => bool(True)
  178. #         ['services'] => list(5)
  179. #             [0] => str(5) "sauna"
  180. #             [1] => str(8) "meetings"
  181. #             [2] => str(10) "restaurant"
  182. #             [3] => str(7) "parking"
  183. #             [4] => str(7) "safaris"
  184. #         ['price_level'] => int(4)
  185.  
  186. # käydään kaikki hotellit läpi
  187. # eli "jokainen hotelli" in "hotels-listan sisällä"
  188. for hotel in hotels:
  189.     print(hotel['name'])
  190.    
  191. # UUSI TIEDOSTO
  192.  
  193. # hotellit samalla tavalla kuin aiemmin
  194.  
  195. # käydään kaikki hotellit läpi
  196. # eli "jokainen hotelli" in "hotels-listan sisällä"
  197. for hotel in hotels:
  198.     print(hotel['name'])
  199.  
  200.     # jos kyseessä on lista pelkkiä tekstejä
  201.     # tapa 2: usein tämä on parempi
  202.     # eli koodi ottaa jokaisen palvelun services-listasta
  203.     # ja liimaa ne yhteen \n -merkin avulla
  204.     services = "\n".join(hotel['services'])
  205.     print(services)
  206.  
  207.     # käydään kaikki tämän hotellin palvelut läpi
  208.     # for service in hotel['services']:
  209.     #     print(service)
  210.  
  211.     print()
  212.  
  213. # UUSI TIEDOSTO
  214.  
  215. # esimerkki 1
  216. import var_dump as vd
  217.  
  218. # luodaan hotelli no. 1
  219. hotel_1 = {
  220.     "name": "Snow Line Hotels",
  221.     "rating": 4.3,
  222.     "wifi": True,
  223.     "free_breakfast": True,
  224.     "services": ["sauna", "meetings", "restaurant", "parking", "safaris"],
  225.     "price_level": 4
  226. }
  227.  
  228. # luodaan hotelli no. 2
  229. hotel_2 = {
  230.     "name": "North Ice Hostel",
  231.     "rating": 3.5,
  232.     "wifi": True,
  233.     "free_breakfast": False,
  234.     "services": ["sauna", "parking"],
  235.     "price_level": 2
  236. }
  237.  
  238. # asetetaan molemmat hotellit samaan listaan
  239. hotels = [hotel_1, hotel_2]
  240.  
  241. # vd.var_dump(hotels)
  242.  
  243. # käydään kaikki hotellit läpi
  244. # eli "jokainen hotelli" in "hotels-listan sisällä"
  245. for hotel in hotels:
  246.     print(hotel['name'])
  247.  
  248.     # jos kyseessä on lista pelkkiä tekstejä
  249.     # tapa 2: usein tämä on parempi
  250.     # eli koodi ottaa jokaisen palvelun services-listasta
  251.     # ja liimaa ne yhteen \n -merkin avulla
  252.     services = "\n".join(hotel['services'])
  253.     # print(services)
  254.  
  255.     if "restaurant" in services:
  256.         print("Hotellissa on ravintola.")
  257.  
  258.     if "sauna" in services:
  259.         print("Hotellissa on sauna.")
  260.  
  261.     # käydään kaikki tämän hotellin palvelut läpi
  262.     # ns. perinteinen tapa for-silmukalla
  263.     # for service in hotel['services']:
  264.     #    if service == "restaurant":
  265.     #        print("Hotellissa on ravintola.")
  266.  
  267.     print()
  268.  
  269. # UUSI TIEDOSTO
  270.  
  271. # esimerkki 1
  272. import var_dump as vd
  273.  
  274. # luodaan hotelli no. 1
  275. hotel_1 = {
  276.     "name": "Snow Line Hotels",
  277.     "rating": 4.3,
  278.     "wifi": True,
  279.     "free_breakfast": True,
  280.     "services": ["sauna", "meetings", "restaurant", "parking", "safaris"],
  281.     "price_level": 4
  282. }
  283.  
  284. # luodaan hotelli no. 2
  285. hotel_2 = {
  286.     "name": "North Ice Hostel",
  287.     "rating": 3.5,
  288.     "wifi": True,
  289.     "free_breakfast": False,
  290.     "services": ["sauna", "parking"],
  291.     "price_level": 2
  292. }
  293.  
  294. # asetetaan molemmat hotellit samaan listaan
  295. hotels = [hotel_1, hotel_2]
  296.  
  297. # tyhjä lista alkuun
  298. sauna_hotels = []
  299.  
  300. # käydään kaikki hotellit läpi
  301. # eli "jokainen hotelli" in "hotels-listan sisällä"
  302. for hotel in hotels:
  303.     print(hotel['name'])
  304.  
  305.     # jos kyseessä on lista pelkkiä tekstejä
  306.     # tapa 2: usein tämä on parempi
  307.     # eli koodi ottaa jokaisen palvelun services-listasta
  308.     # ja liimaa ne yhteen \n -merkin avulla
  309.     services = "\n".join(hotel['services'])
  310.     # print(services)
  311.  
  312.     # tulostetaan käyttäjälle tieto että tässä
  313.     # hotellissa on oma ravintola
  314.     if "restaurant" in services:
  315.         print("Hotellissa on ravintola.")
  316.  
  317.     # toinen tapa eriyttää esim. saunalliset hotellit
  318.     # laitetaan hotellin nimi apulistaan
  319.     # jos sauna löytyy palveluista
  320.     if "sauna" in services:
  321.         sauna_hotels.append(hotel['name'])
  322.  
  323.     print()
  324.  
  325. print(sauna_hotels)
  326.  
  327. # UUSI TIEDOSTO
  328.  
  329. import urllib.request
  330. import json
  331.  
  332. # this module needs to be installed separately
  333. # in PyCharm you can install the package if its not found!
  334. import var_dump as vd
  335.  
  336. # get internet data
  337. url = 'https://edu.frostbit.fi/api/events'
  338. req = urllib.request.Request(url)
  339. raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
  340.  
  341. # tarvittava data on nyt data-muuttujassa!
  342. data = json.loads(raw_data)
  343. vd.var_dump(data)
  344.  
  345. # UUSI TIEDOSTO
  346.  
  347. import urllib.request
  348. import json
  349.  
  350. # this module needs to be installed separately
  351. # in PyCharm you can install the package if its not found!
  352. import var_dump as vd
  353.  
  354. # get internet data
  355. url = 'https://edu.frostbit.fi/api/events'
  356. req = urllib.request.Request(url)
  357. raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
  358.  
  359. # tarvittava data on nyt data-muuttujassa!
  360. data = json.loads(raw_data)
  361. #vd.var_dump(data)
  362.  
  363. # #0 dict(4)
  364. #     ['name'] => str(13) "Kuin kotonaan"
  365. #     ['date'] => str(9) "12.1.2024"
  366. #     ['categories'] => list(3)
  367. #         [0] => str(9) "näyttelyt"
  368. #         [1] => str(5) "taide"
  369. #         [2] => str(14) "taidenäyttelyt"
  370. #     ['address'] => dict(2)
  371. #         ['street_address'] => str(19) "Mannerheiminaukio 2"
  372. #         ['postal_code'] => str(5) "00100"
  373.  
  374. # jokainen tapahtuma data-listassa (lista dictionaryjä)
  375. # yksi dictionary => yksi tapahtuma
  376. for event in data:
  377.     print(event['name'])
  378.  
  379. # UUSI TIEDOSTO
  380.  
  381. import urllib.request
  382. import json
  383.  
  384. # this module needs to be installed separately
  385. # in PyCharm you can install the package if its not found!
  386. import var_dump as vd
  387.  
  388. # get internet data
  389. url = 'https://edu.frostbit.fi/api/events'
  390. req = urllib.request.Request(url)
  391. raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
  392.  
  393. # tarvittava data on nyt data-muuttujassa!
  394. data = json.loads(raw_data)
  395. #vd.var_dump(data)
  396.  
  397. # #0 dict(4)
  398. #     ['name'] => str(13) "Kuin kotonaan"
  399. #     ['date'] => str(9) "12.1.2024"
  400. #     ['categories'] => list(3)
  401. #         [0] => str(9) "näyttelyt"
  402. #         [1] => str(5) "taide"
  403. #         [2] => str(14) "taidenäyttelyt"
  404. #     ['address'] => dict(2)
  405. #         ['street_address'] => str(19) "Mannerheiminaukio 2"
  406. #         ['postal_code'] => str(5) "00100"
  407.  
  408. # jokainen tapahtuma data-listassa (lista dictionaryjä)
  409. # yksi dictionary => yksi tapahtuma
  410. for event in data:
  411.     print(event['name'])
  412.  
  413.     # address on dictionary, josta voimme hakea varsinaisen osoitteen ym.
  414.     street_address = event['address']['street_address']
  415.     postal_code = event['address']['postal_code']
  416.  
  417.     print(f"{postal_code} {street_address}")
  418.     print()
  419.  
  420. # UUSI TIEDOSTO
  421.  
  422. # HAKUKONE VERSIO 1 - näytä kaikki tapahtumat jotka täsmää hakusanaan
  423.  
  424. import urllib.request
  425. import json
  426.  
  427. # this module needs to be installed separately
  428. # in PyCharm you can install the package if its not found!
  429. import var_dump as vd
  430.  
  431. # get internet data
  432. url = 'https://edu.frostbit.fi/api/events'
  433. req = urllib.request.Request(url)
  434. raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
  435.  
  436. # tarvittava data on nyt data-muuttujassa!
  437. data = json.loads(raw_data)
  438. #vd.var_dump(data)
  439.  
  440. # #0 dict(4)
  441. #     ['name'] => str(13) "Kuin kotonaan"
  442. #     ['date'] => str(9) "12.1.2024"
  443. #     ['categories'] => list(3)
  444. #         [0] => str(9) "näyttelyt"
  445. #         [1] => str(5) "taide"
  446. #         [2] => str(14) "taidenäyttelyt"
  447. #     ['address'] => dict(2)
  448. #         ['street_address'] => str(19) "Mannerheiminaukio 2"
  449. #         ['postal_code'] => str(5) "00100"
  450.  
  451. # hakukone, versio 1
  452. # pyydetään käyttäjältä kategoria (sana)
  453. # ja suodatetaan vain ne tapahtumat joissa on valittu kategoria
  454. choice = input("Millaista tapahtumaa etsit?\n")
  455.  
  456. # jokainen tapahtuma data-listassa (lista dictionaryjä)
  457. # yksi dictionary => yksi tapahtuma
  458. for event in data:
  459.     categories = ", ".join(event['categories'])
  460.  
  461.     # jos tämän tapahtuman kategoriat eivät täsmää käyttäjän valintaan
  462.     # skipataan tämä tapahtuma
  463.     if choice not in categories:
  464.         continue
  465.  
  466.     print(event['name'])
  467.  
  468.     # address on dictionary, josta voimme hakea varsinaisen osoitteen ym.
  469.     street_address = event['address']['street_address']
  470.     postal_code = event['address']['postal_code']
  471.  
  472.     print(f"{postal_code} {street_address}")
  473.  
  474.     # tulostetaan kategoriat jos niitä oli
  475.     # jos ei ollut, ilmoitetaan käyttäjällä ettei ole kategorioita
  476.     if categories != "":
  477.         print(categories)
  478.     else:
  479.         print("- EI KATEGORIOITA -")
  480.  
  481.     print()
  482.  
  483. # UUSI TIEDOSTO
  484.  
  485. import urllib.request
  486. import json
  487.  
  488. # this module needs to be installed separately
  489. # in PyCharm you can install the package if its not found!
  490. import var_dump as vd
  491.  
  492. # get internet data
  493. url = 'https://edu.frostbit.fi/api/events'
  494. req = urllib.request.Request(url)
  495. raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
  496.  
  497. # tarvittava data on nyt data-muuttujassa!
  498. data = json.loads(raw_data)
  499. #vd.var_dump(data)
  500.  
  501. # #0 dict(4)
  502. #     ['name'] => str(13) "Kuin kotonaan"
  503. #     ['date'] => str(9) "12.1.2024"
  504. #     ['categories'] => list(3)
  505. #         [0] => str(9) "näyttelyt"
  506. #         [1] => str(5) "taide"
  507. #         [2] => str(14) "taidenäyttelyt"
  508. #     ['address'] => dict(2)
  509. #         ['street_address'] => str(19) "Mannerheiminaukio 2"
  510. #         ['postal_code'] => str(5) "00100"
  511.  
  512. # hakukone, versio 2
  513. # pyydetään käyttäjältä kategoria (sana)
  514. # ja näytetään vain ensimmäinen tapahtuma joka täsmää
  515. # break on kätevä -> eli lopetetaan etsintä kun haluttu asia löytyy
  516. choice = input("Millaista tapahtumaa etsit?\n")
  517.  
  518. # jokainen tapahtuma data-listassa (lista dictionaryjä)
  519. # yksi dictionary => yksi tapahtuma
  520. for event in data:
  521.     categories = ", ".join(event['categories'])
  522.  
  523.     if choice in categories:
  524.         print(event['name'])
  525.  
  526.         # address on dictionary, josta voimme hakea varsinaisen osoitteen ym.
  527.         street_address = event['address']['street_address']
  528.         postal_code = event['address']['postal_code']
  529.  
  530.         print(f"{postal_code} {street_address}")
  531.  
  532.         # tulostetaan kategoriat jos niitä oli
  533.         # jos ei ollut, ilmoitetaan käyttäjällä ettei ole kategorioita
  534.         if categories != "":
  535.             print(categories)
  536.         else:
  537.             print("- EI KATEGORIOITA -")
  538.  
  539.         print()
  540.         break
  541.  
  542. # UUSI TIEDOSTO
  543.  
  544. import json
  545. import urllib.request
  546.  
  547. url = "https://edu.frostbit.fi/api/weather/"
  548. req = urllib.request.Request(url)
  549. raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
  550.  
  551. weather = json.loads(raw_data)
  552.  
  553. strongest_wind = 0
  554. strongest_wind_city = ""
  555. weakest_wind = 0
  556.  
  557. for city in weather:
  558.     print(city)
  559.    
  560.     # jos tämän kaupungin tuuli on kovempi kuin strongest_wind
  561.     # => päivitetään strongest_wind + kaupungin nimi => strongest_wind_city
Add Comment
Please, Sign In to add comment