3-dars: Turlar va ifodalar
1-blokMashina buyruqni qanday tushunadi1–4 darslar
Bu darsdan keyin siz
- to’rt asosiy turni ajratasiz va
type()bilan tekshirasiz /,//,%farqini bilib, mos joyda ishlatasiz- amallar tartibini hisobga olib ifoda natijasini oldindan aytasiz
Nazariya
“Nazariya” bo'limiga havolaTo’rt asosiy tur
“To’rt asosiy tur” bo'limiga havolaPython har qiymatning turini biladi va turga qarab amallarni boshqacha bajaradi.
Boshlanish uchun to’rttasi yetadi: int (butun son), float (kasr son),
str (satr, ya’ni matn) va bool (faqat True yoki False).
turtype
Qiymatning qanday ma’lumot ekani. Tur amallarning ma’nosini o’zgartiradi:
3 + 4 qo’shish, "3" + "4" esa ulash — natija "34".
Shubha bo’lsa type() dan so’rang: type(5) → <class 'int'>,
type("5") → <class 'str'>. Bu ikkisi ekranda bir xil ko’rinadi, lekin butunlay
boshqa narsa.
Uch xil bo’lish
“Uch xil bo’lish” bo'limiga havola/ har doim kasr son qaytaradi, hatto teng bo’linsa ham: 10 / 2 → 5.0.
// butun bo’linmani beradi (kasr qismini tashlaydi): 10 // 3 → 3.
% qoldiqni beradi: 10 % 3 → 1.
jami = 100000odam = 7print(jami // odam) # 14285 — har kishigaprint(jami % odam) # 5 — ortgan pulprint(jami / odam) # 14285.714285714286Kasr sonlar aldaydi
“Kasr sonlar aldaydi” bo'limiga havola0.1 + 0.2 ni Python 0.30000000000000004 deb hisoblaydi. Bu xato emas: 0.1 sonini
ikkilik sanoqda aniq yozib bo’lmaydi, xuddi 1/3 ni o’nlikda aniq yozib
bo’lmagani kabi. Sababi CF 3-darsda batafsil.
Turlarni aylantirish
“Turlarni aylantirish” bo'limiga havolaint("25") satrni songa, str(25) sonni satrga, float("3.5") satrni kasr songa
aylantiradi. Bu keyingi darsda hayotiy zarur bo’ladi: input() har doim satr qaytaradi.
Bashorat qiling
“Bashorat qiling” bo'limiga havolaAvval o'ylang: bu kod nima chiqaradi? Ishga tushirishdan oldin yozing.
print(7 // 2)print(7 % 2)print(7 / 2)Haqiqiy natija:
3 1 3.5
// butun bo'linma (3), % qoldiq (1), / esa har doim kasr (3.5). Uchtasi uch xil savolga javob beradi.
Javobni ko'rish
3 1 3.5
// butun bo'linma (3), % qoldiq (1), / esa har doim kasr (3.5). Uchtasi uch xil savolga javob beradi.
Avval o'ylang: bu kod nima chiqaradi? Ishga tushirishdan oldin yozing.
print(2 + 3 * 4)print("2" + "3")print(10 == 10.0)Haqiqiy natija:
14 23 True
Ko'paytirish qo'shishdan ustun (14). Satrlar uchun + ulash amali ('23'). Son sifatida 10 va 10.0 teng, garchi turlari boshqa bo'lsa ham.
Javobni ko'rish
14 23 True
Ko'paytirish qo'shishdan ustun (14). Satrlar uchun + ulash amali ('23'). Son sifatida 10 va 10.0 teng, garchi turlari boshqa bo'lsa ham.
Sinab ko’r
“Sinab ko’r” bo'limiga havolaHar ifodani qadam-qadam soddalashtirib, Python qaysi amalni nega birinchi bajarayotganini kuzating. Oxirgi ikki misol — eng ko’p uchraydigan tuzoqlar.
Ifoda baholovchi
Ifodani tanlang va qadam-qadam soddalashtiring. Klaviatura: → keyingi qadam.
Bu simulyator ifodani Python bajaradigan tartibda soddalashtiradi: har qadamda bitta amal yo'qoladi va nega aynan o'sha amal tanlangani izohlanadi.
JavaScript'siz sinash: 2 + 3 * 4 ** 2 ifodasini qo'lda soddalashtiring. Tartib: daraja, keyin ko'paytirish, oxirida qo'shish. Javob 50, 400 emas.
Xatoni toping
“Xatoni toping” bo'limiga havolaBu kod ataylab buzuq — xatoni toping
yosh = "14"keyingi = yosh + 1print(keyingi)Python shunday javob beradi:
Traceback (most recent call last): File "yosh.py", line 2, in <module> keyingi = yosh + 1 TypeError: can only concatenate str (not "int") to str
Sababi va tuzatish
yosh satr (qo'shtirnoq ichida), 1 esa son. Python satr bilan sonni qo'shishni bilmaydi — bu ikki xil dunyoni qo'shish.
Ikki yechim, ikki xil ma’no: int(yosh) + 1 arifmetik qo’shish (natija 15),
yosh + "1" esa satr ulash (natija "141"). Nima kerakligini siz hal qilasiz —
Python taxmin qilmaydi.
O’zingizni sinang
“O’zingizni sinang” bo'limiga havola1type(5) va type('5') natijalari nima va farqi nimada?
Javobni ko'rish
<class ‘int’> va <class ‘str’>. Birinchisi son —
hisoblashda ishlatiladi; ikkinchisi matn — faqat ulanadi va takrorlanadi.
2100 000 so'mni 7 kishiga bo'lishda // va % nimani beradi?
Javobni ko'rish
100000 // 7 = 14285 — har kishiga tegadigan summa.
100000 % 7 = 5 — bo’linmay ortgan so’m.
32 + 3 * 4 ** 2 ifodasining natijasi nima?
Javobni ko'rish
- Tartib: daraja (
4**2=16), keyin ko’paytirish (3*16=48), oxirida qo’shish (2+48=50).
4Nega 0.1 + 0.2 == 0.3 natijasi False?
Javobni ko'rish
0.1 va 0.2 ikkilik sanoqda aniq ifodalanmaydi, shuning uchun yig’indi
0.30000000000000004 bo’lib chiqadi. Kasr sonlarni tenglikka emas,
farqning kichikligiga tekshirish kerak.
5'10' satrini songa aylantirib 5 qo'shish uchun qanday yozasiz?
Javobni ko'rish
int(“10”) + 5 — natija 15. “10” + str(5) yozilsa natija
“105” satri bo’ladi.
Topshiriq
“Topshiriq” bo'limiga havolaTopshiriq — darajangizni tanlang
Asos · 5–7-sinf — Vizual va aniq ko'rsatmali
Bir qutida 12 ta qalam bor. qalam = 100 deb bering va: nechta to’la quti
chiqadi (//), nechta qalam ortadi (%) — ikkisini print bilan chiqaring.
Keyin qalam ni 50 va 7 ga o’zgartirib qayta ishga tushiring, natijalarni
daftarga yozing.
Mustahkam · 8–9-sinf — Matnli masala, o'zingiz tuzasiz
Do’kon cheki: narx, soni va chegirma_foizi dan yakuniy summani hisoblang.
Summani butun so’mga yaxlitlab chiqaring (round yoki // ishlatib) va
chekni ikki qatorda chiroyli chiqaring. Kodda type() bilan kamida bitta
o’zgaruvchining turini tekshirib ko’rsating.
Chuqur · 10–11-sinf — Algoritmik, chegara holatlari bilan
0.1 + 0.2 == 0.3 ning False bo’lishini o’z kodingizda ko’rsatib, keyin
abs(a - b) < 1e-9 usuli bilan to’g’ri taqqoslashni yozing. Qo’shimcha:
pulni kasr float bilan hisoblash nega xavfli va buning o’rniga nimani
ishlatish mumkin (masalan, hammasini tiyinda butun son sifatida saqlash) —
bir paragrafda tushuntiring va misol kodda ko’rsating.
Darsni belgilash uchun JavaScript kerak. Bu progressni saqlash uchun ishlatiladi — darslikning o'zi JavaScript'siz ham to'liq o'qiladi.