Taqqoslash va mantiqiy amallar

Dastur qaror qabul qilishi uchun avval savol bera olishi kerak: «Yoshi 18 dan kattami?», «Parol to'g'rimi?», «Hisobda pul yetarlimi?». Bu darsda Python'ga shunday savollar berishni o'rganamiz. Javob doim bitta: True yoki False.

Bu darsda

  • Oltita taqqoslash amali: ==, !=, <, >, <=, >=
  • = va == ning farqi
  • Satrlarni taqqoslash
  • Mantiqiy amallar: and, or, not
  • Murakkab shartlarni tuzish

Taqqoslash amallari

Taqqoslash ikki qiymatni solishtiradi va natijada mantiqiy qiymat — True (rost) yoki False (yolg'on) beradi:

AmalMa'nosiMisolNatija
==teng5 == 5True
!=teng emas5 != 3True
>katta5 > 3True
<kichik5 < 3False
>=katta yoki teng5 >= 5True
<=kichik yoki teng4 <= 3False
yosh = 17
print(yosh >= 18)
print(yosh < 18)
print(yosh == 17)
print(yosh != 17)
False
True
True
False

Taqqoslash natijasini o'zgaruvchiga ham saqlash mumkin — bu oddiy bool qiymat:

hisob = 85000
narx = 120000
pul_yetadimi = hisob >= narx
print("Pul yetadimi?", pul_yetadimi)

= va == — butunlay boshqa narsalar

Bu yangi boshlovchilarning eng ko'p qiladigan xatolaridan biri:

= — buyruq: «Qutiga olma sol!». == — savol: «Qutida olma bormi?». Buyruq hech narsa qaytarmaydi, savolga esa javob («ha» yoki «yo'q») olinadi.

Satrlarni taqqoslash

Satrlar ham taqqoslanadi. Ular aynan bir xil bo'lsagina teng hisoblanadi — katta-kichik harf va bo'sh joylar ham muhim:

print("olma" == "olma")
print("olma" == "Olma")
print("olma" == "olma ")
print("Olma".lower() == "olma")
True
False
False
True

Oxirgi qatorda kichik harflarga o'tkazib taqqosladik — foydalanuvchi javobini tekshirishda bu usul juda qo'l keladi.

< va > satrlar uchun alifbo tartibini tekshiradi: "anor" < "olma" — True, chunki «a» harfi «o» dan oldin keladi.

Turli turdagi qiymatlar teng bo'lmaydi: "10" == 10 — False, chunki biri satr, ikkinchisi son. Lekin 10 == 10.0 — True: ikkalasi ham son va qiymatlari teng.

Mantiqiy amallar: and, or, not

Hayotdagi qarorlar ko'pincha bir nechta shartga bog'liq bo'ladi: «Yoshi 16 dan katta va chiptasi bor bo'lsa, kinoga kiradi». Shartlarni birlashtirish uchun uchta mantiqiy amal bor.

and — «va»

and faqat ikkala shart ham rost bo'lganda True beradi:

ABA and B
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse
yosh = 17
chipta_bor = True
print("Kinoga kira oladimi?", yosh >= 16 and chipta_bor)

or — «yoki»

or shartlardan kamida bittasi rost bo'lsa, True beradi:

ABA or B
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse
kun = "shanba"
dam_olish = kun == "shanba" or kun == "yakshanba"
print("Bugun dam olish kunimi?", dam_olish)

not — «emas»

not qiymatni teskarisiga aylantiradi: not True — False, not False — True.

yomgir = False
print("Sayrga chiqamizmi?", not yomgir)

Murakkab shartlar

Bir nechta amalni birga ishlatish mumkin. Ularning tartibi: avval not, keyin and, oxirida or. Chalkashmaslik uchun qavs ishlatgan ma'qul:

yosh = 20
talaba = True
nafaqada = False

chegirma = (yosh < 25 and talaba) or nafaqada
print("Chegirma bormi?", chegirma)

Oraliqni tekshirish

Son biror oraliqda ekanini tekshirish uchun Python matematikadagidek qisqa yozuvga ruxsat beradi:

ball = 78
print(ball >= 71 and ball <= 85)
print(71 <= ball <= 85)

Ikkala qator ham bir xil ishni qiladi, lekin ikkinchisi qisqaroq va tushunarliroq.

Mashqlar

1-mashq Natijani taxmin qiling

Har bir qator nima chiqarishini avval qog'ozga yozing, keyin ishga tushirib tekshiring.

print(10 > 5 and 3 > 7)
print(10 > 5 or 3 > 7)
print(not 10 > 5)
print("a" < "b")
print(5 == 5.0)
print("5" == 5)
Javobni ko'rish

False, True, False, True, True, False.

2-mashq Oraliq

son 1 dan 100 gacha (ikkalasi ham kiradi) oraliqda ekanini tekshiradigan ifoda yozing va natijasini chiqaring. son = 57 uchun True chiqishi kerak. Keyin son ni 0 va 101 qilib sinab ko'ring.

son = 57
Yechimni ko'rish
son = 57
print(1 <= son <= 100)

3-mashq Kabisa yili

Yil kabisa yili bo'ladi, agar u 4 ga bo'linsa va 100 ga bo'linmasa, yoki 400 ga bo'linsa. Shu qoidani bitta mantiqiy ifoda bilan yozing va 2024, 1900, 2000 yillar uchun tekshiring.

True
False
True
yil = 2024
print(...)  # shu yerga ifoda yozing

yil = 1900
print(...)

yil = 2000
print(...)
Ishora

«4 ga bo'linadi» — yil % 4 == 0. «100 ga bo'linmaydi» — yil % 100 != 0.

Yechimni ko'rish
yil = 2024
print((yil % 4 == 0 and yil % 100 != 0) or yil % 400 == 0)

yil = 1900
print((yil % 4 == 0 and yil % 100 != 0) or yil % 400 == 0)

yil = 2000
print((yil % 4 == 0 and yil % 100 != 0) or yil % 400 == 0)

Bir xil ifodani uch marta yozish noqulay, to'g'rimi? 15-darsda buni funksiya yordamida chiroyli hal qilamiz.

O'zingizni sinang

5 == 5.0 nimaga teng?

  1. True
  2. False
  3. Xato beradi
  4. 5

To'g'ri. Ikkalasi ham son va qiymatlari teng.

True and False nimaga teng?

  1. True
  2. False
  3. Xato beradi
  4. None

To'g'ri. and uchun ikkala qism ham rost bo'lishi kerak.

False or True nimaga teng?

  1. True
  2. False
  3. Xato beradi
  4. None

To'g'ri. or uchun kamida bitta qism rost bo'lishi yetarli.

«x 10 ga tengmi?» degan savol Python'da qanday yoziladi?

  1. x = 10
  2. x => 10
  3. x == 10
  4. x === 10

To'g'ri. Bitta = — qiymat berish, ikkita == — taqqoslash.

"10" == 10 nimaga teng?

  1. True
  2. Xato beradi
  3. 10
  4. False

To'g'ri. Satr va son hech qachon teng bo'lmaydi, hatto bir xil ko'rinsa ham.

Xulosa

  • Taqqoslash amallari ==, !=, <, >, <=, >= natijasi — True yoki False.
  • = qiymat beradi, == tenglikni tekshiradi.
  • Satrlar aynan bir xil bo'lsagina teng: katta-kichik harf ham muhim.
  • and — ikkalasi ham rost; or — kamida bittasi rost; not — teskarisi.
  • Oraliqni qisqa yozish mumkin: 1 <= x <= 100.