Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # luento 5, 7.10.2024, merkkijonot ja virheenkäsittely
- print("Tervetuloa!")
- # UUSI TIEDOSTO
- # hipsuja ja lainausmerkkejä yhdistelemä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)
- # hipsuilla ja lainausmerkeillä ei muutoin ole datan osalta merkitystä
- # kumpikin käy
- name2 = "Matti"
- name3 = 'Matti'
- print(name2)
- print(name3)
- # UUSI TIEDOSTO
- # kysytään tekstiä käyttäjältä, huom: älä muuta numeroksi
- # sillä haluamme pitää tämän tekstiformaatissa
- text = input("Anna jotain tekstiä:\n")
- # osateksti, ensimmäisestä merkistä kymmenenteen merkkiin
- subtext1 = text[0:10]
- print(subtext1)
- # osateksti, kuudennesta merkistä viidenteentoista merkkiin
- subtext2 = text[5:15]
- print(subtext2)
- # osateksti, viimeiset viisi merkkiä:
- subtext3 = text[-5:]
- print(subtext3)
- # osateksti, kaikki teksti viidennen merkiin jälkeen
- subtext4 = text[5:]
- print(subtext4)
- # UUSI TIEDOSTO
- # joskus tekstidatassa on lopussa ylimääräisiä merkkejä
- # mitkä halutaan siivota pois
- years = "2022-2021-2020-2019-2018-"
- # poistetaan viimeinen merkki
- # eli käytännössä otetaan ensimmäisestä merkistä toiseksi viimeiseen merkkiin
- years = years[0:-1]
- print(years)
- # UUSI TIEDOSTO
- # kysytään käyttäjältä tekstiä
- text = input("Anna jokin lause:\n")
- # tekstin pituus saadaan kätevästi len() -funktiolla!
- text_length = len(text)
- print(f"Tekstissä merkkejä: {text_length} kpl")
- # voidaan myös käyttää ehtolauseessa,
- # jos tekstin pituuteen halutaan reagoida
- if text_length > 30:
- print("Pitkä lause!")
- else:
- print("Lyhyt lause...")
- # lasketaan pienet a-kirjaimet tekstistä
- # HUOM! ohjelmoinnissa pienet ja isot kirjaimet ovat eri kirjaimia
- a_letters = text.count("a")
- print(f"Tekstissä a-kirjaimia: {a_letters} kpl")
- # jos on tarve reagoida tyhjään tekstiin erikseen,
- # sekin onnistuu len-funktiolla
- # myös voitaisiin tarkistaa että onhan tekstin pituus
- # alle 200 merkkiä (usein rajoitus nettilomakkeissa)
- # tai esim. onhan uuden salasanan pituus vähintään 13 merkkiä jne jne.
- 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
- # ja sivutuotteena teksti kääntyy toisinpäin
- 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")
- # jos haluat korvata esim. vain ensimmäisen, kokeile:
- #drinks.replace("mehu", "vichy", 1)
- # replace -> mikä korvataan, ja millä se korvataan
- # muista tallentaa tulos muuttujaan, pelkkä replace ei tee mitään
- drinks = drinks.replace("mehu", "vichy")
- print(drinks)
- print()
- # jos haluat poistaa tekstistä ylimääräiset välilyönnit,
- # muista strip() -funktio
- new_drinks = drinks.replace(", ", "\n")
- print(new_drinks)
- # kokeillaan löytää käyttäjän antama sana muuttujasta
- 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 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
- # ERITTÄIN HYVÄ LÄHTÖKOHTA LISÄTEHTÄVÄSSÄ 4-7
- 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")
- # ennen kuin vertaillaan mitä käyttäjä syötti
- # muutetaan käyttäjän syöttämä kirjain pieneksi
- # tämän avulla ei tarvitse erikseen if-lauseissa
- # testata isoja kirjaimia
- text = text.lower()
- # nyt vertailun pitäisi toimia sekä isoilla
- # että pienillä kirjaimilla
- if text == "o":
- print("Opiskelija!")
- elif text == "a":
- print("Aikuinen!")
- else:
- print("Väärä valinta...")
- # UUSI TIEDOSTO
- # otetaan hallitusti koppi mahdollisesti virhetilanteesta
- # esim. jos käyttäjä syöttää numeron sijasta tekstiä, esim. postilaatikko
- try:
- number = input("Anna numero:\n")
- number = int(number)
- number = number * 2
- print(number)
- except ValueError:
- # exceptin takia, voimme itse tulostaa vikatilanteesta viestin
- # eikä ohjelma varsinaisesti tilttaa/kaadu punaisen virheen myötä
- print("Syötit tekstiä. Käynnistä ohjelma uudelleen!")
- # UUSI TIEDOSTO
- # otetaan hallitusti koppi mahdollisesti virhetilanteesta
- # esim. jos käyttäjä syöttää numeron sijasta tekstiä, esim. postilaatikko
- try:
- number = input("Anna numero:\n")
- number = int(number)
- divided = 100 / number
- print(divided)
- except ValueError:
- # exceptin takia, voimme itse tulostaa vikatilanteesta viestin
- # eikä ohjelma varsinaisesti tilttaa/kaadu punaisen virheen myötä
- print("Syötit tekstiä. Käynnistä ohjelma uudelleen!")
- except ZeroDivisionError:
- # tämä except ottaa huomioon nollalla jakamisen
- # koska ValueError ei sitä ota kiinni (koska 0 on aivan ok kokonaisluku)
- print("Nollalla ei voi jakaa, syötä jokin muu kokonaisuluku.")
- # UUSI TIEDOSTO
- # otetaan hallitusti koppi mahdollisesti virhetilanteesta
- # esim. jos käyttäjä syöttää numeron sijasta tekstiä, esim. postilaatikko
- try:
- number = input("Anna numero:\n")
- number = int(number)
- divided = 100 / number
- print(divided)
- except Exception as e:
- print(f"Virhe: {e}")
- print("Ohjelman käytössä tapahtui odottamaton virhe.")
- print("Ota yhteyttä tekniseen ylläpitoon.")
- # 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
- # tehdään varmuudeksi try/except koko ohjelmalle, ettei tule varsinaista virhettä
- # ja ettei ohjelma kaadu/tilttaa
- try:
- 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, eli kuudes merkki on [5]
- print("Tunnuksesta puuttuu alaviiva (kuudes merkki).")
- else:
- # jos kaksi ylempää if-elif -lausetta oli ok, tullaan
- # lopulta tähän else-lauseeseen
- print("Tunnus ok!")
- # otetaan osatekstillä tunnuksen alku- ja loppuosa irti
- identifier = client[0:5]
- order = client[6:10]
- order = int(order)
- # tulostetaan irroitetu tunnisteet
- print(identifier)
- print(order)
- except Exception as e:
- # except ottaa lopuksi viimeistään kiinni, jos jokin menee pieleen
- print(f"Virhe: {e}")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement