Arifmetik amallar
Kompyuterlar dastlab katta hisob-kitoblar uchun yaratilgan. Python ham ajoyib kalkulyator: u qo'shadi, bo'ladi, qoldiqni topadi va darajaga ko'taradi. Bu darsda shu amallarni va ularning kutilmagan foydali tomonlarini o'rganamiz.
Bu darsda
- Yettita arifmetik amal:
+ - * / // % ** - Amallar tartibi va qavslar
- Qisqartirilgan yozuv:
+=,-=va boshqalar round(),abs(),min(),max()funksiyalari- Amaliy masalalar: vaqtni hisoblash, raqamlar bilan ishlash
Asosiy amallar
| Belgi | Amal | Misol | Natija |
|---|---|---|---|
+ | Qo'shish | 7 + 3 | 10 |
- | Ayirish | 7 - 3 | 4 |
* | Ko'paytirish | 7 * 3 | 21 |
/ | Bo'lish | 7 / 2 | 3.5 |
// | Butun bo'lish | 7 // 2 | 3 |
% | Bo'linmaning qoldig'i | 7 % 2 | 1 |
** | Darajaga ko'tarish | 7 ** 2 | 49 |
print(15 + 4) print(15 - 4) print(15 * 4) print(15 / 4)
19 11 60 3.75
Ko'paytirish uchun × emas, yulduzcha *, bo'lish uchun esa ÷ emas, qiya chiziq / ishlatiladi — bu belgilar klaviaturada bor.
Oddiy bo'lish har doim kasr son beradi
/ amali natijasi doim float bo'ladi — hatto son butunlay bo'linsa ham:
print(10 / 2) print(9 / 3)
5.0 3.0
Butun bo'lish va qoldiq
Maktabda «qoldiqli bo'lish»ni o'rgangansiz: 17 ni 5 ga bo'lsak, 3 chiqadi va 2 qoladi. Python'da buning uchun ikkita amal bor:
//— butun bo'lish: bo'linmaning butun qismi.17 // 5→3%— qoldiq: bo'lishdan keyin ortib qolgan qism.17 % 5→2
17 ta olmani 5 ta bolaga teng bo'lyapsiz. Har biriga 17 // 5 = 3 tadan olma tegadi, 17 % 5 = 2 ta olma esa ortib qoladi.
olmalar = 17
bolalar = 5
print("Har biriga:", olmalar // bolalar)
print("Ortib qoldi:", olmalar % bolalar)
Qoldiq amali % birinchi qarashda uncha kerak emasdek tuyuladi, lekin dasturlashda u juda ko'p ishlatiladi:
- Juft yoki toqligini aniqlash: son 2 ga bo'linganda qoldiq 0 bo'lsa — juft.
10 % 2→0,7 % 2→1. - Oxirgi raqamni olish:
2026 % 10→6. - Vaqtni aylantirish: daqiqalarni soat va daqiqaga ajratish.
daqiqa = 135 soat = daqiqa // 60 qolgan = daqiqa % 60 print(daqiqa, "daqiqa =", soat, "soat", qolgan, "daqiqa")
135 daqiqa = 2 soat 15 daqiqa
Darajaga ko'tarish
** amali sonni darajaga ko'taradi: 2 ** 3 = 2 × 2 × 2 = 8. Ildiz chiqarish uchun esa kasr darajadan foydalanish mumkin: 16 ** 0.5 = 4.0.
print(2 ** 10) print(5 ** 2) print(16 ** 0.5) print(2 ** 64)
Oxirgi natijaga qarang: Python juda katta butun sonlar bilan ham bemalol ishlaydi.
Amallar tartibi
Python matematikadagi kabi amallar tartibiga rioya qiladi:
- Avval qavs ichidagilar.
- Keyin daraja
**. - Keyin ko'paytirish va bo'lish:
*,/,//,%. - Oxirida qo'shish va ayirish:
+,-.
Bir xil darajadagi amallar chapdan o'ngga bajariladi.
print(2 + 3 * 4) print((2 + 3) * 4) print(10 - 4 - 3) print(2 * 3 ** 2)
14 20 3 18
Tartibga ishonchingiz komil bo'lmasa — qavs qo'ying. Ortiqcha qavs xato emas, aksincha, kodni o'qishni osonlashtiradi: (narx * soni) + yetkazish.
Qisqartirilgan yozuv
O'zgaruvchi qiymatini o'zgartirish juda ko'p uchraydi, shuning uchun Python'da qisqa yozuv bor:
| Qisqa yozuv | To'liq yozuv |
|---|---|
x += 5 | x = x + 5 |
x -= 2 | x = x - 2 |
x *= 3 | x = x * 3 |
x /= 4 | x = x / 4 |
hisob = 100000
hisob += 50000 # maosh tushdi
hisob -= 30000 # xarid qilindi
hisob *= 2 # bonus: ikki baravar!
print("Hisobda:", hisob, "so'm")
Hisobda: 240000 so'm
Foydali funksiyalar
| Funksiya | Nima qiladi | Misol | Natija |
|---|---|---|---|
round(x) | Butun songacha yaxlitlaydi | round(4.7) | 5 |
round(x, n) | Verguldan keyin n xonagacha yaxlitlaydi | round(3.14159, 2) | 3.14 |
abs(x) | Sonning moduli (ishorasiz qiymati) | abs(-8) | 8 |
max(...) | Eng kattasi | max(3, 9, 4) | 9 |
min(...) | Eng kichigi | min(3, 9, 4) | 3 |
print(round(4.7)) print(round(3.14159, 2)) print(abs(-8)) print(max(3, 9, 4), min(3, 9, 4))
Kasr sonlardagi kichik g'alatilik
Bir narsaga oldindan tayyor bo'ling. Mana bu kodni ishga tushiring:
print(0.1 + 0.2)
0.30000000000000004
Bu Python xatosi emas. Kompyuter kasr sonlarni ikkilik tizimda saqlaydi va 0.1 kabi ba'zi sonlarni u yerda aniq yozib bo'lmaydi — xuddi o'nlik tizimda 1/3 ni aniq yozib bo'lmagani kabi (0.3333...). Bu deyarli barcha dasturlash tillarida shunday. Natijani chiroyli ko'rsatish uchun round() ishlating: round(0.1 + 0.2, 2) → 0.3.
Amaliy misol: harorat
Selsiy darajasini Farengeytga aylantirish formulasi: F = C × 9 / 5 + 32.
selsiy = 36.6 farengeyt = selsiy * 9 / 5 + 32 print(selsiy, "°C =", round(farengeyt, 1), "°F")
36.6 °C = 97.9 °F
Mashqlar
1-mashq O'rtacha baho
Talabaning uchta bahosi bor: 5, 4 va 4. O'rtacha bahoni hisoblab, verguldan keyin 2 xonagacha yaxlitlang va chiqaring. Natija 4.33 bo'lishi kerak.
a = 5 b = 4 c = 4
Ishora
Amallar tartibini unutmang: a + b + c / 3 — noto'g'ri, chunki avval faqat c bo'linadi. Yig'indini qavsga oling.
Yechimni ko'rish
a = 5 b = 4 c = 4 ortacha = (a + b + c) / 3 print(round(ortacha, 2))
2-mashq Soniyalarni ajrating
Kino 7385 soniya davom etadi. Buni soat, daqiqa va soniyaga ajrating va 2 soat 3 daqiqa 5 soniya ko'rinishida chiqaring.
jami = 7385
Ishora
Bir soatda 3600 soniya bor. jami // 3600 — soatlar. Qolgan soniyalar — jami % 3600. Ulardan esa xuddi shu usulda daqiqa (60 ga) va soniyani ajrating.
Yechimni ko'rish
jami = 7385 soat = jami // 3600 qoldiq = jami % 3600 daqiqa = qoldiq // 60 soniya = qoldiq % 60 print(soat, "soat", daqiqa, "daqiqa", soniya, "soniya")
3-mashq Raqamlar yig'indisi
Uch xonali son berilgan: 472. Faqat // va % amallaridan foydalanib, uning oxirgi raqamini va raqamlari yig'indisini toping.
Oxirgi raqam: 2 Raqamlar yig'indisi: 13
son = 472
Ishora
Birlar xonasi: son % 10. O'nlar xonasi: son // 10 % 10. Yuzlar xonasi: son // 100.
Yechimni ko'rish
son = 472
birlar = son % 10
onlar = son // 10 % 10
yuzlar = son // 100
print("Oxirgi raqam:", birlar)
print("Raqamlar yig'indisi:", birlar + onlar + yuzlar)
4-mashq Bank omonati
Bankka 1 000 000 so'm yillik 20 foiz bilan 3 yilga qo'yildi. Har yili foiz omonatning joriy summasiga qo'shiladi, ya'ni har yili summa 1.2 baravar oshadi. 3 yildan keyingi summani butun songacha yaxlitlab chiqaring.
omonat = 1000000
Ishora
Uch yil davomida summa uch marta 1.2 ga ko'paytiriladi: omonat * 1.2 * 1.2 * 1.2 yoki qisqaroq — omonat * 1.2 ** 3.
Yechimni ko'rish
omonat = 1000000 natija = omonat * 1.2 ** 3 print(round(natija))
O'zingizni sinang
7 // 2 nimaga teng?
3.5134
To'g'ri. // bo'linmaning faqat butun qismini qoldiradi.
17 % 5 nimaga teng?
233.412
To'g'ri. 17 = 5 × 3 + 2, ya'ni qoldiq 2.
10 / 5 natijasi qanday chiqadi?
20502.0
To'g'ri. Oddiy bo'lish / natijasi har doim kasr son (float).
2 + 3 * 2 nimaga teng?
108127
To'g'ri. Avval ko'paytirish: 3 × 2 = 6, keyin qo'shish: 2 + 6 = 8.
Son juft ekanini qanday tekshirish mumkin?
son / 2natijasi 1 ga teng bo'lsason ** 2natijasi musbat bo'lsason % 2natijasi 0 ga teng bo'lsason // 2natijasi 0 ga teng bo'lsa
To'g'ri. Juft son 2 ga qoldiqsiz bo'linadi. Bu usulni shartlar darsida ko'p ishlatamiz.
Xulosa
- Python'da yettita arifmetik amal bor:
+ - * / // % **. /doim kasr son beradi;//— butun bo'lish,%— qoldiq.- Qoldiq amali juft-toqlikni aniqlash, raqamlarni ajratish va vaqtni hisoblashda juda foydali.
- Amallar tartibi matematikadagidek; shubha bo'lsa — qavs qo'ying.
x += 5—x = x + 5ning qisqa yozuvi.round(),abs(),max(),min()— tayyor foydali funksiyalar.