5-bo‘lim

Operatorlar

Arifmetik, taqqoslash, mantiqiy, o'zlashtirish va a'zolik operatorlari hamda ularning bajarilish tartibi.

🕑 13 daqiqa o‘qish 📄 217 so‘z 👁 8 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Arifmetik operatorlar
  2. % operatorining amaliy foydasi
  3. Taqqoslash operatorlari
  4. Zanjirli taqqoslash
  5. Mantiqiy operatorlar
  6. O'zlashtirish operatorlari
  7. A'zolik operatorlari: in va not in
  8. Identiklik operatorlari: is va is not
  9. Bit operatorlari
  10. Amallarning bajarilish tartibi
  11. Amaliy misol: kredit kalkulyatori
  12. Xulosa

Operator - bu qiymatlar ustida amal bajaradigan belgi. 2 + 3 ifodasida + operator, 2 va 3 esa operandlar deb ataladi.

Arifmetik operatorlar #

OperatorNomiMisolNatija
+Qo'shish7 + 310
-Ayirish7 - 34
*Ko'paytirish7 * 321
/Bo'lish7 / 32.333...
//Butun bo'lish7 // 32
%Qoldiq7 % 31
**Daraja7 ** 3343
Python
birinchi = 17
ikkinchi = 5

print("Yig'indi:      ", birinchi + ikkinchi)
print("Ayirma:        ", birinchi - ikkinchi)
print("Ko'paytma:     ", birinchi * ikkinchi)
print("Bo'linma:      ", birinchi / ikkinchi)
print("Butun bo'linma:", birinchi // ikkinchi)
print("Qoldiq:        ", birinchi % ikkinchi)
print("Daraja:        ", birinchi ** 2)
Natija
Yig'indi:       22
Ayirma:         12
Ko'paytma:      85
Bo'linma:       3.4
Butun bo'linma: 3
Qoldiq:         2
Daraja:         289
/ har doim float qaytaradi
Python
print(10 / 2)      # 5.0  -- int emas!
print(10 // 2)     # 5    -- butun bo'lish
print(type(10 / 2))
Natija
5.0
5
<class 'float'>

% operatorining amaliy foydasi #

Qoldiq operatori juft/toq tekshirish va davriy vazifalar uchun ajralmas:

Python
son = 47

if son % 2 == 0:
    print(f"{son} - juft son")
else:
    print(f"{son} - toq son")

# Soatni 12 soatlik formatga o'tkazish
soat_24 = 17
print(f"24 soatlik: {soat_24} -> 12 soatlik: {soat_24 % 12}")

# Har 3-elementni ajratish
for raqam in range(1, 11):
    if raqam % 3 == 0:
        print(f"{raqam} - uchga bo'linadi")
Natija
47 - toq son
24 soatlik: 17 -> 12 soatlik: 5
3 - uchga bo'linadi
6 - uchga bo'linadi
9 - uchga bo'linadi
Manfiy sonlarda // va %
Python
print(-7 // 2)     # -4, chunki pastga yaxlitlanadi
print(-7 % 2)      #  1, natija har doim musbat (bo'luvchi musbat bo'lsa)

Bu C yoki Java'dan farq qiladi - e'tiborli bo'ling.

Taqqoslash operatorlari #

Har doim True yoki False qaytaradi.

OperatorMa'nosiMisolNatija
==Teng5 == 5True
!=Teng emas5 != 3True
>Katta5 > 3True
<Kichik5 < 3False
>=Katta yoki teng5 >= 5True
<=Kichik yoki teng3 <= 5True
Python
baho = 4

print(baho == 5)
print(baho != 5)
print(baho >= 3)

# Matnlar alifbo tartibida solishtiriladi
print("olma" < "uzum")
print("Olma" == "olma")     # registr muhim!
Natija
False
True
True
True
False
= va == ni chalkashtirmang

= - qiymat berish, == - taqqoslash.

Python
yosh = 18       # qiymat beriladi
yosh == 18      # taqqoslanadi, natija True

Zanjirli taqqoslash #

Python'da matematikaga o'xshash yozuv mumkin:

Python
harorat = 25

# Boshqa tillarda: harorat > 20 && harorat < 30
if 20 < harorat < 30:
    print("Ob-havo yoqimli")
Natija
Ob-havo yoqimli

Mantiqiy operatorlar #

OperatorMa'nosiTrue bo'ladi agar
andVAikkalasi ham rost
orYOKIkamida bittasi rost
notEMASqiymat yolg'on
and (VA) or (YOKI) not (EMAS) True and True True True and False False False and True False False and False False True or True True True or False True False or True True False or False False not True False not False True
Mantiqiy operatorlarning rostlik jadvali
Python
yosh = 25
haydovchilik_guvohnomasi = True
jarima_bor = False

if yosh >= 18 and haydovchilik_guvohnomasi:
    print("Mashina ijaraga olishingiz mumkin")

if jarima_bor or yosh < 21:
    print("Qo'shimcha to'lov talab qilinadi")
else:
    print("Qo'shimcha to'lov yo'q")

print(not jarima_bor)
Natija
Mashina ijaraga olishingiz mumkin
Qo'shimcha to'lov yo'q
True
Qisqa tutashuv (short-circuit)

Python natija aniq bo'lishi bilan tekshirishni to'xtatadi:

  • and da birinchi operand False bo'lsa, ikkinchisi umuman baholanmaydi.
  • or da birinchi operand True bo'lsa, ikkinchisi baholanmaydi.

Bu xatolardan himoyalanish uchun ishlatiladi:

Python
matn = ""
if matn and matn[0] == "A":     # matn bo'sh bo'lsa, matn[0] hech qachon bajarilmaydi
    print("A harfi bilan boshlanadi")

Agar and o'rniga alohida if yozganingizda IndexError chiqardi.

O'zlashtirish operatorlari #

OperatorQisqa yozuvTo'liq shakli
=x = 5-
+=x += 3x = x + 3
-=x -= 3x = x - 3
*=x *= 3x = x * 3
/=x /= 3x = x / 3
//=x //= 3x = x // 3
%=x %= 3x = x % 3
**=x **= 3x = x ** 3
Python
hisob = 100

hisob += 50        # to'ldirish
print("To'ldirishdan keyin:", hisob)

hisob -= 30        # sarflash
print("Sarfdan keyin:      ", hisob)

hisob *= 2         # bonus
print("Bonusdan keyin:     ", hisob)
Natija
To'ldirishdan keyin: 150
Sarfdan keyin:       120
Bonusdan keyin:      240

A'zolik operatorlari: in va not in #

Python
shaharlar = ["Toshkent", "Samarqand", "Buxoro"]

print("Buxoro" in shaharlar)
print("Xiva" in shaharlar)
print("Xiva" not in shaharlar)

# Matn ichida ham ishlaydi
email = "[email protected]"
print("@" in email)
Natija
True
False
True
True

Identiklik operatorlari: is va is not #

== qiymatlarni, is esa xotiradagi obyektni solishtiradi.

Python
royxat_1 = [1, 2, 3]
royxat_2 = [1, 2, 3]
royxat_3 = royxat_1

print(royxat_1 == royxat_2)     # qiymatlari bir xil
print(royxat_1 is royxat_2)     # lekin turli obyektlar
print(royxat_1 is royxat_3)     # bu esa aynan bir obyekt
Natija
True
False
True
is ni faqat None, True, False uchun ishlating

Sonlar va matnlarni is bilan solishtirmang - natija Python versiyasiga qarab o'zgarishi mumkin. Qiymat tekshirish uchun har doim == ishlating.

Bit operatorlari #

Kamdan-kam kerak bo'ladi, lekin bilib qo'yish foydali:

OperatorNomiMisol (a=12, b=10)Natija
&VAa & b8
|YOKIa | b14
^Istisno YOKIa ^ b6
~Inkor~a-13
<<Chapga surisha << 124
>>O'ngga surisha >> 16
Python
birinchi = 12       # ikkilikda 1100
ikkinchi = 10       # ikkilikda 1010

print(f"{birinchi} & {ikkinchi} = {birinchi & ikkinchi}")
print(f"{birinchi} | {ikkinchi} = {birinchi | ikkinchi}")
print(f"Ikkilik ko'rinishi: {bin(birinchi)}")
Natija
12 & 10 = 8
12 | 10 = 14
Ikkilik ko'rinishi: 0b1100

Amallarning bajarilish tartibi #

Yuqoridan pastga - eng yuqori ustunlikdan eng pastgacha:

DarajaOperatorlar
1() qavslar
2** daraja
3+x, -x, ~x unar
4*, /, //, %
5+, -
6<<, >>
7&, ^, |
8==, !=, <, >, <=, >=, in, is
9not
10and
11or
Python
natija = 2 + 3 * 4 ** 2
print(natija)               # 4**2=16, 3*16=48, 2+48=50

natija = (2 + 3) * 4 ** 2
print(natija)               # (5) * 16 = 80
Natija
50
80
Qavs ishlatishdan qo'rqmang

Kodni o'qiyotgan odam (jumladan, kelasi oydagi siz) qavslarni ko'rib darrov tushunadi. (a and b) or c yozuvi a and b or c dan har doim yaxshiroq.

Amaliy misol: kredit kalkulyatori #

Python
# ============================================
# Oddiy annuitet kredit kalkulyatori
# ============================================

kredit_summasi = 50_000_000        # so'm
yillik_foiz = 24                   # %
muddat_oy = 12

oylik_foiz = yillik_foiz / 100 / 12
koeffitsient = (oylik_foiz * (1 + oylik_foiz) ** muddat_oy) / \
               ((1 + oylik_foiz) ** muddat_oy - 1)

oylik_tolov = kredit_summasi * koeffitsient
umumiy_tolov = oylik_tolov * muddat_oy
ortiqcha_tolov = umumiy_tolov - kredit_summasi

print("=" * 42)
print(f"{'KREDIT HISOB-KITOBI':^42}")
print("=" * 42)
print(f"{'Kredit summasi:':<26}{kredit_summasi:>15,.0f}")
print(f"{'Yillik foiz:':<26}{yillik_foiz:>14} %")
print(f"{'Muddat:':<26}{muddat_oy:>12} oy")
print("-" * 42)
print(f"{'Oylik tolov:':<26}{oylik_tolov:>15,.0f}")
print(f"{'Umumiy tolov:':<26}{umumiy_tolov:>15,.0f}")
print(f"{'Ortiqcha tolov:':<26}{ortiqcha_tolov:>15,.0f}")
print("=" * 42)
Natija
==========================================
           KREDIT HISOB-KITOBI            
==========================================
Kredit summasi:                 50,000,000
Yillik foiz:                          24 %
Muddat:                             12 oy
------------------------------------------
Oylik tolov:                     4,728,504
Umumiy tolov:                   56,742,050
Ortiqcha tolov:                  6,742,050
==========================================
Amaliy topshiriq

tekshiruv.py dasturini yozing:

  1. Foydalanuvchidan yosh va shahar so'rang.
  2. and yordamida tekshiring: yosh 18 dan katta va shahar "Toshkent" bo'lsa - "Ariza qabul qilindi" deb chiqaring.
  3. or yordamida tekshiring: yosh 65 dan katta yoki 7 dan kichik bo'lsa - "Imtiyozli toifa" deb chiqaring.
  4. % yordamida yosh juft yoki toq ekanini aniqlang.

Xulosa #

  • / kasr, // butun bo'linma, % qoldiq qaytaradi.
  • Taqqoslash operatorlari True/False beradi; Python zanjirli yozuvni qo'llab-quvvatlaydi.
  • and, or, not mantiqiy amallar bo'lib, qisqa tutashuv prinsipida ishlaydi.
  • == qiymatni, is esa obyektni solishtiradi.
  • Amallar tartibida shubha bo'lsa - qavs qo'ying.

Keyingi bo'limda satrlar bilan chuqurroq ishlashni - metodlar, kesish va formatlashni o'rganamiz.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.