Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # KOKEILE HETI LUENNON ALUSSA TOIMIIKO SEURAAVA KOODI PYCHARMISSASI:
- # Jos ei toimi, ks. Moodlesta "SSL-ongelmat internet-datan kanssa, korjausvaihtoehdot"
- # Toimiessaan oikein, tulostaa ohjelma raakadataa konsoliin
- # Jos tulee SSL-virhe, silloin koodi ei toimi oikein
- import urllib.request
- # get internet data
- url = 'https://edu.frostbit.fi/api/events'
- req = urllib.request.Request(url)
- raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
- print(raw_data)
- # UUSI TIEDOSTO
- # kokoelmat kokoelman sisällä, esim. lista
- temp_day_1 = [13.5, 16.4, 11.6, 11.3]
- temp_day_2 = [12.1, 15.2, 11.9, 10.4]
- temp_day_3 = [15.3, 17.6, 12.5, 11.6]
- temperatures = [temp_day_1, temp_day_2, temp_day_3]
- # koska temperatures on lista, joka koostuu listoista
- # tarvitaan for-silmukka, jonka sisällä on for-silmukka
- # käsitellään kaikki päivät listassa
- for day in temperatures:
- print("Uusi päivä!")
- # käsitellään kaikki lämpötilat AKTIIVISESSA päivässä
- # ensimmäinen aktiivinen lista on temp_day_1, sitten temp_day_2 jne.
- for temp in day:
- print(temp)
- print()
- # UUSI TIEDOSTO
- # tuotteiden eri kategoriat omissa listoissaan
- books = ["Da Vinci Code", "Taru sormusten herrasta", "Light Fantastic"]
- movies = ["Jurassic Park", "Interstellar", "Forrest Gump"]
- # kaikki verkkokaupan tuotteet, kategoriat omissa listoissaan
- products = [books, movies]
- # käydään ensin jokainen kategoria läpi...
- for category in products:
- # ... ja sitten jokainen tuote tämänhetkisessä kategoriassa läpi:
- for item in category:
- print(item)
- # UUSI TIEDOSTO
- # dictionary dictionaryn sisällä
- book = {
- "name": "My Lady Jane",
- "year": 2016,
- "publisher": {
- "name": "HarperTeen",
- "organization": "HarperCollins Publishers",
- "location": "New York"
- }
- }
- # jos halutaan vain tulostaa dictionaryn arvo, ei silmukkaa
- print(book["name"])
- # voidaan tallentaa publisher-dictionary omaan apumuuttujaan
- # jotta alitiedot on helpompi tulostaa ja hakea
- publisher = book['publisher']
- print(publisher['organization'])
- # voidaan hakea myös suoraan alitieto, eli tässä tapauksessa
- # book -> publisher -> organization, eli kirjan julkaisijan organisaatio
- print(book['publisher']['organization'])
- # UUSI TIEDOSTO
- # esimerkki, lista dictionaryn sisällä
- book = {
- "name": "My Lady Jane",
- "year": 2016,
- "authors": ["Cynthia Hand", "Brodi Ashton", "Jodi Meadows"]
- }
- # huom: authors on lista, eli siksi tämä toimii:
- for author in book['authors']:
- print(author)
- # UUSI TIEDOSTO
- # lista dictionaryjä, ehdottomasti yleisin yhdistelmä datan osalta
- products = [
- {"name": "Kahvinkeitin", "price": 79},
- {"name": "Astianpesukone", "price": 299},
- {"name": "Arkkupakastin", "price": 199},
- {"name": "Hammasharja", "price": 3},
- ]
- # for-silmukalla lista läpi
- for p in products:
- # puretaan jokainen dictionary osiin listassa yksi kerrallaan
- name = p['name']
- price = p['price']
- print(f"{name}, {price} €")
- # UUSI TIEDOSTO
- # esimerkki 1
- import var_dump as vd
- # luodaan hotelli no. 1
- hotel_1 = {
- "name": "Snow Line Hotels",
- "rating": 4.3,
- "wifi": True,
- "free_breakfast": True,
- "services": ["sauna", "meetings", "restaurant", "parking", "safaris"],
- "price_level": 4
- }
- # luodaan hotelli no. 2
- hotel_2 = {
- "name": "North Ice Hostel",
- "rating": 3.5,
- "wifi": True,
- "free_breakfast": False,
- "services": ["sauna", "parking"],
- "price_level": 2
- }
- # asetetaan molemmat hotellit samaan listaan
- hotels = [hotel_1, hotel_2]
- # print(hotels)
- vd.var_dump(hotels)
- # UUSI TIEDOSTO
- # esimerkki 1
- import var_dump as vd
- # luodaan hotelli no. 1
- hotel_1 = {
- "name": "Snow Line Hotels",
- "rating": 4.3,
- "wifi": True,
- "free_breakfast": True,
- "services": ["sauna", "meetings", "restaurant", "parking", "safaris"],
- "price_level": 4
- }
- # luodaan hotelli no. 2
- hotel_2 = {
- "name": "North Ice Hostel",
- "rating": 3.5,
- "wifi": True,
- "free_breakfast": False,
- "services": ["sauna", "parking"],
- "price_level": 2
- }
- # asetetaan molemmat hotellit samaan listaan
- hotels = [hotel_1, hotel_2]
- # vd.var_dump(hotels)
- # laitetaan kommenttiin muistiin mitä hotellissa on sisällä
- # [0] => dict(6)
- # ['name'] => str(16) "Snow Line Hotels"
- # ['rating'] => float(4.3)
- # ['wifi'] => bool(True)
- # ['free_breakfast'] => bool(True)
- # ['services'] => list(5)
- # [0] => str(5) "sauna"
- # [1] => str(8) "meetings"
- # [2] => str(10) "restaurant"
- # [3] => str(7) "parking"
- # [4] => str(7) "safaris"
- # ['price_level'] => int(4)
- # käydään kaikki hotellit läpi
- # eli "jokainen hotelli" in "hotels-listan sisällä"
- for hotel in hotels:
- print(hotel['name'])
- # UUSI TIEDOSTO
- # hotellit samalla tavalla kuin aiemmin
- # käydään kaikki hotellit läpi
- # eli "jokainen hotelli" in "hotels-listan sisällä"
- for hotel in hotels:
- print(hotel['name'])
- # jos kyseessä on lista pelkkiä tekstejä
- # tapa 2: usein tämä on parempi
- # eli koodi ottaa jokaisen palvelun services-listasta
- # ja liimaa ne yhteen \n -merkin avulla
- services = "\n".join(hotel['services'])
- print(services)
- # käydään kaikki tämän hotellin palvelut läpi
- # for service in hotel['services']:
- # print(service)
- print()
- # UUSI TIEDOSTO
- # esimerkki 1
- import var_dump as vd
- # luodaan hotelli no. 1
- hotel_1 = {
- "name": "Snow Line Hotels",
- "rating": 4.3,
- "wifi": True,
- "free_breakfast": True,
- "services": ["sauna", "meetings", "restaurant", "parking", "safaris"],
- "price_level": 4
- }
- # luodaan hotelli no. 2
- hotel_2 = {
- "name": "North Ice Hostel",
- "rating": 3.5,
- "wifi": True,
- "free_breakfast": False,
- "services": ["sauna", "parking"],
- "price_level": 2
- }
- # asetetaan molemmat hotellit samaan listaan
- hotels = [hotel_1, hotel_2]
- # vd.var_dump(hotels)
- # käydään kaikki hotellit läpi
- # eli "jokainen hotelli" in "hotels-listan sisällä"
- for hotel in hotels:
- print(hotel['name'])
- # jos kyseessä on lista pelkkiä tekstejä
- # tapa 2: usein tämä on parempi
- # eli koodi ottaa jokaisen palvelun services-listasta
- # ja liimaa ne yhteen \n -merkin avulla
- services = "\n".join(hotel['services'])
- # print(services)
- if "restaurant" in services:
- print("Hotellissa on ravintola.")
- if "sauna" in services:
- print("Hotellissa on sauna.")
- # käydään kaikki tämän hotellin palvelut läpi
- # ns. perinteinen tapa for-silmukalla
- # for service in hotel['services']:
- # if service == "restaurant":
- # print("Hotellissa on ravintola.")
- print()
- # UUSI TIEDOSTO
- # esimerkki 1
- import var_dump as vd
- # luodaan hotelli no. 1
- hotel_1 = {
- "name": "Snow Line Hotels",
- "rating": 4.3,
- "wifi": True,
- "free_breakfast": True,
- "services": ["sauna", "meetings", "restaurant", "parking", "safaris"],
- "price_level": 4
- }
- # luodaan hotelli no. 2
- hotel_2 = {
- "name": "North Ice Hostel",
- "rating": 3.5,
- "wifi": True,
- "free_breakfast": False,
- "services": ["sauna", "parking"],
- "price_level": 2
- }
- # asetetaan molemmat hotellit samaan listaan
- hotels = [hotel_1, hotel_2]
- # tyhjä lista alkuun
- sauna_hotels = []
- # käydään kaikki hotellit läpi
- # eli "jokainen hotelli" in "hotels-listan sisällä"
- for hotel in hotels:
- print(hotel['name'])
- # jos kyseessä on lista pelkkiä tekstejä
- # tapa 2: usein tämä on parempi
- # eli koodi ottaa jokaisen palvelun services-listasta
- # ja liimaa ne yhteen \n -merkin avulla
- services = "\n".join(hotel['services'])
- # print(services)
- # tulostetaan käyttäjälle tieto että tässä
- # hotellissa on oma ravintola
- if "restaurant" in services:
- print("Hotellissa on ravintola.")
- # toinen tapa eriyttää esim. saunalliset hotellit
- # laitetaan hotellin nimi apulistaan
- # jos sauna löytyy palveluista
- if "sauna" in services:
- sauna_hotels.append(hotel['name'])
- print()
- print(sauna_hotels)
- # UUSI TIEDOSTO
- import urllib.request
- import json
- # this module needs to be installed separately
- # in PyCharm you can install the package if its not found!
- import var_dump as vd
- # get internet data
- url = 'https://edu.frostbit.fi/api/events'
- req = urllib.request.Request(url)
- raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
- # tarvittava data on nyt data-muuttujassa!
- data = json.loads(raw_data)
- vd.var_dump(data)
- # UUSI TIEDOSTO
- import urllib.request
- import json
- # this module needs to be installed separately
- # in PyCharm you can install the package if its not found!
- import var_dump as vd
- # get internet data
- url = 'https://edu.frostbit.fi/api/events'
- req = urllib.request.Request(url)
- raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
- # tarvittava data on nyt data-muuttujassa!
- data = json.loads(raw_data)
- #vd.var_dump(data)
- # #0 dict(4)
- # ['name'] => str(13) "Kuin kotonaan"
- # ['date'] => str(9) "12.1.2024"
- # ['categories'] => list(3)
- # [0] => str(9) "näyttelyt"
- # [1] => str(5) "taide"
- # [2] => str(14) "taidenäyttelyt"
- # ['address'] => dict(2)
- # ['street_address'] => str(19) "Mannerheiminaukio 2"
- # ['postal_code'] => str(5) "00100"
- # jokainen tapahtuma data-listassa (lista dictionaryjä)
- # yksi dictionary => yksi tapahtuma
- for event in data:
- print(event['name'])
- # UUSI TIEDOSTO
- import urllib.request
- import json
- # this module needs to be installed separately
- # in PyCharm you can install the package if its not found!
- import var_dump as vd
- # get internet data
- url = 'https://edu.frostbit.fi/api/events'
- req = urllib.request.Request(url)
- raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
- # tarvittava data on nyt data-muuttujassa!
- data = json.loads(raw_data)
- #vd.var_dump(data)
- # #0 dict(4)
- # ['name'] => str(13) "Kuin kotonaan"
- # ['date'] => str(9) "12.1.2024"
- # ['categories'] => list(3)
- # [0] => str(9) "näyttelyt"
- # [1] => str(5) "taide"
- # [2] => str(14) "taidenäyttelyt"
- # ['address'] => dict(2)
- # ['street_address'] => str(19) "Mannerheiminaukio 2"
- # ['postal_code'] => str(5) "00100"
- # jokainen tapahtuma data-listassa (lista dictionaryjä)
- # yksi dictionary => yksi tapahtuma
- for event in data:
- print(event['name'])
- # address on dictionary, josta voimme hakea varsinaisen osoitteen ym.
- street_address = event['address']['street_address']
- postal_code = event['address']['postal_code']
- print(f"{postal_code} {street_address}")
- print()
- # UUSI TIEDOSTO
- # HAKUKONE VERSIO 1 - näytä kaikki tapahtumat jotka täsmää hakusanaan
- import urllib.request
- import json
- # this module needs to be installed separately
- # in PyCharm you can install the package if its not found!
- import var_dump as vd
- # get internet data
- url = 'https://edu.frostbit.fi/api/events'
- req = urllib.request.Request(url)
- raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
- # tarvittava data on nyt data-muuttujassa!
- data = json.loads(raw_data)
- #vd.var_dump(data)
- # #0 dict(4)
- # ['name'] => str(13) "Kuin kotonaan"
- # ['date'] => str(9) "12.1.2024"
- # ['categories'] => list(3)
- # [0] => str(9) "näyttelyt"
- # [1] => str(5) "taide"
- # [2] => str(14) "taidenäyttelyt"
- # ['address'] => dict(2)
- # ['street_address'] => str(19) "Mannerheiminaukio 2"
- # ['postal_code'] => str(5) "00100"
- # hakukone, versio 1
- # pyydetään käyttäjältä kategoria (sana)
- # ja suodatetaan vain ne tapahtumat joissa on valittu kategoria
- choice = input("Millaista tapahtumaa etsit?\n")
- # jokainen tapahtuma data-listassa (lista dictionaryjä)
- # yksi dictionary => yksi tapahtuma
- for event in data:
- categories = ", ".join(event['categories'])
- # jos tämän tapahtuman kategoriat eivät täsmää käyttäjän valintaan
- # skipataan tämä tapahtuma
- if choice not in categories:
- continue
- print(event['name'])
- # address on dictionary, josta voimme hakea varsinaisen osoitteen ym.
- street_address = event['address']['street_address']
- postal_code = event['address']['postal_code']
- print(f"{postal_code} {street_address}")
- # tulostetaan kategoriat jos niitä oli
- # jos ei ollut, ilmoitetaan käyttäjällä ettei ole kategorioita
- if categories != "":
- print(categories)
- else:
- print("- EI KATEGORIOITA -")
- print()
- # UUSI TIEDOSTO
- import urllib.request
- import json
- # this module needs to be installed separately
- # in PyCharm you can install the package if its not found!
- import var_dump as vd
- # get internet data
- url = 'https://edu.frostbit.fi/api/events'
- req = urllib.request.Request(url)
- raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
- # tarvittava data on nyt data-muuttujassa!
- data = json.loads(raw_data)
- #vd.var_dump(data)
- # #0 dict(4)
- # ['name'] => str(13) "Kuin kotonaan"
- # ['date'] => str(9) "12.1.2024"
- # ['categories'] => list(3)
- # [0] => str(9) "näyttelyt"
- # [1] => str(5) "taide"
- # [2] => str(14) "taidenäyttelyt"
- # ['address'] => dict(2)
- # ['street_address'] => str(19) "Mannerheiminaukio 2"
- # ['postal_code'] => str(5) "00100"
- # hakukone, versio 2
- # pyydetään käyttäjältä kategoria (sana)
- # ja näytetään vain ensimmäinen tapahtuma joka täsmää
- # break on kätevä -> eli lopetetaan etsintä kun haluttu asia löytyy
- choice = input("Millaista tapahtumaa etsit?\n")
- # jokainen tapahtuma data-listassa (lista dictionaryjä)
- # yksi dictionary => yksi tapahtuma
- for event in data:
- categories = ", ".join(event['categories'])
- if choice in categories:
- print(event['name'])
- # address on dictionary, josta voimme hakea varsinaisen osoitteen ym.
- street_address = event['address']['street_address']
- postal_code = event['address']['postal_code']
- print(f"{postal_code} {street_address}")
- # tulostetaan kategoriat jos niitä oli
- # jos ei ollut, ilmoitetaan käyttäjällä ettei ole kategorioita
- if categories != "":
- print(categories)
- else:
- print("- EI KATEGORIOITA -")
- print()
- break
- # UUSI TIEDOSTO
- import json
- import urllib.request
- url = "https://edu.frostbit.fi/api/weather/"
- req = urllib.request.Request(url)
- raw_data = urllib.request.urlopen(req).read().decode("UTF-8")
- weather = json.loads(raw_data)
- strongest_wind = 0
- strongest_wind_city = ""
- weakest_wind = 0
- for city in weather:
- print(city)
- # jos tämän kaupungin tuuli on kovempi kuin strongest_wind
- # => päivitetään strongest_wind + kaupungin nimi => strongest_wind_city
Add Comment
Please, Sign In to add comment