Virhetilanteiden käsittely

Sisältää
tehtäviä!

Yleensä ohjelman suorituksessa voi tulla virheitä paitsi ohjelmointivirheistä, mutta myös ohjelman käyttäjän syöttämistä vääristä arvoista.

Käyttäjän syöttämiin vääriin arvoihin voidaan varautua try - except rakenteella.

try haarassa siis yritetään tehdä jotain ja jos se ei onnistu, niin ohjelma suorittaa except haarassa olevat käskyt.

Esimerkiksi voimme tehdä ohjelman, jossa käyttäjältä halutaan luku. Jos käyttäjä syöttää luvun, niin suoritamme laskutoimituksen ja jos käyttäjä antaa "väärän" syötteen, niin huomautamme siitä.


luku = input("Anna luku")

try:
    tulos = float(luku) + 3
    print(tulos)
except:
	print("Et antanut lukua")

Kokeile! Anna yllä olevaan ohjelmaan erilaisia arvoja: lukuja ja muita merkkejä.

Finally

Finally -haaraa voidaan käyttää, jos halutaan tehdä jotain, tapahtui virhe tai ei.

Edelliseen esimerkkiin voitaisiin esimerkiksi lisätä:


luku = input("Anna luku")

try:
    tulos = float(luku) + 3
    print(tulos)
except:
	print("Et antanut lukua")
finally:
	print("Kiitos!")

	

Esimerkki



luku = 4

def tarkista(luku):
	palaute = True
	try:
		tulos = int(luku)*1
	except:
		palaute = False
	return palaute
	
def kysy():
	global luku
	testi = False
	while (testi == False):
		arvaus = input("Anna kokonaisluku")
		
		if (tarkista(arvaus) == False):
			alert("Et antanut lukua")
		elif (int(arvaus) == luku):
			alert("Oikein")  
			testi = True
		elif (int(arvaus) < luku):
			alert("Anna isompi luku")
		elif (int(arvaus) > luku):
			alert("Anna pienempi luku")

kysy()


	

Tehtävä 1

Lisää edelliseen kokokaisluvun arvausohjelmaan funktio, mikä arpoo luvun 1-100 ja funktio uusi peli.

Ohjelman täytyy oikean vastauksen saatuaan kysyä, haluaako käyttäjä uuden pelin.

Käytä uuden pelin kysymykseen käskyä: tulos = window.confirm("Uusi peli?") , mikä palauttaa arvon True/False.

Suorita tehtävät Editorilla ja tallenna työsi Tiedostona.

Tehtävä 2

Tee funktio mikä tarkistaa merkkijonosyötteestä onko luku desimaaliluku ja palauttaa arvon True/False.

Suorita tehtävät Editorilla ja tallenna työsi Tiedostona.