Arifmetika operatorlari
Bu bobda
- yettita arifmetik operatorni:
+ - * / // % ** //va%qayerda kerakligini (soat, raqamlar, juft-toq)- amallar tartibini va qavslarni
- kasr sonlardagi kichik "xatolar" sababini
+=,-=kabi qisqa yozuvlarni
Yettita operator
a = 17 b = 5 print("a + b =", a + b) print("a - b =", a - b) print("a * b =", a * b) print("a / b =", a / b) print("a // b =", a // b) print("a % b =", a % b) print("a ** b =", a ** b)
a + b = 22 a - b = 12 a * b = 85 a / b = 3.4 a // b = 3 a % b = 2 a ** b = 1419857
| Operator | Nomi | 17 va 5 |
|---|---|---|
+ |
qo'shish | 22 |
- |
ayirish | 12 |
* |
ko'paytirish | 85 |
/ |
bo'lish (har doim float) |
3.4 |
// |
butun bo'lish (integer division) | 3 |
% |
qoldiq (modulo) | 2 |
** |
darajaga ko'tarish | 1419857 |
Kitobdagi jadvalga e'tibor bering
"Python asoslari" kitobining 12-betidagi jadvalda ** operatori yo'q, lekin pastdagi misolda print(x ** y) ishlatilgan va 1000 chiqqan. Jadvalga ** — darajaga ko'tarish qatorini o'zingiz qo'shib qo'ying.
// va %: butun bo'lish va qoldiq
Maktabda "17 ni 5 ga bo'lsak, 3 marta sig'adi, 2 qoladi" deb o'rganganmiz. // — necha marta sig'adi, % — qancha qoladi:
print(17 // 5) print(17 % 5) print(5 * (17 // 5) + 17 % 5)
3 2 17
Oxirgi qator tekshiruv: 5 · 3 + 2 = 17. Bu har doim to'g'ri: b * (a // b) + a % b == a.
Ikkalasini birdan olish uchun divmod() bor:
butun, qoldiq = divmod(17, 5) print(butun, qoldiq)
3 2
Hayotda qayerda kerak?
Daqiqani soat va daqiqaga ajratish. Kino 135 daqiqa davom etadi:
daqiqa = 135 print(daqiqa // 60, "soat", daqiqa % 60, "daqiqa")
2 soat 15 daqiqa
Sonning oxirgi raqami — 10 ga bo'lgandagi qoldiq. Oxirgi raqamsiz son — 10 ga butun bo'lish:
son = 2026 print("Oxirgi raqam:", son % 10) print("Qolgani:", son // 10)
Oxirgi raqam: 6 Qolgani: 202
Juft yoki toq? Juft sonni 2 ga bo'lsak, qoldiq 0. Toq sonda 1:
print(14 % 2, 15 % 2)
0 1
Raqamlarni ajratish usuli bilan uch xonali sonning hamma raqamlarini olish mumkin:
son = 487 yuzlar = son // 100 onlar = son // 10 % 10 birlar = son % 10 print(yuzlar, onlar, birlar) print("Yig'indi:", yuzlar + onlar + birlar)
4 8 7 Yig'indi: 19
son // 10 % 10 ni chapdan o'ngga o'qing: 487 // 10 = 48, keyin 48 % 10 = 8.
Manfiy sonlar bilan // va %
print(7 // 2, -7 // 2) print(7 % 2, -7 % 2)
3 -4 1 1
-7 // 2 -3 emas, -4. Sababi: // natijani doim pastga (kichik tomonga) yaxlitlaydi. -3.5 dan pastdagi butun son — -4. Qoldiq esa tekshiruv qoidasiga mos keladi: 2 · (-4) + 1 = -7. Bu int() dan farq qiladi: int(-3.5) = -3, chunki int() faqat kasrni tashlaydi.
** : darajaga ko'tarish
print(2 ** 10) print(5 ** 2, 5 ** 3) print(9 ** 0.5) print(2 ** -1)
1024 25 125 3.0 0.5
0.5 daraja — kvadrat ildiz, manfiy daraja — teskari son: 2 ** -1 = 1 / 2.
0 ** 0 nimaga teng?
print(0 ** 0)
1
Matematikada 0⁰ haqida bahs bor, lekin Python (va deyarli barcha dasturlash tillari) 1 qaytaradi. Darsda "ma'noga ega emas" deyish mumkin, lekin dastur xato bermaydi, 1 chiqaradi.
pow() funksiyasi ham xuddi ** kabi ishlaydi:
print(pow(5, 2), 5 ** 2) print(pow(5, 3))
25 25 125
Kitobdagi xatoga e'tibor bering
"Python asoslari" kitobining 84-betida pow(5, 3) natijasi 25 deb ko'rsatilgan. To'g'risi — yuqoridagi kabi 125 (5 · 5 · 5). 25 — bu pow(5, 2).
Amallar tartibi
Python matematikadagi tartibga amal qiladi:
| Tartib | Operator |
|---|---|
| 1 | ( ) qavslar |
| 2 | ** |
| 3 | -x (manfiy ishora) |
| 4 | * / // % (chapdan o'ngga) |
| 5 | + - (chapdan o'ngga) |
print(2 + 3 * 4) print((2 + 3) * 4) print(10 - 4 - 3) print(100 / 10 / 2)
14 20 3 5.0
Ikkita kutilmagan holat:
print(-2 ** 2) print((-2) ** 2) print(2 ** 3 ** 2) print((2 ** 3) ** 2)
-4 4 512 64
-2 ** 2= -4, chunki**manfiy ishoradan oldin bajariladi:-(2 ** 2).2 ** 3 ** 2= 512, chunki**o'ngdan chapga bajariladi:2 ** (3 ** 2)=2 ** 9.
Maslahat
Ishonchingiz komil bo'lmasa, qavs qo'ying. Ortiqcha qavs xato emas, kodni o'qishni osonlashtiradi.
Formulani kodga o'girishda eng ko'p uchraydigan xato — maxrajni qavsga olmaslik:
a, b = 6, 2 print(a + b / 2) print((a + b) / 2)
7.0 4.0
Birinchisi 6 + 1 = 7, ikkinchisi o'rta arifmetik 4. (a + b) / 2 formulasida qavs majburiy.
Kasr sonlar: nega 0.1 + 0.2 ≠ 0.3?
print(0.1 + 0.2) print(0.1 + 0.2 == 0.3)
0.30000000000000004 False
Bu Pythonning xatosi emas. Kompyuter sonlarni ikkilik (0 va 1) tizimda saqlaydi. 1/3 ni o'nli kasrda aniq yozib bo'lmaganidek (0.3333...), 0.1 ni ikkilik tizimda aniq yozib bo'lmaydi. Juda kichik farq qoladi. Bu C, Java, JavaScript — hamma tilda bir xil.
Kasrlarni solishtirishda == o'rniga farqning kichikligini tekshiring:
x = 0.1 + 0.2 print(abs(x - 0.3) < 1e-9) print(round(x, 10) == 0.3)
True True
1e-9 — "1 · 10⁻⁹", ya'ni 0.000000001. abs() — sonning moduli (absolyut qiymati): abs(-5) = 5.
Pul bilan ishlaganda
Pulni kasr so'mda emas, butun tiyin yoki butun so'mda saqlang. Shunda yaxlitlash xatosi to'planmaydi.
Nolga bo'lish
print(10 / 0)
ZeroDivisionError: division by zero
// va % ham nolga bo'lishda xuddi shu xatoni beradi. Foydalanuvchi 0 kiritishi mumkin bo'lgan joyda buni oldindan tekshirish kerak: buni 6-bobda if bilan, 20-bobda try bilan qilamiz.
Qisqa yozuvlar: += va boshqalar
x = x + 5 ni qisqaroq yozish mumkin: x += 5. Har bir operatorning shunday shakli bor:
x = 10 x += 5 print(x) x -= 3 print(x) x *= 2 print(x) x //= 5 print(x) x **= 2 print(x) x %= 7 print(x)
15 12 24 4 16 2
| Qisqa | To'liq |
|---|---|
x += 3 |
x = x + 3 |
x -= 3 |
x = x - 3 |
x *= 3 |
x = x * 3 |
x /= 3 |
x = x / 3 |
x //= 3 |
x = x // 3 |
x %= 3 |
x = x % 3 |
x **= 3 |
x = x ** 3 |
Kitobdagi xatoga e'tibor bering
"Python asoslari" kitobining 13-betida x **= 5 ning to'liq shakli x = x ** 3 deb yozilgan. To'g'risi x = x ** 5.
Formulani kodga o'girish
Mashqlarda formulalar ko'p. Uch qadam:
- Har bir harfni o'zgaruvchi qiling:
a,b,r. - Yashirin ko'paytirishni yozing: matematikadagi
2πr→2 * pi * r. Python2rni tushunmaydi. - Kasr chizig'ini qavsga oling:
(a + b) / 2.
Masalan, Farengeytdan Selsiyga: T_C = (T_F - 32) · 5 / 9
tf = float(input("Farengeyt: ")) tc = (tf - 32) * 5 / 9 print(f"Selsiy: {tc:.1f}")
Farengeyt: 98.6 Selsiy: 37.0
Kitoblarda
- Python asoslari: arifmetik va o'zlashtirish operatorlari 12–13-betlar; amallar tartibi (prioritet jadvali) 83–84-betlar.
- Python Crash Course: 2-bob, Integers va Floats 26–27-betlar; mashq 2-8 Number Eight 29-bet.
Xulosa
/— oddiy bo'lish (float),//— necha marta sig'adi,%— qoldiq.n % 10— oxirgi raqam,n // 10— oxirgi raqamsiz son,n % 2— juft/toq.**birinchi bajariladi va o'ngdan chapga:-2 ** 2= -4,2 ** 3 ** 2= 512.- Manfiy sonda
//pastga yaxlitlaydi:-7 // 2= -4. - Kasrlarni
==bilan solishtirmang, farqni tekshiring. x += 1—x = x + 1ning qisqasi.
Mashqlar
Qiymatlarni float(input()) bilan oling (agar butun son deyilgan bo'lsa — int(input())). Bir nechta javobni bitta print() da, berilgan tartibda chiqaring.
Python Crash Course, 2-8 mashq: natijasi 8 bo'ladigan to'rtta amal yozing — qo'shish, ayirish, ko'paytirish va bo'lish. Har birini alohida print() bilan chiqaring.
| Kirish | Kutilgan natija |
|---|---|
| — | 8 8 8 8.0 |
Yechimni ko'rish
print(5 + 3) print(10 - 2) print(2 * 4) print(16 / 2)
Aylananing diametri d berilgan. Uning uzunligini toping: L = π·d. π = 3.14 deb oling.
| Kirish | Kutilgan natija |
|---|---|
| 10 | 31.4 |
| 1 | 3.14 |
| 2.5 | 7.85 |
Yechimni ko'rish
d = float(input()) print(3.14 * d)
Aylananing radiusi R berilgan. Avval uzunligini, keyin doira yuzini chiqaring: L = 2·π·R, S = π·R². π = 3.14 deb oling.
| Kirish | Kutilgan natija |
|---|---|
| 1 | 6.28 3.14 |
| 10 | 62.8 314 |
| 0.5 | 3.14 0.785 |
Yechimni ko'rish
r = float(input()) print(2 * 3.14 * r, 3.14 * r ** 2)
Nolga teng bo'lmagan ikkita son a va b berilgan. Ularning yig'indisi, ko'paytmasi, a ning kvadrati va b ning kvadratini shu tartibda chiqaring.
| Kirish | Kutilgan natija |
|---|---|
| 2, 3 | 5 6 4 9 |
| -1, 4 | 3 -4 1 16 |
| 0.5, 2 | 2.5 1 0.25 4 |
Yechimni ko'rish
a = float(input()) b = float(input()) print(a + b, a * b, a ** 2, b ** 2)
Nolga teng bo'lmagan ikkita son a va b berilgan. Ularning yig'indisi, ko'paytmasi, a ning moduli va b ning modulini chiqaring. Modul: abs().
| Kirish | Kutilgan natija |
|---|---|
| 2, 3 | 5 6 2 3 |
| -1, 4 | 3 -4 1 4 |
| -2.5, -2 | -4.5 5 2.5 2 |
Yechimni ko'rish
a = float(input()) b = float(input()) print(a + b, a * b, abs(a), abs(b))
Son o'qida ikkita nuqta x₁ va x₂ berilgan. Ular orasidagi masofani toping: |x₂ − x₁|.
| Kirish | Kutilgan natija |
|---|---|
| 2, 7 | 5 |
| 7, 2 | 5 |
| -3, 4 | 7 |
Yechimni ko'rish
x1 = float(input()) x2 = float(input()) print(abs(x2 - x1))
Son o'qida A, B, C nuqtalar berilgan. AC va BC kesmalarning uzunligini va ularning yig'indisini chiqaring.
| Kirish | Kutilgan natija |
|---|---|
| 1, 5, 3 | 2 2 4 |
| 0, 10, 4 | 4 6 10 |
| -2, 6, 1 | 3 5 8 |
Yechimni ko'rish
a = float(input()) b = float(input()) c = float(input()) ac = abs(a - c) bc = abs(b - c) print(ac, bc, ac + bc)
Son o'qida A, B, C nuqtalar berilgan; C nuqta A va B orasida. AC va BC kesmalar uzunliklarining ko'paytmasini toping.
| Kirish | Kutilgan natija |
|---|---|
| 1, 5, 3 | 4 |
| 0, 10, 4 | 24 |
| -2, 6, 1 | 15 |
Yechimni ko'rish
a = float(input()) b = float(input()) c = float(input()) print(abs(a - c) * abs(b - c))
To'g'ri to'rtburchakning qarama-qarshi uchlari (x₁, y₁) va (x₂, y₂) berilgan, tomonlari koordinata o'qlariga parallel. Kiritish tartibi: x₁, y₁, x₂, y₂. Avval perimetrini, keyin yuzini chiqaring.
| Kirish | Kutilgan natija |
|---|---|
| 0, 0, 3, 4 | 14 12 |
| 1, 5, 4, 1 | 14 12 |
| -2, -1, 2, 1 | 12 8 |
Yechimni ko'rish
x1 = float(input()) y1 = float(input()) x2 = float(input()) y2 = float(input()) a = abs(x2 - x1) b = abs(y2 - y1) print(2 * (a + b), a * b)
x berilgan. Funksiyaning qiymatini toping: y = 3x⁶ − 6x² − 7.
| Kirish | Kutilgan natija |
|---|---|
| 1 | -10 |
| 0 | -7 |
| 2 | 161 |
Yechimni ko'rish
x = float(input()) print(3 * x ** 6 - 6 * x ** 2 - 7)
x berilgan. Funksiyaning qiymatini toping: y = 4(x−3)⁶ − 7(x−3)³ + 2.
| Kirish | Kutilgan natija |
|---|---|
| 3 | 2 |
| 4 | -1 |
| 2 | 13 |
Yechimni ko'rish
x = float(input()) print(4 * (x - 3) ** 6 - 7 * (x - 3) ** 3 + 2)
A soni berilgan. Faqat ko'paytirishdan foydalanib A², A⁴, A⁸ ni toping. Maslahat: A⁴ = A² · A². Uchta ko'paytirish yetadi.
| Kirish | Kutilgan natija |
|---|---|
| 2 | 4 16 256 |
| 3 | 9 81 6561 |
| -1 | 1 1 1 |
Yechimni ko'rish
a = float(input()) a2 = a * a a4 = a2 * a2 a8 = a4 * a4 print(a2, a4, a8)
A soni berilgan. Faqat ko'paytirishdan foydalanib A², A³, A⁵, A¹⁰, A¹⁵ ni toping. Oltita ko'paytirish yetadi.
| Kirish | Kutilgan natija |
|---|---|
| 2 | 4 8 32 1024 32768 |
| 1 | 1 1 1 1 1 |
| -1 | 1 -1 -1 1 -1 |
Yechimni ko'rish
a = float(input()) a2 = a * a a3 = a2 * a a5 = a3 * a2 a10 = a5 * a5 a15 = a10 * a5 print(a2, a3, a5, a10, a15)
α burchak gradusda berilgan (0 < α < 360). Uni radianga o'tkazing: α · π / 180. π = 3.14 deb oling.
| Kirish | Kutilgan natija |
|---|---|
| 180 | 3.14 |
| 90 | 1.57 |
| 45 | 0.785 |
Yechimni ko'rish
alfa = float(input()) print(alfa * 3.14 / 180)
α burchak radianda berilgan (0 < α < 2π). Uni gradusga o'tkazing: α · 180 / π. π = 3.14 deb oling.
| Kirish | Kutilgan natija |
|---|---|
| 3.14 | 180 |
| 1.57 | 90 |
| 0.785 | 45 |
Yechimni ko'rish
alfa = float(input()) print(alfa * 180 / 3.14)
Temperatura Farengeytda (T_F) berilgan. Uni Selsiyga o'tkazing: T_C = (T_F − 32) · 5 / 9.
| Kirish | Kutilgan natija |
|---|---|
| 212 | 100 |
| 32 | 0 |
| -40 | -40 |
Yechimni ko'rish
tf = float(input()) print((tf - 32) * 5 / 9)
Temperatura Selsiyda (T_C) berilgan. Uni Farengeytga o'tkazing: T_F = T_C · 9 / 5 + 32.
| Kirish | Kutilgan natija |
|---|---|
| 100 | 212 |
| 0 | 32 |
| 37 | 98.6 |
Yechimni ko'rish
tc = float(input()) print(tc * 9 / 5 + 32)
X kg konfet A so'm turadi. Avval 1 kg konfet narxini, keyin Y kg konfet narxini chiqaring. Kiritish tartibi: X, A, Y.
| Kirish | Kutilgan natija |
|---|---|
| 2, 50000, 3 | 25000 75000 |
| 0.5, 20000, 2 | 40000 80000 |
| 4, 100000, 1 | 25000 25000 |
Yechimni ko'rish
x = float(input()) a = float(input()) y = float(input()) bir_kg = a / x print(bir_kg, bir_kg * y)
X kg shokolad A so'm, Y kg konfet B so'm turadi. 1 kg shokolad narxini, 1 kg konfet narxini va shokolad konfetdan necha marta qimmatligini chiqaring. Kiritish tartibi: X, A, Y, B.
| Kirish | Kutilgan natija |
|---|---|
| 2, 200000, 4, 100000 | 100000 25000 4 |
| 1, 90000, 3, 90000 | 90000 30000 3 |
| 0.5, 60000, 2, 120000 | 120000 60000 2 |
Yechimni ko'rish
x = float(input()) a = float(input()) y = float(input()) b = float(input()) shokolad = a / x konfet = b / y print(shokolad, konfet, shokolad / konfet)
Qayiqning turg'un suvdagi tezligi V km/soat, daryo oqimining tezligi U km/soat (V > U). Qayiq oqim bo'ylab T₁ soat, oqimga qarshi T₂ soat suzdi. U jami necha km yo'l bosganini toping: oqim bo'ylab tezlik V + U, oqimga qarshi V − U. Kiritish tartibi: V, U, T₁, T₂.
| Kirish | Kutilgan natija |
|---|---|
| 10, 2, 1, 2 | 28 |
| 20, 5, 2, 1 | 65 |
| 8, 3, 0.5, 1 | 10.5 |
Yechimni ko'rish
v = float(input()) u = float(input()) t1 = float(input()) t2 = float(input()) print((v + u) * t1 + (v - u) * t2)
Ikki avtomobilning tezligi V₁ va V₂ km/soat, ular orasidagi masofa S km. Ular bir-biridan uzoqlasha boshlasa, T soatdan keyin orasidagi masofa qancha bo'ladi? Kiritish tartibi: V₁, V₂, S, T.
| Kirish | Kutilgan natija |
|---|---|
| 60, 80, 10, 2 | 290 |
| 50, 50, 0, 1 | 100 |
| 70, 90, 25, 0.5 | 105 |
Yechimni ko'rish
v1 = float(input()) v2 = float(input()) s = float(input()) t = float(input()) print(s + (v1 + v2) * t)
Ikki avtomobilning tezligi V₁ va V₂ km/soat, ular orasidagi masofa S km. Ular bir-biriga qarab harakatlansa, T soatdan keyin orasidagi masofa qancha bo'ladi? Uchrashib, keyin uzoqlashishi ham mumkin, shuning uchun modul oling: |S − (V₁ + V₂)·T|. Kiritish tartibi: V₁, V₂, S, T.
| Kirish | Kutilgan natija |
|---|---|
| 60, 80, 300, 1 | 160 |
| 60, 80, 300, 3 | 120 |
| 50, 50, 100, 1 | 0 |
Yechimni ko'rish
v1 = float(input()) v2 = float(input()) s = float(input()) t = float(input()) print(abs(s - (v1 + v2) * t))
Uch xonali butun son berilgan. Uning raqamlari yig'indisini toping.
| Kirish | Kutilgan natija |
|---|---|
| 487 | 19 |
| 100 | 1 |
| 999 | 27 |
Yechimni ko'rish
n = int(input()) print(n // 100 + n // 10 % 10 + n % 10)
Sekundlar soni berilgan (butun son). Uni soat, daqiqa va sekundga ajrating va shu tartibda chiqaring.
| Kirish | Kutilgan natija |
|---|---|
| 3725 | 1 2 5 |
| 59 | 0 0 59 |
| 86399 | 23 59 59 |
Yechimni ko'rish
s = int(input()) print(s // 3600, s % 3600 // 60, s % 60)
Bu bobni bepul o'qidingiz.
Kitob o'rgatadi, lekin sizning kodingiz nega ishlamaganini ayta olmaydi. Kursda uy vazifangiz tekshiriladi.