5-bo‘lim
Operatorlar
Arifmetik, taqqoslash, mantiqiy, o'zlashtirish va a'zolik operatorlari hamda ularning bajarilish tartibi.
Ushbu bo‘lim mundarijasi
- Arifmetik operatorlar
- % operatorining amaliy foydasi
- Taqqoslash operatorlari
- Zanjirli taqqoslash
- Mantiqiy operatorlar
- O'zlashtirish operatorlari
- A'zolik operatorlari: in va not in
- Identiklik operatorlari: is va is not
- Bit operatorlari
- Amallarning bajarilish tartibi
- Amaliy misol: kredit kalkulyatori
- Xulosa
Operator - bu qiymatlar ustida amal bajaradigan belgi. 2 + 3 ifodasida + operator, 2 va 3 esa operandlar deb ataladi.
Arifmetik operatorlar #
| Operator | Nomi | Misol | Natija |
|---|---|---|---|
+ | Qo'shish | 7 + 3 | 10 |
- | Ayirish | 7 - 3 | 4 |
* | Ko'paytirish | 7 * 3 | 21 |
/ | Bo'lish | 7 / 3 | 2.333... |
// | Butun bo'lish | 7 // 3 | 2 |
% | Qoldiq | 7 % 3 | 1 |
** | Daraja | 7 ** 3 | 343 |
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)
Yig'indi: 22
Ayirma: 12
Ko'paytma: 85
Bo'linma: 3.4
Butun bo'linma: 3
Qoldiq: 2
Daraja: 289
/ har doim float qaytaradiprint(10 / 2) # 5.0 -- int emas!
print(10 // 2) # 5 -- butun bo'lish
print(type(10 / 2))
5.0
5
<class 'float'>
% operatorining amaliy foydasi #
Qoldiq operatori juft/toq tekshirish va davriy vazifalar uchun ajralmas:
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")
47 - toq son
24 soatlik: 17 -> 12 soatlik: 5
3 - uchga bo'linadi
6 - uchga bo'linadi
9 - uchga bo'linadi
// va %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.
| Operator | Ma'nosi | Misol | Natija |
|---|---|---|---|
== | Teng | 5 == 5 | True |
!= | Teng emas | 5 != 3 | True |
> | Katta | 5 > 3 | True |
< | Kichik | 5 < 3 | False |
>= | Katta yoki teng | 5 >= 5 | True |
<= | Kichik yoki teng | 3 <= 5 | True |
baho = 4
print(baho == 5)
print(baho != 5)
print(baho >= 3)
# Matnlar alifbo tartibida solishtiriladi
print("olma" < "uzum")
print("Olma" == "olma") # registr muhim!
False
True
True
True
False
= va == ni chalkashtirmang= - qiymat berish, == - taqqoslash.
yosh = 18 # qiymat beriladi
yosh == 18 # taqqoslanadi, natija True
Zanjirli taqqoslash #
Python'da matematikaga o'xshash yozuv mumkin:
harorat = 25
# Boshqa tillarda: harorat > 20 && harorat < 30
if 20 < harorat < 30:
print("Ob-havo yoqimli")
Ob-havo yoqimli
Mantiqiy operatorlar #
| Operator | Ma'nosi | True bo'ladi agar |
|---|---|---|
and | VA | ikkalasi ham rost |
or | YOKI | kamida bittasi rost |
not | EMAS | qiymat yolg'on |
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)
Mashina ijaraga olishingiz mumkin
Qo'shimcha to'lov yo'q
True
Python natija aniq bo'lishi bilan tekshirishni to'xtatadi:
andda birinchi operandFalsebo'lsa, ikkinchisi umuman baholanmaydi.orda birinchi operandTruebo'lsa, ikkinchisi baholanmaydi.
Bu xatolardan himoyalanish uchun ishlatiladi:
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 #
| Operator | Qisqa yozuv | To'liq shakli |
|---|---|---|
= | x = 5 | - |
+= | 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 |
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)
To'ldirishdan keyin: 150
Sarfdan keyin: 120
Bonusdan keyin: 240
A'zolik operatorlari: in va not in #
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)
True
False
True
True
Identiklik operatorlari: is va is not #
== qiymatlarni, is esa xotiradagi obyektni solishtiradi.
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
True
False
True
is ni faqat None, True, False uchun ishlatingSonlar 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:
| Operator | Nomi | Misol (a=12, b=10) | Natija |
|---|---|---|---|
& | VA | a & b | 8 |
| | YOKI | a | b | 14 |
^ | Istisno YOKI | a ^ b | 6 |
~ | Inkor | ~a | -13 |
<< | Chapga surish | a << 1 | 24 |
>> | O'ngga surish | a >> 1 | 6 |
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)}")
12 & 10 = 8
12 | 10 = 14
Ikkilik ko'rinishi: 0b1100
Amallarning bajarilish tartibi #
Yuqoridan pastga - eng yuqori ustunlikdan eng pastgacha:
| Daraja | Operatorlar |
|---|---|
| 1 | () qavslar |
| 2 | ** daraja |
| 3 | +x, -x, ~x unar |
| 4 | *, /, //, % |
| 5 | +, - |
| 6 | <<, >> |
| 7 | &, ^, | |
| 8 | ==, !=, <, >, <=, >=, in, is |
| 9 | not |
| 10 | and |
| 11 | or |
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
50
80
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 #
# ============================================
# 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)
==========================================
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
==========================================
tekshiruv.py dasturini yozing:
- Foydalanuvchidan yosh va shahar so'rang.
andyordamida tekshiring: yosh 18 dan katta va shahar "Toshkent" bo'lsa - "Ariza qabul qilindi" deb chiqaring.oryordamida tekshiring: yosh 65 dan katta yoki 7 dan kichik bo'lsa - "Imtiyozli toifa" deb chiqaring.%yordamida yosh juft yoki toq ekanini aniqlang.
Xulosa #
/kasr,//butun bo'linma,%qoldiq qaytaradi.- Taqqoslash operatorlari
True/Falseberadi; Python zanjirli yozuvni qo'llab-quvvatlaydi. and,or,notmantiqiy amallar bo'lib, qisqa tutashuv prinsipida ishlaydi.==qiymatni,isesa obyektni solishtiradi.- Amallar tartibida shubha bo'lsa - qavs qo'ying.
Keyingi bo'limda satrlar bilan chuqurroq ishlashni - metodlar, kesish va formatlashni o'rganamiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
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.