Exception handling (tasks) - herburt30/info GitHub Wiki
I. Užduotis: Padalink du skaičius --- Parašyk programą, kuri paprašo vartotojo įvesti du skaičius ir juos padalina. Apdorok padalijimą iš nulio.
Sprendimas =>
try:
a = float(input("Įveskite pirmą skaičių: "))
b = float(input("Įveskite antrą skaičių: "))
result = a / b
print(f"Rezultatas: {result}")
except ZeroDivisionError:
print("Klaida: dalyba iš nulio negalima.")
II. Užduotis: Konvertuok į skaičių --- Parašyk programą, kuri bando konvertuoti vartotojo įvestį į sveikąjį skaičių. Apdorok neteisingą įvedimą.
Sprendimas =>
try: number = int(input("Įveskite sveikąjį skaičių: "))
print(f"Įvestas skaičius: {number}")
except ValueError:
print("Klaida: tai nėra sveikasis skaičius.")
III. Užduotis: Dirbk su sąrašu --- Turimas sąrašas [10, 20, 30]. Parašyk programą, kuri leidžia vartotojui įvesti indeksą ir grąžina reikšmę. Apsaugok nuo neteisingo indekso.
Sprendimas =>
numbers = [10, 20, 30]
try:
index = int(input("Įveskite indekso numerį (0–2): "))
print(f"Reikšmė: {numbers[index]}")
except IndexError:
print("Klaida: toks indeksas neegzistuoja.")
except ValueError:
print("Klaida: įvestas ne sveikasis skaičius.")
IV. Užduotis: Apskaičiuok kvadratinę šaknį
--- Parašyk programą, kuri grąžina kvadratinę šaknį iš įvesto skaičiaus. Tvarkyk atvejus, kai skaičius yra neigiamas arba įvedimas neteisingas.
Sprendimas =>
import math
try:
num = float(input("Įveskite skaičių: "))
if num < 0:
raise ValueError("Neigiamas skaičius neturi realios kvadratinės šaknies.")
print(f"Kvadratinė šaknis: {math.sqrt(num)}")
except ValueError as e:
print(f"Klaida: {e}")
V. Užduotis: Failo atidarymas --- Parašyk programą, kuri bando atidaryti failą duomenys.txt skaitymui. Tvarkyk atvejį, jei failo nėra.
Sprendimas =>
try:
with open("duomenys.txt", "r") as file:
content = file.read()
print("Failo turinys:")
print(content)
except FileNotFoundError:
print("Klaida: failas 'duomenys.txt' nerastas.")
VI. Užduotis: Ištrauk reikšmę iš dictionary
Parašyk programą, kuri leidžia vartotojui įvesti raktą ir grąžina reikšmę. Apsaugok nuo klaidingo rakto.
Sprendimas =>
data = {"vardas": "Jonas", "amžius": 25, "miestas": "Vilnius"}
try:
key = input("Įveskite raktą (vardas, amžius, miestas): ")
print(f"Reikšmė: {data[key]}")
except KeyError:
print("Klaida: toks raktas neegzistuoja žodyne.")
VII. Užduotis: Patikrink ar reikšmė yra set'e
--- Parašyk programą, kuri leidžia vartotojui įvesti vaisiaus pavadinimą ir tikrina, ar jis yra set'e.
Sprendimas =>
elements = {"obuolys", "bananas", "kriaušė"}
try:
item = input("Įveskite vaisiaus pavadinimą: ")
if item in elements:
print("Vaisius yra sąraše.")
else:
raise ValueError("Toks vaisius nerastas.")
except ValueError as e:
print(f"Klaida: {e}")
VII. Užduotis: Gauk reikšmę iš tuple pagal indeksą
Sprendimas =>
colors = ("raudona", "žalia", "mėlyna")
try:
index = int(input("Įveskite indekso numerį (0–2): "))
print(f"Spalva: {colors[index]}")
except IndexError:
print("Klaida: toks indeksas neegzistuoja.")
except ValueError:
print("Klaida: įvestas ne sveikasis skaičius.")
VIII. Užduotis: Maršruto tikrinimas su išimčių tvarkymu
- Turimas maršrutas:
marsrutas = ["Vilnius", "Ukmergė", "Panevėžys", "Šiauliai"]
Vartotojas turi įvesti miestą, per kurį nori važiuoti (pvz. "Kaunas").
Naudodami try–except bloką:
Patikrinkite, ar įvestas miestas yra maršrute.
Jei miestas yra – išveskite: „Kelias eina per [miestas]“
Jei nėra – išmeskite ValueError su pranešimu ir jį sugaukite.
Jei įvestis netinkama (pvz. tuščia) – apdorokite su Exception.
Sprendimas =>
marsrutas = ["Vilnius", "Ukmergė", "Panevėžys", "Šiauliai"]
try:
miestas = input("Įveskite miestą, per kurį norėtumėte važiuoti: ").strip()
if not miestas:
raise ValueError("Miestas neįvestas.")
if miestas in marsrutas:
print(f"Kelias eina per {miestas}.")
else:
raise ValueError(f"Maršrutas neeina per {miestas}. Gal norite pasirinkti kitą kelią?")
except ValueError as ve:
print(f"Klaida: {ve}")
except Exception as e:
print(f"Nenumatyta klaida: {e}")