Asosiy mazmunga o'tish

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

Python 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.

/ har doim kasr son qaytaradi, hatto teng bo’linsa ham: 10 / 25.0. // butun bo’linmani beradi (kasr qismini tashlaydi): 10 // 33. % qoldiqni beradi: 10 % 31.

bolish.py
jami = 100000odam = 7print(jami // odam)   # 14285 — har kishigaprint(jami % odam)    # 5     — ortgan pulprint(jami / odam)    # 14285.714285714286

0.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.

int("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.

Avval o'ylang: bu kod nima chiqaradi? Ishga tushirishdan oldin yozing.

Bashorat qiling
print(7 // 2)print(7 % 2)print(7 / 2)
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.

Bashorat qiling
print(2 + 3 * 4)print("2" + "3")print(10 == 10.0)
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.

Har 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.

Bu kod ataylab buzuq — xatoni toping

Buzuq kod
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.

1type(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
  1. 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 — 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.