Bu bo'lim ikkita "yo'l-yo'lakay, lekin hayotiy" mavzuga bag'ishlandi: xatolarni o'qiy olish va GitHub bilan birinchi tanishuv. Ikkalasi ham har kungi ishning ajralmas qismi bo'ladi.
Xato — dushman emas, ma'lumot
Har qanday darajadagi dasturchi har kuni xato ko'radi; farq — uni necha soniyada tushunishda. Python xato yuz berganda traceback (xato izi) chiqaradi. Uni o'qishning bitta qoidasi bor: eng pastki qatordan boshlang — xatoning turi va sababi aynan shu yerda; yuqoridagi qatorlar esa xato qaysi yo'l bilan kelganini ko'rsatadi.
narx = 15000
print(narxi)
Natija:
Traceback (most recent call last):
File "main.py", line 2, in <module>
print(narxi)
NameError: name 'narxi' is not defined. Did you mean: 'narx'?
Pastki qator to'liq javob beryapti: NameError — "narxi" degan nom yo'q; "Did you mean: 'narx'?" — Python yechimni ham taklif qilyapti. O'rtadagi qator xato qaysi faylning nechanchi qatorida ekanini aytadi.
Eng ko'p uchraydigan xatolar lug'ati
| Xato | Ma'nosi | Tipik sabab |
|---|---|---|
SyntaxError |
Yozuv qoidasi buzilgan | Yopilmagan qavs/qo'shtirnoq, unutilgan : |
IndentationError |
Surilish noto'g'ri | if/for ichidagi kod surilmagan yoki ortiqcha surilgan |
NameError |
Bunday nom yo'q | Nomdagi harf xatosi, e'lon qilinmagan o'zgaruvchi |
TypeError |
Turlar mos emas | "matn" + 5, funksiyaga noto'g'ri tur berish |
ValueError |
Tur to'g'ri, qiymat yaroqsiz | int("salom") |
IndexError |
Bunday indeks yo'q | 3 elementli ro'yxatda [3] |
KeyError |
Bunday kalit yo'q | Lug'atda mavjud bo'lmagan kalit |
Ikki misol:
print("salom" + 5)
Natija:
TypeError: can only concatenate str (not "int") to str
mevalar = ["olma", "nok"]
print(mevalar[5])
Natija:
IndexError: list index out of range
SyntaxError alohida turadi: u dastur boshlanishidan oldin chiqadi — Python kodni o'qiy olmagan. Qolgan xatolar dastur ishlab turganda, aynan o'sha qatorga yetganda chiqadi.
Xatoni topish yondashuvi
- Xabarni pastdan o'qing: turi nima, qaysi qator?
- O'sha qatorga boring; muammo ko'rinmasa, undagi o'zgaruvchilarni
printbilan chiqarib ko'ring — qiymatlar kutganingizdek ekanini tekshiring. - Kodni tavakkal o'zgartirmang — har o'zgarishdan oldin taxminingiz bo'lsin ("menimcha, sabab shu"). Taxmin-tekshirish sikli — debugging'ning o'zi shu.
Tipik xato — xabarni o'qimasdan "nimadir ishlamayapti" deb boshdan yozishga kirishish. Xabar deyarli har doim javobning yarmini aytib turadi.
GitHub bilan tanishuv
Git — kod tarixini yurituvchi tizim. Har saqlangan holat — commit — qisqa izoh bilan yozib boriladi; istalgan payt istalgan holatga qaytish mumkin. "final_versiya_2_yangi_ENG_OXIRGISI.py" fayllari davri Git bilan tugaydi.
GitHub — shu tarixni internetda saqlaydigan va bo'lishadigan xizmat. Asosiy tushunchalar:
- Repozitoriy (repo) — bitta loyihaning butun papkasi va tarixi;
- Commit — "shu holatni saqla" yozuvi, izohi bilan (masalan: "son topish o'yiniga limit qo'shildi");
- README.md — loyihaning bosh sahifasi: nima bu, qanday ishga tushiriladi.
Nega bu birinchi oydanoq kerak:
- Zaxira. Kompyuter buzilsa ham kod GitHub'da turadi.
- Tarix. Nimani qachon o'zgartirganingiz ko'rinib boradi; buzilgan joyni eski holat bilan solishtirish mumkin.
- Portfolio. Ish beruvchi rezyumedan oldin GitHub profilingizga qaraydi: muntazam commit'lar — muntazam o'sishning isboti.
Git buyruqlari (clone, push, pull, branch) alohida kursda — GitHub kursida — chuqur o'tiladi. Bu darsning maqsadi — akkaunt ochish, birinchi repozitoriyni yaratish va kod yuklab ko'rish.
Eslab qoling
- Traceback pastdan o'qiladi: oxirgi qator — xato turi va sababi.
- Har xato turining o'z "tarjimasi" bor; jadvalni yodda tuting.
- Debugging = taxmin qilish →
printbilan tekshirish → tuzatish. - Git — kod tarixi; GitHub — uning internetdagi uyi va sizning portfoliongiz.
- Xato chiqishi normal; uni o'qimaslik — yagona haqiqiy xato.
Amaliyot
- Uchta xatoni ataylab hosil qiling — yopilmagan qo'shtirnoq, e'lon qilinmagan o'zgaruvchi,
"7" + 7— va har xabarning qaysi qismi muammoni aytayotganini yozib chiqing. int("o'n")bajarib, chiqqan xatoni jadvaldagi qaysi tur ekanini aniqlang va negaTypeErroremasligini tushuntiring.- Quyidagi "buzilgan" kodni tuzating (unda 3 ta xato bor):
ism = "Ali
yosh = 20
if yosh > 18
print(Ism, "kattalar guruhida")
- github.com'da akkaunt oching va
python-mashqlarrepozitoriysini yarating (README bilan). - Shu bo'limgacha yozgan bitta mashqingizni repozitoriyga yuklang; commit izohini ma'noli yozing.
Keyingi qadam — bo'lim testi.