Asosiy qismga o'tish

Arifmetika operatorlari

3-bob 43 kod bloki 3355 so'z

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

python9 qator
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)
Natija
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:

python3 qator
print(17 // 5)
print(17 % 5)
print(5 * (17 // 5) + 17 % 5)
Natija
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:

python2 qator
butun, qoldiq = divmod(17, 5)
print(butun, qoldiq)
Natija
3 2

Hayotda qayerda kerak?

Daqiqani soat va daqiqaga ajratish. Kino 135 daqiqa davom etadi:

python2 qator
daqiqa = 135
print(daqiqa // 60, "soat", daqiqa % 60, "daqiqa")
Natija
2 soat 15 daqiqa

Sonning oxirgi raqami — 10 ga bo'lgandagi qoldiq. Oxirgi raqamsiz son — 10 ga butun bo'lish:

python3 qator
son = 2026
print("Oxirgi raqam:", son % 10)
print("Qolgani:", son // 10)
Natija
Oxirgi raqam: 6
Qolgani: 202

Juft yoki toq? Juft sonni 2 ga bo'lsak, qoldiq 0. Toq sonda 1:

python1 qator
print(14 % 2, 15 % 2)
Natija
0 1

Raqamlarni ajratish usuli bilan uch xonali sonning hamma raqamlarini olish mumkin:

python6 qator
son = 487
yuzlar = son // 100
onlar = son // 10 % 10
birlar = son % 10
print(yuzlar, onlar, birlar)
print("Yig'indi:", yuzlar + onlar + birlar)
Natija
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 %

python2 qator
print(7 // 2, -7 // 2)
print(7 % 2, -7 % 2)
Natija
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

python4 qator
print(2 ** 10)
print(5 ** 2, 5 ** 3)
print(9 ** 0.5)
print(2 ** -1)
Natija
1024
25 125
3.0
0.5

0.5 daraja — kvadrat ildiz, manfiy daraja — teskari son: 2 ** -1 = 1 / 2.

0 ** 0 nimaga teng?

python1 qator
print(0 ** 0)
Natija
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:

python2 qator
print(pow(5, 2), 5 ** 2)
print(pow(5, 3))
Natija
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)
python4 qator
print(2 + 3 * 4)
print((2 + 3) * 4)
print(10 - 4 - 3)
print(100 / 10 / 2)
Natija
14
20
3
5.0

Ikkita kutilmagan holat:

python4 qator
print(-2 ** 2)
print((-2) ** 2)
print(2 ** 3 ** 2)
print((2 ** 3) ** 2)
Natija
-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:

python3 qator
a, b = 6, 2
print(a + b / 2)
print((a + b) / 2)
Natija
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?

python2 qator
print(0.1 + 0.2)
print(0.1 + 0.2 == 0.3)
Natija
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:

python3 qator
x = 0.1 + 0.2
print(abs(x - 0.3) < 1e-9)
print(round(x, 10) == 0.3)
Natija
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

python1 qator
print(10 / 0)
Xato xabari
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:

python13 qator
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)
Natija
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:

  1. Har bir harfni o'zgaruvchi qiling: a, b, r.
  2. Yashirin ko'paytirishni yozing: matematikadagi 2πr → 2 * pi * r. Python 2r ni tushunmaydi.
  3. Kasr chizig'ini qavsga oling: (a + b) / 2.

Masalan, Farengeytdan Selsiyga: T_C = (T_F - 32) · 5 / 9

python3 qator
tf = float(input("Farengeyt: "))
tc = (tf - 32) * 5 / 9
print(f"Selsiy: {tc:.1f}")
Natija
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 + 1 ning qisqasi.

Mashqlar

Qiymatlarni float(input()) bilan oling (agar butun son deyilgan bo'lsa — int(input())). Bir nechta javobni bitta print() da, berilgan tartibda chiqaring.

3.1

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.

KirishKutilgan natija
—8 8 8 8.0
Yechimni ko'rish
python4 qator
print(5 + 3)
print(10 - 2)
print(2 * 4)
print(16 / 2)
Begin4

Aylananing diametri d berilgan. Uning uzunligini toping: L = π·d. π = 3.14 deb oling.

KirishKutilgan natija
1031.4
13.14
2.57.85
Yechimni ko'rish
python2 qator
d = float(input())
print(3.14 * d)
Begin7

Aylananing radiusi R berilgan. Avval uzunligini, keyin doira yuzini chiqaring: L = 2·π·R, S = π·R². π = 3.14 deb oling.

KirishKutilgan natija
16.28 3.14
1062.8 314
0.53.14 0.785
Yechimni ko'rish
python2 qator
r = float(input())
print(2 * 3.14 * r, 3.14 * r ** 2)
Begin10

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.

KirishKutilgan natija
2, 35 6 4 9
-1, 43 -4 1 16
0.5, 22.5 1 0.25 4
Yechimni ko'rish
python3 qator
a = float(input())
b = float(input())
print(a + b, a * b, a ** 2, b ** 2)
Begin11

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().

KirishKutilgan natija
2, 35 6 2 3
-1, 43 -4 1 4
-2.5, -2-4.5 5 2.5 2
Yechimni ko'rish
python3 qator
a = float(input())
b = float(input())
print(a + b, a * b, abs(a), abs(b))
Begin16

Son o'qida ikkita nuqta x₁ va x₂ berilgan. Ular orasidagi masofani toping: |x₂ − x₁|.

KirishKutilgan natija
2, 75
7, 25
-3, 47
Yechimni ko'rish
python3 qator
x1 = float(input())
x2 = float(input())
print(abs(x2 - x1))
Begin17

Son o'qida A, B, C nuqtalar berilgan. AC va BC kesmalarning uzunligini va ularning yig'indisini chiqaring.

KirishKutilgan natija
1, 5, 32 2 4
0, 10, 44 6 10
-2, 6, 13 5 8
Yechimni ko'rish
python6 qator
a = float(input())
b = float(input())
c = float(input())
ac = abs(a - c)
bc = abs(b - c)
print(ac, bc, ac + bc)
Begin18

Son o'qida A, B, C nuqtalar berilgan; C nuqta A va B orasida. AC va BC kesmalar uzunliklarining ko'paytmasini toping.

KirishKutilgan natija
1, 5, 34
0, 10, 424
-2, 6, 115
Yechimni ko'rish
python4 qator
a = float(input())
b = float(input())
c = float(input())
print(abs(a - c) * abs(b - c))
Begin19

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.

KirishKutilgan natija
0, 0, 3, 414 12
1, 5, 4, 114 12
-2, -1, 2, 112 8
Yechimni ko'rish
python7 qator
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)
Begin25

x berilgan. Funksiyaning qiymatini toping: y = 3x⁶ − 6x² − 7.

KirishKutilgan natija
1-10
0-7
2161
Yechimni ko'rish
python2 qator
x = float(input())
print(3 * x ** 6 - 6 * x ** 2 - 7)
Begin26

x berilgan. Funksiyaning qiymatini toping: y = 4(x−3)⁶ − 7(x−3)³ + 2.

KirishKutilgan natija
32
4-1
213
Yechimni ko'rish
python2 qator
x = float(input())
print(4 * (x - 3) ** 6 - 7 * (x - 3) ** 3 + 2)
Begin27

A soni berilgan. Faqat ko'paytirishdan foydalanib A², A⁴, A⁸ ni toping. Maslahat: A⁴ = A² · A². Uchta ko'paytirish yetadi.

KirishKutilgan natija
24 16 256
39 81 6561
-11 1 1
Yechimni ko'rish
python5 qator
a = float(input())
a2 = a * a
a4 = a2 * a2
a8 = a4 * a4
print(a2, a4, a8)
Begin28

A soni berilgan. Faqat ko'paytirishdan foydalanib A², A³, A⁵, A¹⁰, A¹⁵ ni toping. Oltita ko'paytirish yetadi.

KirishKutilgan natija
24 8 32 1024 32768
11 1 1 1 1
-11 -1 -1 1 -1
Yechimni ko'rish
python7 qator
a = float(input())
a2 = a * a
a3 = a2 * a
a5 = a3 * a2
a10 = a5 * a5
a15 = a10 * a5
print(a2, a3, a5, a10, a15)
Begin29

α burchak gradusda berilgan (0 < α < 360). Uni radianga o'tkazing: α · π / 180. π = 3.14 deb oling.

KirishKutilgan natija
1803.14
901.57
450.785
Yechimni ko'rish
python2 qator
alfa = float(input())
print(alfa * 3.14 / 180)
Begin30

α burchak radianda berilgan (0 < α < 2π). Uni gradusga o'tkazing: α · 180 / π. π = 3.14 deb oling.

KirishKutilgan natija
3.14180
1.5790
0.78545
Yechimni ko'rish
python2 qator
alfa = float(input())
print(alfa * 180 / 3.14)
Begin31

Temperatura Farengeytda (T_F) berilgan. Uni Selsiyga o'tkazing: T_C = (T_F − 32) · 5 / 9.

KirishKutilgan natija
212100
320
-40-40
Yechimni ko'rish
python2 qator
tf = float(input())
print((tf - 32) * 5 / 9)
Begin32

Temperatura Selsiyda (T_C) berilgan. Uni Farengeytga o'tkazing: T_F = T_C · 9 / 5 + 32.

KirishKutilgan natija
100212
032
3798.6
Yechimni ko'rish
python2 qator
tc = float(input())
print(tc * 9 / 5 + 32)
Begin33

X kg konfet A so'm turadi. Avval 1 kg konfet narxini, keyin Y kg konfet narxini chiqaring. Kiritish tartibi: X, A, Y.

KirishKutilgan natija
2, 50000, 325000 75000
0.5, 20000, 240000 80000
4, 100000, 125000 25000
Yechimni ko'rish
python5 qator
x = float(input())
a = float(input())
y = float(input())
bir_kg = a / x
print(bir_kg, bir_kg * y)
Begin34

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.

KirishKutilgan natija
2, 200000, 4, 100000100000 25000 4
1, 90000, 3, 9000090000 30000 3
0.5, 60000, 2, 120000120000 60000 2
Yechimni ko'rish
python7 qator
x = float(input())
a = float(input())
y = float(input())
b = float(input())
shokolad = a / x
konfet = b / y
print(shokolad, konfet, shokolad / konfet)
Begin35

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

KirishKutilgan natija
10, 2, 1, 228
20, 5, 2, 165
8, 3, 0.5, 110.5
Yechimni ko'rish
python5 qator
v = float(input())
u = float(input())
t1 = float(input())
t2 = float(input())
print((v + u) * t1 + (v - u) * t2)
Begin36

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.

KirishKutilgan natija
60, 80, 10, 2290
50, 50, 0, 1100
70, 90, 25, 0.5105
Yechimni ko'rish
python5 qator
v1 = float(input())
v2 = float(input())
s = float(input())
t = float(input())
print(s + (v1 + v2) * t)
Begin37

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.

KirishKutilgan natija
60, 80, 300, 1160
60, 80, 300, 3120
50, 50, 100, 10
Yechimni ko'rish
python5 qator
v1 = float(input())
v2 = float(input())
s = float(input())
t = float(input())
print(abs(s - (v1 + v2) * t))
3.2

Uch xonali butun son berilgan. Uning raqamlari yig'indisini toping.

KirishKutilgan natija
48719
1001
99927
Yechimni ko'rish
python2 qator
n = int(input())
print(n // 100 + n // 10 % 10 + n % 10)
3.3

Sekundlar soni berilgan (butun son). Uni soat, daqiqa va sekundga ajrating va shu tartibda chiqaring.

KirishKutilgan natija
37251 2 5
590 0 59
8639923 59 59
Yechimni ko'rish
python2 qator
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.

Telegramda yozish Narxlar