Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # luento 4, merkkijonojen käsittely sekä virheiden hallinta
- print("Tervetuloa!")
- # UUSI TIEDOSTO
- # hipsuja ja lainausmerkkejä yhdistelmällä voidaan saada
- # myös kirjaimellisesti lainausmerkit tekstiin
- name = 'Matti "Mahtikoodari" Meikäläinen'
- print(name)
- # jos halutaan kirjaimellisesti lainausmerkit tekstin sekaan
- # muista \", koska muutoin Pythonin syntaksi menee sekaisin
- # name = "Matti "Mahtikoodari" Meikäläinen"
- name = "Matti \"Mahtikoodari\" Meikäläinen"
- print(name)
- # muutoin hipsuilla ja lainausmerkeillä ei datan osalta ole merkitystä
- name2 = "Matti"
- name3 = 'Matti'
- print(name2)
- print(name3)
- # UUSI TIEDOSTO
- text = input("Anna jotain tekstiä:\n")
- # osateksti, ensimmäisestä merkistä kymmenenteen merkkiin
- subtext1 = text[0:10]
- print(subtext1)
- # osateksti, kuudennesta merkistä viidenteentoista merkkiin
- # eli pituus yhteensä = 10
- subtext2 = text[5:15]
- print(subtext2)
- # osateksti, otetaan viisi viimeistä merkkiä
- subtext3 = text[-5:]
- print(subtext3)
- # osateksti, ota kaikki merkit viidennen merkin jälkeen
- subtext4 = text[5:]
- print(subtext4)
- # UUSI TIEDOSTO
- # joskus tekstidatassa on lopussa ylimääräisiä merkkejä
- # mitä halutaan siivota
- years = "2022-2021-2020-2019-2018-"
- print(years)
- # otetaan ensimmäisestä merkistä eteenpäin toiseksi viimeiseen merkkiin
- years = years[0:-1]
- print(years)
- # UUSI TIEDOSTO
- text = input("Anna jokin lause:\n")
- # tekstin pituus, eli merkkimäärä
- text_length = len(text)
- print(f"Tekstissä merkkejä: {text_length} kpl")
- # lasketaan pienet a-kirjaimet tekstistä
- # HUOM! isot ja pienet kirjaimet ovat ohjelmointikielessä
- # täysin eri kirjaimia
- a_letters = text.count("a")
- print(f"Tekstissä a-kirjaimia: {a_letters} kpl")
- print()
- # reagoidaan ehtolauseella merkkimäärään
- if text_length > 30:
- print("Pitkä lause!")
- else:
- print("Lyhyt lause...")
- # erittäin yleinen testi: onko teksti tyhjä vai ei?
- if text_length == 0:
- print("Teksti on tyhjä!")
- else:
- print("Teksti ei ole tyhjä.")
- # UUSI TIEDOSTO
- text = "Rovaniemi"
- # tekstin kääntäminen on Pythonissa hieman erikoinen
- # käytännössä käytetään osatekstiä, mutta haetaan tekstiä väärään suuntaan
- reversed_text = text[::-1]
- print(reversed_text)
- # UUSI TIEDOSTO
- drinks = "mehu, maito, kahvi, tee, mehu"
- print(drinks)
- # oletuksena replace korvaa kaikki sanat mitkä löytyy
- # jos käytetään drinks.replace("mehu", "vichy", 1),
- # korvataan vain ensimmäinen "mehu"
- # muista tallentaa tulos muuttujaan, pelkkä replace() -ei tee mitään
- drinks = drinks.replace("mehu", "vichy")
- print(drinks)
- print()
- # toinen tapa poistaa ylimääräinen välilyönti on käyttää strip() -funktiota
- new_drinks = drinks.replace(", ", "\n")
- print(new_drinks)
- print()
- usertext = input("Mitä juomaa haluat?\n")
- # jos halutaan löytää onko annettu sana tekstimuuttujassa:
- # voidaan käyttää if-in -komentoa
- if usertext in drinks:
- print("Löytyi!")
- else:
- print("Ei löytynyt...")
- # UUSI TIEDOSTO
- text = input("Anna joko numero tai tekstiä:\n")
- # jos haluaa käyttää desimaaliarvoja,
- # voidaan ottaa piste pois ennen if-lausetta
- # text_new = text.replace(".", "")
- # sama asia kuin if text.isnumeric() == True:
- # ohjelmassa on nyt kaksi haaraa riippuen siitä
- # syöttikö käyttäjä tekstiä vai numeron
- if text.isnumeric():
- print("Annoit numeron!")
- number = int(text)
- number = number * 2
- print(number)
- else:
- print("Annoit tekstiä!")
- # UUSI TIEDOSTO
- text = input("Opiskelija vai aikuinen? (o/a):\n")
- # muutetaan käyttäjän syöte pieniksi kirjaimiksi
- # tämän avulla myös iso A ja iso O toimivat alemmassa
- # ehtolauseessa!
- text = text.lower()
- # reagoidaan käyttäjän valintaan
- if text == "o":
- print("Opiskelija!")
- elif text == "a":
- print("Aikuinen!")
- else:
- print("Väärä valinta...")
- # UUSI TIEDOSTO
- # otetaan hallitusti koppi mahdollisesta virhetilanteesta
- # esim. jos käyttäjä syöttää numeron sijasta tekstiä, esim. paloauto
- try:
- number = input("Anna numero:\n")
- number = int(number)
- number = number * 2
- print(number)
- except ValueError:
- print("Syötit tekstiä. Käynnistä ohjelma uudelleen!")
- # UUSI TIEDOSTO
- # otetaan hallitusti koppi mahdollisesta virhetilanteesta
- # esim. jos käyttäjä syöttää numeron sijasta tekstiä, esim. paloauto
- # huom: jokainen eri virhetyyppi pitää ottaa kiinni
- # tässä tapauksessa teksti, tai jos syöttää 0
- # huom: 0 on numero, siksi se ei mene ValueErroriin
- try:
- number = input("Anna numero:\n")
- number = int(number)
- # tämä tuottaa ZeroDivisionErrorin, jos number on 0
- divided = 100 / number
- print(divided)
- except ValueError:
- print("Syötit tekstiä. Käynnistä ohjelma uudelleen!")
- except ZeroDivisionError:
- print("Nollalla ei saa jakaa, syötä jokin muu numero.")
- # UUSI TIEDOSTO
- # voidaan myös geneerisesti ottaa kaikki virheet huomioon kerralla
- # tässä tapauksessa virheviestit tulevat suoraan Pythonista
- # eivätkä välttämättä ole kovin loppukäyttäjäystävällisiä
- try:
- number = input("Anna numero:\n")
- number = int(number)
- # tämä tuottaa ZeroDivisionErrorin, jos number on 0
- divided = 100 / number
- print(divided)
- except Exception as e:
- print(f"Virhe: {e}")
- # UUSI TIEDOSTO
- # Tämä esimerkki yhdistelee kaikkia, eli ehtolauseita, merkkijono-operaatioita
- # sekä virheenkäsittelyä
- # Tehdään ohjelma, joka tarkistaa, onko annettu asiakastunnus oikeassa muodossa
- # esim. teleoperaattorin asiakastunnus tai vastaava ym.
- # esimerkki asiakastunnuksesta: A1234_2345
- # Logiikka: tunnus on aina tasan 10 merkkiä pitkä, ja kuudes merkki on aina alaviiva
- # käytetään varmuudeksi try/exceptiä koko ohjelmalle ettei tule varsinaista virhettä
- # ja ettei ohjelma kaadu/tilttaa
- try:
- # pyydetään asiakastunnus käyttäjältä
- client = input("Syötä asiakastunnus:\n")
- text_length = len(client)
- # tarkistetaan että tunnus on tasan 10 merkkiä pitkä
- if text_length != 10:
- print("Tunnus on väärän mittainen (vaaditaan 10 merkkiä.)")
- elif client[5] != "_":
- # huom: ensimmäinen merkki alkaa 0:sta, joten kuudes merkki on [5]
- print("Tunnuksesta puuttuu alaviiva (kuudes merkki).")
- else:
- # jos kaksi ylempää if-elif olivat ok, tullaan lopulta tähän else-lauseeseen
- print("Tunnus OK!")
- # otetaan osatekstillä tunnuksen alku- ja loppuosa irti
- id = client[0:5]
- order = client[6:10]
- order = int(order)
- print(id)
- print(order)
- except Exception as e:
- # except ottaa lopuksi viimeistään kiinni, jos joku syöttää
- # asiakastunnuksen toisessa osassa kirjaimen
- # esim. A4321_567Y (ks. rivi jossa muutetaan order kokonaisluvuksi)
- print(f"Virhe: {e}")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement