AMALIYOT
Ushbu o'zgaruvchini JSON ko'rinishida saqlang va JSON matnini konsolga chiqaring: data = {"Model" : "Malibu", "Rang" : "Qora", "Yil":2020, "Narh":40000}
Ushbu JSON matnni ko'chirib oling, va talabaning ismi va familiyasini konsolga chiqaring: talaba_json = """{"ism":"Hasan","familiya":"Husanov","tyil":2000}"""
Yuqoridagi ikki o'zgaruvchini alohida JSON fayllarga saqlang.
Ushbu JSON faylni yuklab oling. Faylda 3 ta talabaning ism va familiyasi saqlangan. Ularning har birini alohida qatordan "Ism Familiya, n-kurs, Fakultet talabasi" ko'rinishida konsolga chiqaring.
Quyidagi bog'lamaga kirsangiz, Wikipediadagi Python dasturlash tili haqidagi maqolani JSON ko'rinishida ko'rishingiz mumkin. Brauzerda chiqqan ma'lumotni JSON ko'rinishida saqlang (brauzerda Ctrl+S tugmasini bosib). Faylni Pythonda oching va konsolga maqolaning sarlavhasi (title) va qisqa matnini (extract) chiqaring: https://uz.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=Python
JAVOBLAR
Javoblar uchun GirHub sahifamizga tashrif buyuring: https://github.com/anvarnarz/python-darslar
35-DARS. XATOLAR BILAN ISHLASH
Xatolarni jilovlashni o'rganamiz.
EXCEPTIONS
Avvalgi darslarimizning birida biz "Run time error" xatoliklari bilan tanishgan edik. Bunday xatolar dastur bajarish jarayonida kelib chiqadi va dasturning ishlashini to'xtatadi. Sintaks xatolikdan farqli ravishda Python bunday xatolarni dasturni bajarishdan avval aniqlay olmaydi.
Ushbu darsimizda qanday qilib mana shunday xatoliklarni jilovlashni o'rganamiz. Maqsadimiz xatolik yuz berganda dastur to'xtab qolishining oldini olish. Gap shundaki, dastur davomida xato yuz berganda Python maxsus exception (istisno) obyektini yaratadi. Agar bu obyekt "tutib" olinmasa, dastur bajarilishdan to'xtaydi.
try-except
Istisno obyektlarni tutib olish uchun Pythonda maxsus try-except operatorlari bor. Bu operatorlar quyidagicha ishlaydi, try operatori badanida bajarish kerak bo'lgan kod yoziladi, except operatori badanida esa xatolik yuz berganda bajarilishi kerak bo'lgan kod yoziladi. Ya'ni dasturimiz to'xtab qolmasdan bajarilaveradi.
Tushunarli bo'lishi uchun quyidagi misolni ko'ramiz.
In [4]:
yosh = input("Yoshingizni kiriting: ")
yosh = int(yosh)
print(f"Siz {2021-yosh} yilda tug'ilgansiz")
Yoshingizni kiriting: 36.5
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) in 1 yosh = input("Yoshingizni kiriting: ") ----> 2 yosh = int(yosh) 3 print(f"Siz {2021-yosh} yilda tug'ilgansiz") ValueError: invalid literal for int() with base 10: '36.5'
Keling, yuqoridagi kodni try-except yordamida yozamiz:
In [5]:
yosh = input("Yoshingizni kiriting: ")
try:
yosh = int(yosh)
print(f"Siz {2021-yosh} yilda tug'ilgansiz")
except:
print("Butun son kiritmadingiz")
print("Dastur Tugadi!")
Yoshingizni kiriting: 36.5 Butun son kiritmadingiz Dastur Tugadi!
try-except operatorining afzalliklaridan biri, foydalanuvchiga tushunarsiz xatolar o'rniga, o'zimiz istagan, tushunarliroq matnni ko'rsatishimiz mumkin. Shuningdek, kompleks tizimlarda arzimagan xatoni deb dasturimiz to'xtab qolmaydi.
try-except-else
Yuqoridagi kodimizda biz try moduli ichida xato qaytarishi mumkin bo'lgan ifodani ham (tyil = int(tyil)), xato qaytmaganda bajarilishi kerak bo'lgan ifodani ham (print(f"Siz {2021-tyil} yoshdasiz") ) birdan yozib ketayapmiz. Aslida, bunday qilishimiz to'g'ri emas.
To'g'ri usuli, bu avval xatoga tekshirish va xato yuz bermaganda bajariladigan ifodani alohida, else blokida yozish:
In [7]:
yosh = input("Yoshingizni kiriting: ")
try:
yosh = int(yosh)
except:
print("Butun son kiritmadingiz")
else:
print(f"Siz {2021-yosh} yilda tug'ilgansiz")
Yoshingizni kiriting: 36.5 Butun son kiritmadingiz
Albatta, yuqoridagi usul har doim ham qo'l kelavermaydi.
Do'stlaringiz bilan baham: |