Logical Operators

Mantiqiy operatorlar bir nechta ifodalarni maxsus kalit so'zlar yordamida zanjirga bog'lash imkonini beradi.

Mantiqiy Operatorlar

Mantiqiy operatorlar bir nechta ifodalarni maxsus kalit so'zlar yordamida zanjirga bog'lash imkonini beradi. Python tomonidan qo'llab-quvvatlanadigan uchta mantiqiy operator quyidagilardir:

  • and - Ikkala operand ham to'g'ri bo'lsa, faqat shunda to'g'ri
  • or - Ikkita operanddan biri to'g'ri bo'lsa, to'g'ri
  • not - Operand noto'g'ri bo'lsa, to'g'ri

Keling, oldingi bo'limdagi misolni ishlatib, mantiqiy and operatoridan foydalanib, shartli bayonotlarni soddalashtirib ko'raylik:

1 >>> age = 18
2 >>> car = 'Ford'
3 >>> if age >= 18 and car in ['Honda', 'Toyota']:
4... print('Siz Yapon avtomobillarini xarid qilasiz')
5... elif age >= 18 and car in ['Ford', 'Chevrolet']:
6... print('Siz Amerikalik avtomobillarni xarid qilasiz')
7... else:
8... print('Siz avtomobil xarid qilish uchun juda yoshsiz!')
9...
10 Siz Amerikalik avtomobillarni xarid qilasiz

and operatorini ishlatganingizda, ikkala ifoda ham to'g'ri bo'lishi kerak, shunda ularning ostidagi kod bajariladi. Shunday qilib, birinchi shart yosh 21 dan katta yoki teng bo'lishini va avtomobil Yapon avtomobillari ro'yxatida ekanligini tekshiradi. Agar ikkalasi ham to'g'ri bo'lmasa, siz birinchi elif ga o'tasiz va shartlarni tekshirasiz. Bu safar ikkala shart ham to'g'ri, shuning uchun avtomobil afzalligingiz chop etiladi.

Keling, and o'rniga or ni o'zgartirsangiz nima bo'lishini ko'raylik:

1 >>> age = 18
2 >>> car = 'Ford'
3 >>> if age >= 18 or car in ['Honda', 'Toyota']:
4... print('Siz Yapon avtomobillarini xarid qilasiz')
5... elif age >= 18 or car in ['Ford', 'Chevrolet']:
6... print('Siz Amerikalik avtomobillarni xarid qilasiz')
7... else:
8... print('Siz avtomobil xarid qilish uchun juda yoshsiz!')
9...
10 Siz Yapon avtomobillarini xarid qilasiz

Kutib turing! Sizning avtomobilingiz "Ford" edi, lekin bu kod siz Yapon avtomobillarini xarid qilayotganingizni aytmoqda! Nima bo'lyapti?

Mantiqiy or operatorini ishlatganingizda, agar ikkita bayonotdan biri to'g'ri bo'lsa, u kod bloki bajariladi. Keling, buni biroz o'rganamiz. if age >= 21 or car in ['Honda', 'Toyota'] da ikkita ifoda mavjud. Birinchisi age >= 21. U to'g'ri baholanadi. Python or ni ko'rganida va birinchi bayonot to'g'ri ekanligini bilsa, butun ifodani to'g'ri deb baholaydi. Ikkala holda ham, sizning yoshingiz 21 dan katta yoki teng bo'lishi yoki avtomobilingiz "Ford". Har holda, bu to'g'ri va u kod bajariladi.

not operatori ishlatishda biroz boshqacha. U ushbu misolga to'g'ri kelmaydi, lekin oldingi autentifikatsiya misolimiz bilan ishlaydi:

1 >>> authenticated = False
2 >>> if not authenticated:
3... print('Iltimos, kiring')
4... else:
5... print('Siz tizimga kirdingiz')
6...
7 Iltimos, kiring

not operatorini ishlatib, muvaffaqiyat va muvaffaqiyatsizlik bloklarini o'zgartirdik - bu muvaffaqiyatsizlikni hal qilish kodlari qisqa bo'lganda foydali bo'lishi mumkin.

Siz shartli bayonotda mantiqiy operatorlarni birlashtirishingiz mumkin. Mana bir misol:

1 >>> color = 'white'
2 >>> age = 10
3 >>> if age <= 14 and (color == 'white' or color == 'green'):
4... print(f'Bu sut {age} kunlik va {color} ko'rinishda')
5... else:
6... print(f'Siz {age} kunlik sutni ichmasligingiz kerak...')
7...
8 Bu sut 10 kunlik va oq ko'rinishda

Bu safar, agar yosh 14 dan kichik yoki teng bo'lsa va sut rangi oq yoki yashil bo'lsa, kodning birinchi yarmini bajaradi. 2-chi va 3-chi ifodalar atrofidagi qavslar juda muhim, chunki ular ustuvorlikni bildiradi, ya'ni ma'lum bir operatorning qanchalik muhimligini. and operatori or dan ko'ra muhimroq, shuning uchun qavslar bo'lmasa, Python yuqoridagi kodni if (age <= 14 and color == 'white') or color == 'green': deb talqin qiladi. Bu sizning niyatingiz emas! Buni o'zingizga isbotlash uchun, rangni 'green' ga o'zgartirib, yoshni 100 ga o'rnating, shartli bayonotdagi qavslarni olib tashlang va kodni yana bir bor ishga tushiring.

Ushbu sahifada

Xato haqida xabar berish