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 toinen for-silmukka
- # käsitellään kaikki päivät listassa
- for day in temperatures:
- print("Käsitellään seuraava päivä!")
- # käsitellään kaikki lämpötilat listassa
- for temp in day:
- print(temp)
- # UUSI TIEDOSTO
- 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 tuotteista läpi...
- for category in products:
- # ... ja sitten jokainen tuote yhdessä 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"
- }
- }
- # perusarvot on helppo hakea, esim. kirjan nimi
- print(book['name'])
- # publisher-tieto on oma dictionarynsä
- # jos helpottaa lukemista, voidaan tallentaa tämä dictionary omaan muuttujaan
- publisher = book['publisher']
- print(publisher)
- print(publisher['organization'])
- # myös suoraan ketjuttaminen on mahdollista
- # 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"]
- }
- # tulostetaan ensimmäinen nimi
- print(book['authors'][0])
- print()
- # koska kyseessä lista, voimme käyttää for-silmukkaa
- for author in book['authors']:
- print(author)
- # UUSI TIEDOSTO
- products = [
- {"name": "Kahvinkeitin", "price": 79},
- {"name": "Astianpesukone", "price": 299},
- {"name": "Arkkupakastin", "price": 199},
- ]
- # lista dictionaryjä, eli voimme silmukan sisällä
- # hakea aina yhden tuotteen dictionarystä tarvittavat tiedot
- # eli tuotteen nimen ja hinnan ja tulostaa f-stringillä!
- for p in products:
- name = p['name']
- price = p['price']
- print(f"{name}, {price}€")
- # UUSI TIEDOSTO
- 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)
- # UUSI TIEDOSTO
- 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)
- # joskus on helpompi tutkia dataa "yksitellen"
- # esim. tutkitaan vain ensimmäistä hotellia
- # testhotel = hotels[0]
- # vd.var_dump(testhotel)
- # käydään läpi jokainen hotelli yksi kerrallaan
- for hotel in hotels:
- print(hotel['name'])
- # käydään läpi yhden hotellin kaikki palvelut yksi kerrallaan
- for service in hotel['services']:
- print(service)
- print()
- # UUSI FILE
- 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)
- # joskus on helpompi tutkia dataa "yksitellen"
- # esim. tutkitaan vain ensimmäistä hotellia
- # testhotel = hotels[0]
- # vd.var_dump(testhotel)
- # käydään läpi jokainen hotelli yksi kerrallaan
- for hotel in hotels:
- print(hotel['name'])
- # perinteinen tapa: käydään sisältö läpi toisella for-silmukalla:
- # käydään läpi yhden hotellin kaikki palvelut yksi kerrallaan
- # for service in hotel['services']:
- # print(service)
- # koska services on tekstilista, voidaan kaikki palvelut
- # yhidstää toisiinsa rivinvaihdolla!
- services = "\n".join(hotel['services'])
- print(services)
- print()
- # käydään läpi jokainen hotelli yksi kerrallaan
- for hotel in hotels:
- print(hotel['name'])
- # perinteinen tapa: käydään sisältö läpi toisella for-silmukalla:
- # käydään läpi yhden hotellin kaikki palvelut yksi kerrallaan
- #for service in hotel['services']:
- # myös if-lauseita voi hyödyntää jos halutaan tuottaa lisätietoja
- # if service == "restaurant":
- # print("Hotellissa on ravintola.")
- # koska services on tekstilista, voidaan kaikki palvelut
- # yhidstää toisiinsa rivinvaihdolla!
- services = "\n".join(hotel['services'])
- # ehtolauseita tarvitaan usein for-silmukoiden kanssa, jotka
- # käsittelevät listaa joka koostuu dictionarystä
- if "restaurant" in services:
- print("Hotellissa on ravintola.")
- print()
- # UUSI TIEDOSTO
- sauna_hotels = []
- # käydään läpi jokainen hotelli yksi kerrallaan
- for hotel in hotels:
- print(hotel['name'])
- # perinteinen tapa: käydään sisältö läpi toisella for-silmukalla:
- # käydään läpi yhden hotellin kaikki palvelut yksi kerrallaan
- #for service in hotel['services']:
- # myös if-lauseita voi hyödyntää jos halutaan tuottaa lisätietoja
- # if service == "restaurant":
- # print("Hotellissa on ravintola.")
- # koska services on tekstilista, voidaan kaikki palvelut
- # yhidstää toisiinsa rivinvaihdolla!
- services = "\n".join(hotel['services'])
- # ehtolauseita tarvitaan usein for-silmukoiden kanssa, jotka
- # käsittelevät listaa joka koostuu dictionarystä
- if "restaurant" in services:
- print("Hotellissa on ravintola.")
- # myös suodatus omaan apulistaan on mahdollinen
- if "sauna" in services:
- sauna_hotels.append(hotel['name'])
- print()
- # katsotaan nopeasti mitä apulistassa on nyt sisällä
- 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)
- # first_event = data[0]
- # vd.var_dump(first_event)
- choice = input("Mitkä tapahtumat suodatetaan?\n")
- # käsitellään kaikki tapahtumat yksi kerrallaan
- for event in data:
- categories = ", ".join(event['categories'])
- # jos käyttäjän antama hakusana ei täsmää tapahtuman kanssa
- # skipataan koko tapahtuma
- if choice not in categories:
- continue
- print(event['name'])
- # address on dictionary, jonka alla on vielä street address ja postal code
- street_address = event['address']['street_address']
- postal_code = event['address']['postal_code']
- print(f"{postal_code} {street_address}")
- # jos kategorioita ei ole, ilmoitetaan käyttäjälle
- # muussa tapauksessa tulostetaan kategoriat
- if categories == "":
- print("Ei kategorioita.")
- else:
- print(categories)
- 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)
- #first_event = data[0]
- #vd.var_dump(first_event)
- # tehdään hakukone, joka etsii ensimmäisen hakusanaan
- # sopivan tapahtuman, ja lopettaa haun siihen
- choice = input("Millaista tapahtumaa etsit?\n")
- # käsitellään kaikki tapahtumat yksi kerrallaan
- for event in data:
- categories = ", ".join(event['categories'])
- if choice in categories:
- print("Löytyi hakusanaan sopiva tapahtuma!\n")
- print(event['name'])
- # address on dictionary, jonka alla on vielä street address ja postal code
- street_address = event['address']['street_address']
- postal_code = event['address']['postal_code']
- print(f"{postal_code} {street_address}")
- # jos kategorioita ei ole, ilmoitetaan käyttäjälle
- # muussa tapauksessa tulostetaan kategoriat
- if categories == "":
- print("Ei kategorioita.")
- else:
- print(categories)
- 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
Add Comment
Please, Sign In to add comment