Asosiy qismga o'tish

Shartlar: if, elif, else

6-bob 39 kod bloki 2918 so'z

Bu bobda

  • taqqoslash operatorlari va True/False ni
  • and, or, not bilan shartlarni birlashtirishni
  • if, if-else, if-elif-else ni 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).

python4 qator
ball = 72
print(ball >= 60)
print(ball == 100)
print(ball != 100)
Natija
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:

python3 qator
ball = 72
if ball = 100:
    print("A'lo")
Xato xabari
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='? (<kitob>, line 2)

Python matematikadagi kabi zanjir taqqoslashni tushunadi:

python2 qator
yosh = 17
print(14 <= yosh < 18)
Natija
True

Satrlar ham solishtiriladi. Katta va kichik harf farq qiladi:

python3 qator
print("ali" == "ali")
print("Ali" == "ali")
print("Ali".lower() == "ali")
Natija
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
python9 qator
yosh = 20
pasport = True
print(yosh >= 18 and pasport)

kun = "yakshanba"
print(kun == "shanba" or kun == "yakshanba")

tolangan = False
print(not tolangan)
Natija
True
True
True

or ni noto'g'ri yozish

Dam olish kunini tekshirmoqchimiz, lekin ikkinchi taqqoslashni qisqartirib yozdik:

python3 qator
kun = "dushanba"
if kun == "shanba" or "yakshanba":
    print("Dam olish kuni!")
Natija
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:

python5 qator
kun = "dushanba"
if kun == "shanba" or kun == "yakshanba":
    print("Dam olish kuni!")
else:
    print("Ish kuni")
Natija
Ish kuni

if: agar ... bo'lsa

python4 qator
ball = int(input("Ball: "))
if ball >= 60:
    print("Imtihondan o'tdingiz!")
print("Dastur tugadi")
Natija
Ball: 72
Imtihondan o'tdingiz!
Dastur tugadi

Tuzilishi:

  1. if, keyin shart, oxirida ikki nuqta :.
  2. Shart rost bo'lganda bajariladigan qatorlar 4 ta probel ichkarida (chekinish, indentation) yoziladi.
  3. Chekinishsiz qator — if ga tegishli emas, u har doim bajariladi.
python4 qator
ball = int(input("Ball: "))
if ball >= 60:
    print("Imtihondan o'tdingiz!")
print("Dastur tugadi")
Natija
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.

python3 qator
ball = 72
if ball >= 60:
print("O'tdingiz")
Xato xabari
IndentationError: expected an indented block after 'if' statement on line 2 (<kitob>, line 3)
python3 qator
ball = 72
if ball >= 60
    print("O'tdingiz")
Xato xabari
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

python5 qator
ball = int(input("Ball: "))
if ball >= 60:
    print("O'tdingiz")
else:
    print("Afsus, qayta topshirasiz")
Natija
Ball: 45
Afsus, qayta topshirasiz

if-else da ikki yo'ldan aynan bittasi bajariladi.

Juft yoki toq

3-bobdagi % 2 endi qaror qabul qiladi:

python5 qator
n = int(input("Son: "))
if n % 2 == 0:
    print(n, "juft")
else:
    print(n, "toq")
Natija
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.

python10 qator
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)
Natija
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

python8 qator
ball = int(input("Ball: "))
if ball >= 56:
    baho = 3
elif ball >= 71:
    baho = 4
elif ball >= 86:
    baho = 5
print("Baho:", baho)
Natija
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:

python9 qator
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")
Natija
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:

python5 qator
ism = input("Ism: ").strip()
if ism:
    print(f"Salom, {ism}!")
else:
    print("Ism kiritilmadi")
Natija
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:

python6 qator
matn = input("Yoshingiz: ")
if matn.isdigit():
    yosh = int(matn)
    print("Keyingi yil", yosh + 1, "yoshda bo'lasiz")
else:
    print("Iltimos, faqat raqam kiriting")
Natija
Yoshingiz: yigirma
Iltimos, faqat raqam kiriting
python6 qator
a = float(input("a = "))
b = float(input("b = "))
if b == 0:
    print("Nolga bo'lib bo'lmaydi")
else:
    print("a / b =", a / b)
Natija
a = 8
b = 0
Nolga bo'lib bo'lmaydi

Qisqa if: bitta qatorda

Ikki qiymatdan birini tanlash uchun qisqa shakl bor:

python3 qator
yosh = 16
holat = "kattalar" if yosh >= 18 else "bolalar"
print(holat)
Natija
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:

python18 qator
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})")
Natija
a = 1
b = 2
c = 5
Haqiqiy ildiz yo'q (D = -16.0)
python18 qator
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})")
Natija
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/False beradi; = bog'laydi, == solishtiradi.
  • and — ikkalasi, or — kamida bittasi, not — teskarisi. x == 1 or x == 2 deb to'liq yozing.
  • if shart: dan keyin 4 probel chekinish; : ni unutmang.
  • elif zanjirida 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).

