Гузариш ба мундариҷа
Мавзӯи 4 аз 18

Шартҳо

То ҳол барнома ҳамаи фармонҳоро паси ҳам иҷро мекард. Вале аксар вақт вобаста ба маълумот бояд гуногун амал кард: агар адад манфӣ бошад — як кор, вагарна — кори дигар. Барои ин шартҳо ҳастанд.

Муқоисаҳо

Муқоиса қимати мантиқӣ медиҳад — True (дуруст) ё False (нодуруст). Ин навъи bool аст.

Навишт Маъно
a == b баробар
a != b баробар нест
a < b, a > b хурдтар, калонтар
a <= b, a >= b хурдтар ё баробар, калонтар ё баробар
print(5 > 3)        # True
print(2 == 3)       # False
print(10 != 4)      # True

Диққат: = қиматро ба тағйирёбанда менависад, == бошад муқоиса мекунад. Омехта кардани онҳо хатои маъмул аст.

Python мисли математика занҷираи муқоисаҳоро медонад:

t = 25
print(18 <= t <= 30)   # True — t байни 18 ва 30 аст

if — агар

temperature = int(input())
if temperature < 0:
    print("Сармо")
print("Тайёр")

Сатрҳое, ки ба if тааллуқ доранд, бо фосилаи дохилӣ (отступ) — чор фосила — навишта мешаванд. Отступ ба Python нишон медиҳад, ки кадом фармонҳоро танҳо ҳангоми дуруст будани шарт иҷро кардан лозим аст. print("Тайёр") бе отступ дар ҳама ҳолат иҷро мешавад.

Пас аз шарт ҳатман дунуқта : гузошта мешавад.

else — вагарна

n = int(input())
if n % 2 == 0:
    print("ҷуфт")
else:
    print("тоқ")

Маҳз яке аз ду шоха иҷро мешавад.

elif — вагарна агар

Вақте вариантҳо аз ду зиёд бошанд, elif-ро истифода мебаранд:

score = int(input())
if score >= 90:
    print("аъло")
elif score >= 70:
    print("хуб")
elif score >= 50:
    print("қаноатбахш")
else:
    print("боз кӯшиш кун")

Шартҳо аз боло ба поён санҷида мешаванд, ва танҳо шохаи аввалини мувофиқ иҷро мешавад. Барои score = 95 ҳам шарти аввал ва ҳам дуюм мувофиқанд, вале танҳо аввалӣ кор мекунад. Бинобар ин тартиби санҷишҳо муҳим аст.

and, or, not

Шартҳоро омехтан мумкин аст:

  • A and B — дуруст аст, агар ҳарду дуруст бошанд;
  • A or B — дуруст аст, агар ақаллан яке дуруст бошад;
  • not A — баръакс мекунад: дурустро нодуруст ва баръакс.
age = 15
has_ticket = True

if age >= 12 and has_ticket:
    print("Марҳамат, дароед")

day = "шб"
if day == "шб" or day == "яш":
    print("Рӯзи истироҳат")

if not has_ticket:
    print("Чипта харед")

and пеш аз or иҷро мешавад. Агар дар шарт ҳардуяш бошад, қавс гузор, то саргум нашавӣ:

if (a > 0 and b > 0) or c == 0:
    ...

Шартҳои дарунӣ

Дар дохили як шоха метавонад if-и дигар бо отступи худ бошад:

x = int(input())
if x != 0:
    if x > 0:
        print("мусбат")
    else:
        print("манфӣ")
else:
    print("сифр")

Аксар вақт шартҳои даруниро бо elif ё and иваз кардан мумкин аст — ин тавр код осонтар хонда мешавад.

Модули фарқ

Вақте танҳо масофа байни ададҳо муҳим аст, на самт, abs кумак мекунад:

a, b = map(int, input().split())
if abs(a - b) <= 1:
    print("қариб баробар")

Ҷавобҳои YES / NO

Дар масъалаҳои олимпиадӣ ҷавоб аксар вақт YES ё NO аст. Онҳоро маҳз ҳамон тавре чоп кун, ки дар шарт навишта шудааст: бо ҳарфҳои калони лотинӣ, бе нуқта ва фосила.

Хатоҳои маъмул

  • пас аз шарт дунуқтаро фаромӯш карданд → SyntaxError;
  • отступҳои гуногун дар дохили як шоха → IndentationError;
  • if x = 5: ба ҷои if x == 5: → SyntaxError;
  • if x == 1 or 2: — ин тавр «x ба 1 ё 2 баробар аст»-ро санҷидан мумкин нест. Дуруст: if x == 1 or x == 2:.

Хулоса

  • муқоисаҳои == != < > <= >= True ё False медиҳанд;
  • if / elif / else шартҳоро аз боло ба поён санҷида, шохаро интихоб мекунанд;
  • отступи 4 фосила нишон медиҳад, ки кадом фармонҳо дар дохили шоха ҳастанд;
  • and, or, not шартҳоро муттаҳид мекунанд, қавсҳо барои хато накардан кумак мекунанд.