Python Basic — kutilgan xatolar va ularni tushuntirish
Bu sahifa darsga tayyorgarlik uchun. Har dars uchun eng ko’p uchraydigan xato, uning haqiqiy sababi va sinfda ishlaydigan tushuntirish yozilgan.
0-dars — muhit sozlash
“0-dars — muhit sozlash” bo'limiga havola| Xato | Sabab | Tushuntirish |
|---|---|---|
python topilmadi |
Add Python to PATH belgilanmagan |
Qayta o’rnatish. Batafsil: muhit muammolari |
| Faylni papkasiz ochish | «Fayl» va «papka» farqi tushunilmagan | Papka — ish stoli, fayl — undagi qog’oz. VS Code ish stolini ochadi |
| Fayl nomi kirillda | Klaviatura tili | Nom lotin harflarida, bo’shliqsiz. dars-01.py |
1-dars. Eng ko’p: qo’shtirnoq yopilmaydi yoki qavs tushib qoladi.
Sabab — kod matn ekani hali odat bo’lmagan. Tushuntirish: SyntaxError ning
qator raqamini ko’rsatib, “Python shu joyga kelganda tushunmadi” deb ayting.
Xato oldingi qatorda bo’lishi ham mumkin — buni alohida aytish kerak.
2-dars. a = b ni “nusxa oldim” deb tushunish. Sabab — quti modeli
maktabda ko’p ishlatiladi. Tushuntirish: id() ni ikki nom uchun chop etib
ko’rsatish. Sonlar bilan bu xavfsiz bo’lgani uchun o’quvchi 9-darsgacha
xatosini sezmaydi — shuning uchun 2-darsda “9-darsda qaytamiz” deb aytib
qo’yiladi.
3-dars. / va // ni chalkashtirish; 0.1 + 0.2 natijasidan hayron
bo’lish. Tushuntirish: pulni bo’lish misoli — 100 000 so’mni 7 kishiga
bo’lsangiz, har biriga //, qolgani %. Kasr son masalasi
CF 3-darsdan keladi.
4-dars. Modulning eng ko’p uchraydigan xatosi: input() natijasini son
deb ishlatish. Tushuntirish: type(input(...)) ni chop etib ko’rsatish. “5
kiritdim, lekin bu «5»” — qo’shtirnoqni doskaga yozib ajratib ko’rsating.
5-dars. elif tartibini buzish va = bilan == ni chalkashtirish.
Tushuntirish: 95 ballni o’sha buzuq tartibga qo’yib, natijani ko’rsatish. =
bog’laydi, == so’raydi — bu ikki boshqa amal.
6-dars. Cheksiz sikl: hisoblagichni oshirish esdan chiqadi. Tushuntirish:
Ctrl+C ni oldindan o’rgatib qo’yish, keyin uch qismni doskada belgilash —
qaysi biri yo’q?
7-dars. range(5) ni 1–5 deb o’ylash. Tushuntirish: list(range(5)) ni
chop etib ko’rsatish. Bundan tashqari maksimumni eng = 0 dan boshlash —
manfiy sonlar bilan sinab ko’rsatiladi.
8-dars. Ichki va tashqi hisoblagichni almashtirish (i va j).
Tushuntirish: ikkalasini bir vaqtda chop etish — print(i, j) — va jadvalni
kuzatish.
9-dars — blokning eng og’iri. b = a dan keyin b.append() a ni ham
o’zgartiradi. Sabab: 2-darsdagi yorliq modeli hali o’rnashmagan. Tushuntirish
ketma-ketligi: (1) id(a) va id(b) teng ekanini ko’rsatish, (2) simulyatordagi
ikki strelkani bir obyektga ko’rsatish, (3) copy() bilan id o’zgarishini
ko’rsatish. Uchtasi ham bajarilishi kerak — bittasi yetmaydi.
10-dars. s[0] = «S» yozishga urinish. Tushuntirish: TypeError matnini
o’qish va “satr o’zgarmas, shuning uchun yangisi yasaladi” degan gapni
«S» + s[1:] bilan ko’rsatish. Slicingda oxirgi indeks kirmasligini
range bilan bog’lash foydali.
11-dars. Lug’atga indeks bilan murojaat (jurnal[0]). Tushuntirish: lug’atda
tartib murojaat uchun ishlatilmaydi; KeyError matnini o’qish. get() ni ko’rsatish.
12-dars. Qavat sonini chalkashtirish: baholar[«Aziza»][1] da qaysi qavat
nima. Tushuntirish: har qadamdan keyin print(type(...)) — bu odatni shu darsda
o’rnatish kerak, keyingi darslarda ish beradi.
13-dars — blokning eng og’iri. print o’rniga return yozilmaydi.
Tushuntirish: simulyatorning uchinchi qadamini ko’rsatish — natija ga None
yozilgan joy. Keyin print(natija) bilan None ni o’z ko’zi bilan ko’rsatish.
“Ekranda 25 chiqqani chalg’itdi” degan gapni aytib qo’yish kerak.
14-dars. Funksiya ichida global o’zgaruvchini o’zgartirishga urinish va
UnboundLocalError. Tushuntirish: Python funksiya tanasini oldindan ko’rib
chiqishi — jami = ... uchradi, demak lokal. Yechim: parametr orqali berish
(global emas).
15-dars. Bazaviy holatni yozmaslik yoki unga yetib bo’lmaydigan shart
qo’yish (if n == 0 bo’lsa-da, kamayt(-5) chaqirilsa). Tushuntirish:
“Bazasiz” variantini ko’rsatish, keyin shartni n < 0 ga o’zgartirib qayta
sinash.
16-dars. Faylni random.py deb nomlash va AttributeError olish.
Tushuntirish: simulyatorning uchinchi variantini ko’rsatish. Qo’shimcha:
__pycache__ papkasini o’chirish kerak bo’lishi.
17-dars. Traceback ni yuqoridan o’qish va “hech narsa tushunmadim” deyish. Tushuntirish: bir marta o’zingiz pastdan yuqoriga o’qib bering — ovoz chiqarib, har qatorni nomlab. Bir marta yetadi, keyin odat bo’ladi.
18-dars. Fayl oxiridagi bo’sh qator. Sabab: matn muharriri oxirgi qatordan
keyin \n qo’yadi va bu ko’rinmaydi. Tushuntirish: faylni ochib, kursorni
oxirgi qatordan pastga tushirib ko’rsatish — bo’sh qator bor. Keyin len(qismlar)
ni chop etish.
19-dars. “Testim o’tdi, demak kod to’g’ri”. Tushuntirish: simulyatorda uchta test ikki versiyada ham o’tadi. Savolni o’zgartirish kerak: “bu test qanday xatoni ushlay oladi?”
20-dars. AI kodini tekshirmasdan qabul qilish. Tushuntirish: uch buzuq kodni ko’rsatish va ularning uchalasi ham oddiy sinovda ishlashini ta’kidlash. Chegara holati ro’yxatini doskaga yozib qo’yish: bo’sh, nol, manfiy, ikkinchi chaqiruv.
Uch umumiy xato — har darsda uchraydi
“Uch umumiy xato — har darsda uchraydi” bo'limiga havolaChekinish buzilishi (IndentationError). Tab va bo’shliq aralashgan.
Yechim bir marta va butun sinf uchun: settings.json da "editor.insertSpaces": true
va "editor.tabSize": 4. 0-darsda sozlangan.
Xato xabarini o’qimaslik. O’quvchi xato chiqishi bilan qo’l ko’taradi. Qoida: avval xato turining nomini o’qib bering, keyin qator raqamini. Ikki so’rovdan keyin ko’p o’quvchi o’zi topadi.
Kodni tushunmasdan ko’chirish. Doskadan ko’chirilgan kod ishlaydi, lekin
model qurilmaydi. Qarshi chora — <KodBashorat> blokini tashlab ketmaslik:
bashorat yozilmagan bo’lsa, kod ishga tushirilmaydi.