Boolean1

Butun son A berilgan. "A musbat son" degan gapning rostligini tekshiring.

KirishKutilgan natija
5True
0False
-3False
Yechimni ko'rish
python2 qator
a = int(input())
print(a > 0)
Boolean2

Butun son A berilgan. "A toq son" degan gapning rostligini tekshiring.

KirishKutilgan natija
7True
10False
-3True
Yechimni ko'rish
python2 qator
a = int(input())
print(a % 2 == 1)
Boolean4

Butun sonlar A va B berilgan. "A > 2 va B ≤ 3" degan gapning rostligini tekshiring.

KirishKutilgan natija
5, 3True
5, 4False
2, 1False
Yechimni ko'rish
python3 qator
a = int(input())
b = int(input())
print(a > 2 and b <= 3)
Boolean6

Butun sonlar A, B, C berilgan. "A < B < C" degan gapning rostligini tekshiring.

KirishKutilgan natija
1, 2, 3True
1, 3, 2False
2, 2, 3False
Yechimni ko'rish
python4 qator
a = int(input())
b = int(input())
c = int(input())
print(a < b < c)
Boolean8

Butun sonlar A va B berilgan. "A va B ikkalasi ham toq" degan gapning rostligini tekshiring.

KirishKutilgan natija
3, 5True
3, 4False
2, 4False
Yechimni ko'rish
python3 qator
a = int(input())
b = int(input())
print(a % 2 == 1 and b % 2 == 1)
Boolean16

Butun son A berilgan. "A — musbat, juft, ikki xonali son" degan gapning rostligini tekshiring.

KirishKutilgan natija
24True
25False
124False
Yechimni ko'rish
python2 qator
a = int(input())
print(10 <= a <= 99 and a % 2 == 0)
Boolean20

Musbat uch xonali son berilgan. "Uning hamma raqamlari har xil" degan gapning rostligini tekshiring.

KirishKutilgan natija
123True
121False
555False
Yechimni ko'rish
python5 qator
n = int(input())
a = n // 100
b = n // 10 % 10
c = n % 10
print(a != b and b != c and a != c)
If1

Butun son berilgan. U musbat bo'lsa, unga 1 qo'shing, aks holda o'zgartirmang. Natijani chiqaring.

KirishKutilgan natija
56
00
-4-4
Yechimni ko'rish
python4 qator
n = int(input())
if n > 0:
    n += 1
print(n)
If2

Butun son berilgan. U musbat bo'lsa, unga 1 qo'shing, aks holda undan 2 ni ayiring. Natijani chiqaring.

KirishKutilgan natija
56
0-2
-4-6
Yechimni ko'rish
python6 qator
n = int(input())
if n > 0:
    n += 1
else:
    n -= 2
print(n)
If3

Butun son berilgan. U musbat bo'lsa — 1 qo'shing, manfiy bo'lsa — 2 ni ayiring, nol bo'lsa — 10 ga almashtiring. Natijani chiqaring.

KirishKutilgan natija
56
010
-4-6
Yechimni ko'rish
python8 qator
n = int(input())
if n > 0:
    n += 1
elif n < 0:
    n -= 2
else:
    n = 10
print(n)
If6

Ikkita son berilgan. Kattasini chiqaring. (max() ishlatmang, if bilan yeching.)

KirishKutilgan natija
3, 88
8, 38
-1, -5-1
Yechimni ko'rish
python6 qator
a = float(input())
b = float(input())
if a > b:
    print(a)
else:
    print(b)
If8

Ikkita son berilgan. Avval kattasini, keyin kichigini chiqaring.

KirishKutilgan natija
3, 88 3
8, 38 3
5, 55 5
Yechimni ko'rish
python6 qator
a = float(input())
b = float(input())
if a > b:
    print(a, b)
else:
    print(b, a)
If12

Uchta son berilgan. Eng kichigini chiqaring (min() ishlatmang).

KirishKutilgan natija
3, 1, 21
5, 7, 95
4, 4, -1-1
Yechimni ko'rish
python9 qator
a = float(input())
b = float(input())
c = float(input())
eng = a
if b < eng:
    eng = b
if c < eng:
    eng = c
print(eng)
If15

Uchta son berilgan. Ulardan ikkita kattasining yig'indisini chiqaring.

KirishKutilgan natija
1, 2, 35
5, 1, 49
2, 8, 210
Yechimni ko'rish
python9 qator
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)
6.1

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.

KirishKutilgan natija
925
714
563
Yechimni ko'rish
python11 qator
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)
6.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.

KirishKutilgan natija
2024Kabisa
2026Oddiy
1900Oddiy
Yechimni ko'rish
python5 qator
y = int(input())
if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0:
    print("Kabisa")
else:
    print("Oddiy")
6.3

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.

KirishKutilgan natija
1, -5, 62 3
1, -6, 93
1, 2, 5Ildiz yo'q
Yechimni ko'rish
python13 qator
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.

Telegramda yozish Narxlar