Shartlar: if, elif, else
Bu bobda
- taqqoslash operatorlari va
True/Falseni and,or,notbilan shartlarni birlashtirishniif,if-else,if-elif-elseni va chekinish (indentation) qoidasini- foydalanuvchi kiritgan ma'lumotni tekshirishni
- 4-bobdagi kvadrat tenglama dasturini tugatishni
Taqqoslash: savolga True yoki False
Dastur qaror qabul qilishi uchun avval savol berish kerak: "ball 60 dan katta yoki tengmi?". Bunday savolning javobi — True (rost) yoki False (yolg'on).
ball = 72 print(ball >= 60) print(ball == 100) print(ball != 100)
True False True
| Operator | Ma'nosi | 5 ? 3 |
|---|---|---|
== |
teng | False |
!= |
teng emas | True |
> |
katta | True |
< |
kichik | False |
>= |
katta yoki teng | True |
<= |
kichik yoki teng | False |
= va == ni adashtirish
= — qiymat bog'lash, == — solishtirish. Shart ichida = yozsangiz, Python dasturni ishga tushirmaydi:
ball = 72 if ball = 100: print("A'lo")
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='? (<kitob>, line 2)
Python matematikadagi kabi zanjir taqqoslashni tushunadi:
yosh = 17 print(14 <= yosh < 18)
True
Satrlar ham solishtiriladi. Katta va kichik harf farq qiladi:
print("ali" == "ali") print("Ali" == "ali") print("Ali".lower() == "ali")
True False True
and, or, not
Bir nechta shartni birlashtirish uchun:
| Operator | Qachon True |
Misol |
|---|---|---|
and |
ikkalasi ham rost bo'lsa | yosh >= 18 and pasport |
or |
kamida bittasi rost bo'lsa | kun == "shanba" or kun == "yakshanba" |
not |
teskarisi | not tolangan |
yosh = 20 pasport = True print(yosh >= 18 and pasport) kun = "yakshanba" print(kun == "shanba" or kun == "yakshanba") tolangan = False print(not tolangan)
True True True
or ni noto'g'ri yozish
Dam olish kunini tekshirmoqchimiz, lekin ikkinchi taqqoslashni qisqartirib yozdik:
kun = "dushanba" if kun == "shanba" or "yakshanba": print("Dam olish kuni!")
Dam olish kuni!
Dushanba dam olish kuni emas, lekin shart bajarildi! Python buni (kun == "shanba") or ("yakshanba") deb o'qiydi. Birinchi qism False, shuning uchun or ikkinchi qismni oladi — "yakshanba" satrini. Bu bo'sh bo'lmagan satr, 2-bobdan bilamizki u rost hisoblanadi. Shart har qanday kunda bajariladi.
To'g'risi — har bir taqqoslashni to'liq yozish:
kun = "dushanba" if kun == "shanba" or kun == "yakshanba": print("Dam olish kuni!") else: print("Ish kuni")
Ish kuni
if: agar ... bo'lsa
ball = int(input("Ball: ")) if ball >= 60: print("Imtihondan o'tdingiz!") print("Dastur tugadi")
Ball: 72 Imtihondan o'tdingiz! Dastur tugadi
Tuzilishi:
if, keyin shart, oxirida ikki nuqta:.- Shart rost bo'lganda bajariladigan qatorlar 4 ta probel ichkarida (chekinish, indentation) yoziladi.
- Chekinishsiz qator —
ifga tegishli emas, u har doim bajariladi.
ball = int(input("Ball: ")) if ball >= 60: print("Imtihondan o'tdingiz!") print("Dastur tugadi")
Ball: 45 Dastur tugadi
45 kiritilganda shart yolg'on: ichkaridagi qator o'tkazib yuborildi, tashqaridagisi bajarildi.
Chekinish va ikki nuqta
Pythonda chekinish — bezak emas, sintaksis. Boshqa tillardagi { } vazifasini bajaradi.
ball = 72 if ball >= 60: print("O'tdingiz")
IndentationError: expected an indented block after 'if' statement on line 2 (<kitob>, line 3)
ball = 72 if ball >= 60 print("O'tdingiz")
SyntaxError: expected ':' (<kitob>, line 2)
Jupyter va VS Code : dan keyin Enter bosganda chekinishni o'zi qo'yadi. Probel va Tab ni aralashtirmang.
else: aks holda
ball = int(input("Ball: ")) if ball >= 60: print("O'tdingiz") else: print("Afsus, qayta topshirasiz")
Ball: 45 Afsus, qayta topshirasiz
if-else da ikki yo'ldan aynan bittasi bajariladi.
Juft yoki toq
3-bobdagi % 2 endi qaror qabul qiladi:
n = int(input("Son: ")) if n % 2 == 0: print(n, "juft") else: print(n, "toq")
Son: 17 17 toq
elif: bir nechta yo'l
Ikkidan ortiq holat bo'lsa, elif ("else if") ishlatiladi. Python shartlarni yuqoridan pastga tekshiradi va birinchi rost shartni bajaradi, qolganlarini o'tkazib yuboradi.
ball = int(input("Ball (0-100): ")) if ball >= 86: baho = 5 elif ball >= 71: baho = 4 elif ball >= 56: baho = 3 else: baho = 2 print("Baho:", baho)
Ball (0-100): 84 Baho: 4
84 uchun birinchi shart (>= 86) yolg'on, ikkinchisi (>= 71) rost — baho 4. Uchinchi shart ham rost (84 ≥ 56), lekin u tekshirilmaydi, chunki javob topildi.
Tartibni adashtirish
ball = int(input("Ball: ")) if ball >= 56: baho = 3 elif ball >= 71: baho = 4 elif ball >= 86: baho = 5 print("Baho:", baho)
Ball: 95 Baho: 3
95 ball — lekin baho 3! Birinchi shart allaqachon rost bo'ldi. Chegaralarni kattadan kichikka qarab yozing.
Ichma-ich shartlar
if ichida yana if bo'lishi mumkin. Har bir daraja yana 4 probel ichkariga suriladi:
yosh = int(input("Yosh: ")) guvohnoma = input("Haydovchilik guvohnomasi bormi (ha/yo'q): ") if yosh >= 18: if guvohnoma == "ha": print("Mashina ijaraga olishingiz mumkin") else: print("Avval guvohnoma oling") else: print("18 yoshdan keyin keling")
Yosh: 20 Haydovchilik guvohnomasi bormi (ha/yo'q): ha Mashina ijaraga olishingiz mumkin
Ko'pincha ichma-ich if ni and bilan soddalashtirish mumkin. Ikki darajadan chuqur ichma-ichlikdan qoching — o'qish qiyinlashadi.
Bo'sh qiymat — yolg'on
2-bobdagi qoidani eslang: bo'sh satr va 0 — False. Bu tekshiruvni qisqartiradi:
ism = input("Ism: ").strip() if ism: print(f"Salom, {ism}!") else: print("Ism kiritilmadi")
Ism: Ism kiritilmadi
if ism: — "ism bo'sh bo'lmasa". Bu if ism != "": bilan bir xil, lekin qisqaroq.
Kiritilgan ma'lumotni tekshirish
2-bobda int("abc") dastur yiqilishini ko'rdik. Endi oldindan tekshira olamiz:
matn = input("Yoshingiz: ") if matn.isdigit(): yosh = int(matn) print("Keyingi yil", yosh + 1, "yoshda bo'lasiz") else: print("Iltimos, faqat raqam kiriting")
Yoshingiz: yigirma Iltimos, faqat raqam kiriting
a = float(input("a = ")) b = float(input("b = ")) if b == 0: print("Nolga bo'lib bo'lmaydi") else: print("a / b =", a / b)
a = 8 b = 0 Nolga bo'lib bo'lmaydi
Qisqa if: bitta qatorda
Ikki qiymatdan birini tanlash uchun qisqa shakl bor:
yosh = 16 holat = "kattalar" if yosh >= 18 else "bolalar" print(holat)
bolalar
Uni "holat — agar yosh ≥ 18 bo'lsa kattalar, aks holda bolalar" deb o'qing. Faqat oddiy tanlov uchun ishlating.
Loyiha: kvadrat tenglama (to'liq)
4-bobda D < 0 bo'lganda dastur yiqilgan edi. Endi uchta holatni ham ko'rib chiqamiz:
import math a = float(input("a = ")) b = float(input("b = ")) c = float(input("c = ")) if a == 0: print("Bu kvadrat tenglama emas (a = 0)") else: d = b ** 2 - 4 * a * c if d > 0: x1 = (-b + math.sqrt(d)) / (2 * a) x2 = (-b - math.sqrt(d)) / (2 * a) print(f"Ikkita ildiz: x1 = {x1}, x2 = {x2}") elif d == 0: print(f"Bitta ildiz: x = {-b / (2 * a)}") else: print(f"Haqiqiy ildiz yo'q (D = {d})")
a = 1 b = 2 c = 5 Haqiqiy ildiz yo'q (D = -16.0)
import math a = float(input("a = ")) b = float(input("b = ")) c = float(input("c = ")) if a == 0: print("Bu kvadrat tenglama emas (a = 0)") else: d = b ** 2 - 4 * a * c if d > 0: x1 = (-b + math.sqrt(d)) / (2 * a) x2 = (-b - math.sqrt(d)) / (2 * a) print(f"Ikkita ildiz: x1 = {x1}, x2 = {x2}") elif d == 0: print(f"Bitta ildiz: x = {-b / (2 * a)}") else: print(f"Haqiqiy ildiz yo'q (D = {d})")
a = 1 b = -6 c = 9 Bitta ildiz: x = 3.0
Endi dastur yiqilmaydi: har qanday kiritishga tushunarli javob beradi.
Kitoblarda
- Python asoslari: mantiq elementlari va operatorlari 56–57-betlar, shart operatorlari 58-bet; taqqoslash va mantiq operatorlari 13–14-betlar.
- Python Crash Course: 5-bob, if Statements 71–89-betlar (
and,or,if-elif-else, Testing Multiple Conditions).
Xulosa
- Taqqoslash
True/Falseberadi;=bog'laydi,==solishtiradi. and— ikkalasi,or— kamida bittasi,not— teskarisi.x == 1 or x == 2deb to'liq yozing.if shart:dan keyin 4 probel chekinish;:ni unutmang.elifzanjirida birinchi rost shart yutadi — chegaralarni to'g'ri tartibda yozing.if matn:— bo'sh emasligini,matn.isdigit()— raqamligini tekshiradi.
Mashqlar
True/False so'raladigan mashqlarda shartning o'zini chiqaring: print(a > 0).
Butun son A berilgan. "A musbat son" degan gapning rostligini tekshiring.
| Kirish | Kutilgan natija |
|---|---|
| 5 | True |
| 0 | False |
| -3 | False |
Yechimni ko'rish
a = int(input()) print(a > 0)
Butun son A berilgan. "A toq son" degan gapning rostligini tekshiring.
| Kirish | Kutilgan natija |
|---|---|
| 7 | True |
| 10 | False |
| -3 | True |
Yechimni ko'rish
a = int(input()) print(a % 2 == 1)
Butun sonlar A va B berilgan. "A > 2 va B ≤ 3" degan gapning rostligini tekshiring.
| Kirish | Kutilgan natija |
|---|---|
| 5, 3 | True |
| 5, 4 | False |
| 2, 1 | False |
Yechimni ko'rish
a = int(input()) b = int(input()) print(a > 2 and b <= 3)
Butun sonlar A, B, C berilgan. "A < B < C" degan gapning rostligini tekshiring.
| Kirish | Kutilgan natija |
|---|---|
| 1, 2, 3 | True |
| 1, 3, 2 | False |
| 2, 2, 3 | False |
Yechimni ko'rish
a = int(input()) b = int(input()) c = int(input()) print(a < b < c)
Butun sonlar A va B berilgan. "A va B ikkalasi ham toq" degan gapning rostligini tekshiring.
| Kirish | Kutilgan natija |
|---|---|
| 3, 5 | True |
| 3, 4 | False |
| 2, 4 | False |
Yechimni ko'rish
a = int(input()) b = int(input()) print(a % 2 == 1 and b % 2 == 1)
Butun son A berilgan. "A — musbat, juft, ikki xonali son" degan gapning rostligini tekshiring.
| Kirish | Kutilgan natija |
|---|---|
| 24 | True |
| 25 | False |
| 124 | False |
Yechimni ko'rish
a = int(input()) print(10 <= a <= 99 and a % 2 == 0)
Musbat uch xonali son berilgan. "Uning hamma raqamlari har xil" degan gapning rostligini tekshiring.
| Kirish | Kutilgan natija |
|---|---|
| 123 | True |
| 121 | False |
| 555 | False |
Yechimni ko'rish
n = int(input()) a = n // 100 b = n // 10 % 10 c = n % 10 print(a != b and b != c and a != c)
Butun son berilgan. U musbat bo'lsa, unga 1 qo'shing, aks holda o'zgartirmang. Natijani chiqaring.
| Kirish | Kutilgan natija |
|---|---|
| 5 | 6 |
| 0 | 0 |
| -4 | -4 |
Yechimni ko'rish
n = int(input()) if n > 0: n += 1 print(n)
Butun son berilgan. U musbat bo'lsa, unga 1 qo'shing, aks holda undan 2 ni ayiring. Natijani chiqaring.
| Kirish | Kutilgan natija |
|---|---|
| 5 | 6 |
| 0 | -2 |
| -4 | -6 |
Yechimni ko'rish
n = int(input()) if n > 0: n += 1 else: n -= 2 print(n)
Butun son berilgan. U musbat bo'lsa — 1 qo'shing, manfiy bo'lsa — 2 ni ayiring, nol bo'lsa — 10 ga almashtiring. Natijani chiqaring.
| Kirish | Kutilgan natija |
|---|---|
| 5 | 6 |
| 0 | 10 |
| -4 | -6 |
Yechimni ko'rish
n = int(input()) if n > 0: n += 1 elif n < 0: n -= 2 else: n = 10 print(n)
Ikkita son berilgan. Kattasini chiqaring. (max() ishlatmang, if bilan yeching.)
| Kirish | Kutilgan natija |
|---|---|
| 3, 8 | 8 |
| 8, 3 | 8 |
| -1, -5 | -1 |
Yechimni ko'rish
a = float(input()) b = float(input()) if a > b: print(a) else: print(b)
Ikkita son berilgan. Avval kattasini, keyin kichigini chiqaring.
| Kirish | Kutilgan natija |
|---|---|
| 3, 8 | 8 3 |
| 8, 3 | 8 3 |
| 5, 5 | 5 5 |
Yechimni ko'rish
a = float(input()) b = float(input()) if a > b: print(a, b) else: print(b, a)
Uchta son berilgan. Eng kichigini chiqaring (min() ishlatmang).
| Kirish | Kutilgan natija |
|---|---|
| 3, 1, 2 | 1 |
| 5, 7, 9 | 5 |
| 4, 4, -1 | -1 |
Yechimni ko'rish
a = float(input()) b = float(input()) c = float(input()) eng = a if b < eng: eng = b if c < eng: eng = c print(eng)
Uchta son berilgan. Ulardan ikkita kattasining yig'indisini chiqaring.
| Kirish | Kutilgan natija |
|---|---|
| 1, 2, 3 | 5 |
| 5, 1, 4 | 9 |
| 2, 8, 2 | 10 |
Yechimni ko'rish
a = float(input()) b = float(input()) c = float(input()) eng_kichik = a if b < eng_kichik: eng_kichik = b if c < eng_kichik: eng_kichik = c print(a + b + c - eng_kichik)
Ball (0–100, butun son) berilgan. Bahoni chiqaring: 86–100 → 5, 71–85 → 4, 56–70 → 3, qolgani → 2. Agar ball 0–100 oralig'ida bo'lmasa, Xato ball deb chiqaring.
| Kirish | Kutilgan natija |
|---|---|
| 92 | 5 |
| 71 | 4 |
| 56 | 3 |
Yechimni ko'rish
ball = int(input()) if ball < 0 or ball > 100: print("Xato ball") elif ball >= 86: print(5) elif ball >= 71: print(4) elif ball >= 56: print(3) else: print(2)
Yil berilgan. U kabisa yili bo'lsa Kabisa, aks holda Oddiy deb chiqaring. Qoida: 4 ga bo'linadi, lekin 100 ga bo'linmaydi; yoki 400 ga bo'linadi.
| Kirish | Kutilgan natija |
|---|---|
| 2024 | Kabisa |
| 2026 | Oddiy |
| 1900 | Oddiy |
Yechimni ko'rish
y = int(input()) if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0: print("Kabisa") else: print("Oddiy")
A·x² + B·x + C = 0 tenglama berilgan. Ildizlar soniga qarab chiqaring: ikkita bo'lsa — kichigi, keyin kattasi; bitta bo'lsa — o'sha ildiz; ildiz bo'lmasa — Ildiz yo'q. A ≠ 0.
| Kirish | Kutilgan natija |
|---|---|
| 1, -5, 6 | 2 3 |
| 1, -6, 9 | 3 |
| 1, 2, 5 | Ildiz yo'q |
Yechimni ko'rish
import math a = float(input()) b = float(input()) c = float(input()) d = b * b - 4 * a * c if d > 0: x1 = (-b - math.sqrt(d)) / (2 * a) x2 = (-b + math.sqrt(d)) / (2 * a) print(min(x1, x2), max(x1, x2)) elif d == 0: print(-b / (2 * a)) else: print("Ildiz yo'q")
Bu bobni bepul o'qidingiz.
Kitob o'rgatadi, lekin sizning kodingiz nega ishlamaganini ayta olmaydi. Kursda uy vazifangiz tekshiriladi.