Python Условни изрази: IF…Else, ELIF & Switch Case

⚡ Умно обобщение

Python Условните оператори насочват потока на програмата, като изпълняват специфични кодови блокове само когато булеви изрази се оценят като true. Те включват if, else, elif, вложен if, тернарен оператор и структурно съпоставяне на шаблони за чиста, ориентирана към решения логика.

  • Основна концепция: Изразът if изпълнява своя отстъпен блок само когато условието е истина, формирайки основата за вземане на решения в Python.
  • Алтернативи за обработка: Добавете else за резервен път и elif за тестване на допълнителни условия последователно без дълбоко влагане.
  • Избягвайте логически грешки: Използвайте единична верига if-elif-else, вместо независими if оператори, когато трябва да се приложи точно един резултат.
  • Пишете кратко Code: Приложете троичния израз value_if_true if условие else value_if_false, за да присвоите стойност в един четлив ред.
  • Модерно разклоняване: Заменете дългите вериги elif с речникова картаping или операторът за съвпадение на случаите, въведен в Python 3.10 за по-чист многопосочен избор.

Python Условни изявления

Какво представляват условните изрази Python?

Условни изрази в Python извършват различни изчисления или действия в зависимост от това дали дадено булево ограничение се оценява като истина или неистина. Те позволяват на програмата да взема решения и да следва различни пътища, вместо да изпълнява всеки ред последователно. В Python, условните оператори се обработват от if оператор и неговите съпътстващи оператори: else, elif и вложени if.

Какво е Python Ако изявление?

- Python if изявление се използва за операции за вземане на решения. Съдържа набор от код, който се изпълнява само когато условието, дадено в оператора if, е вярно. Ако условието е невярно, се изпълнява опционалният оператор else, който съдържа кода за условието else. Когато искате да действате по едно условие, докато друго не е вярно, използвате Python оператор if-else.

Python Синтаксис на израза if:

if expression:
    statement
else:
    statement

Python if… else Блок-схема

Python блок-схема if…else, показваща true и false клоновете

Блок-схемата по-горе показва как управлението протича чрез if-else оператор. Нека видим пример за Python if-else оператор в действие:

Python примерен изход на if оператор в редактора

# Example file for working with conditional statements
def main():
    x, y = 2, 8
    if(x < y):
        st = "x is less than y"
    print(st)

if __name__ == "__main__":
    main()
  • Code Ред 3: Дефинираме две променливи x, y = 2, 8.
  • Code Ред 4: Изразът if проверява условието x < y, което е Вярно в такъв случай.
  • Code Ред 5: Променливата st е зададена на „x е по-малко от y“.
  • Code Ред 6: Редът print(st) извежда стойността на st, която е „x е по-малко от y“.

Какво се случва, когато условието „ако“ не е изпълнено

Надграждайки върху предишния пример, нека видим какво се случва, когато условието if в Python не е изпълнено. Когато условието е невярно и не съществува клон else, кодът с отстъп се пропуска изцяло.

Python грешка, когато условието if не е изпълнено

# Example file for working with conditional statements
def main():
    x, y = 8, 4
    if(x < y):
        st = "x is less than y"
    print(st)

if __name__ == "__main__":
    main()
  • Code Ред 3: Дефинираме две променливи x, y = 8, 4.
  • Code Ред 4: Изразът if проверява условието x < y, което е Фалшив в такъв случай.
  • Code Ред 5: Променливата st е НЕ настроен на „x е по-малко от y“.
  • Code Ред 6: Редът print(st) се опитва да отпечата променлива, която никога не е била декларирана, така че Python повдига NameError.
⚠ Предупреждение: Препращането към променлива, която е присвоена само вътре в if блок, е често срещана грешка за начинаещи. Или осигурете else клон, или дайте на променливата стойност по подразбиране преди if оператора.

Как да използваме условието „else“

За да избегнете горната грешка, можете да добавите условие else. Условието else се използва, когато трябва да прецените едно твърдение въз основа на друго. Ако едно условие е невярно, блокът else предоставя алтернативен път, така че програмата все пак да генерира резултат.

Пример:

Python пример за условие if-else

# Example file for working with conditional statements
def main():
    x, y = 8, 4
    if(x < y):
        st = "x is less than y"
    else:
        st = "x is greater than y"
    print(st)

if __name__ == "__main__":
    main()
  • Code Ред 3: Дефинираме две променливи x, y = 8, 4.
  • Code Ред 4: Изразът if проверява условието x < y, което е Фалшив в такъв случай.
  • Code Ред 6: Потокът от програмен контрол отива към условието else.
  • Code Ред 7: Променливата st е зададена на „x е по-голяма отколкото y."
  • Code Ред 8: Редът print(st) извежда стойността на st, която е „x е по-голямо от y“.

Когато условието „иначе“ не работи

Условието else не винаги ще ви даде желания резултат. То може да отпечата грешен изход, когато има недостатък в логиката на програмата. Това обикновено се случва, когато трябва да обосновете повече от две твърдения или условия в една програма. Един пример ще ви помогне да разберете тази концепция.

Тук и двете променливи са еднакви (8, 8), но изходът на програмата е „x е по-голямо от y“ , което е ГРЕШНОТова се случва, защото програмата проверява първото условие (условието if) и когато то е неуспешно, отпечатва второто условие (условието else) като условие по подразбиране. В следващата стъпка ще видим как да коригираме тази грешка.

Python в противен случай условието ще доведе до грешен резултат

# Example file for working with conditional statements
def main():
    x, y = 8, 8
    if(x < y):
        st = "x is less than y"
    else:
        st = "x is greater than y"
    print(st)

if __name__ == "__main__":
    main()

Как да използваме условието „elif“

За да коригираме предишната грешка, допусната от условието else, можем да използваме Елиф оператор. Чрез използване на условието elif, вие казвате на програмата да тества трета възможност, когато първото условие е невярно. Можете да свържете множество elif условия, за да проверите за четвърта, пета и следващи възможности във вашия код.

Пример:

Python пример за условие elif

# Example file for working with conditional statements
def main():
    x, y = 8, 8
    if(x < y):
        st = "x is less than y"
    elif(x == y):
        st = "x is same as y"
    else:
        st = "x is greater than y"
    print(st)

if __name__ == "__main__":
    main()
  • Code Ред 3: Дефинираме две променливи x, y = 8, 8.
  • Code Ред 4: Изразът if проверява условието x < y, което е Фалшив в такъв случай.
  • Code Ред 6: Потокът от управление на програмата отива към условието elif. Проверява се дали x == y, което е вярно.
  • Code Ред 7: Променливата st е зададена на „x е същите като г.”
  • Code Ред 10: Програмният контрол излиза от if оператора (няма да достигне до else оператора) и отпечатва st. Изходът е „x е същото като y“, което е правилно.

Как да изпълним условно изявление с Minimal Code

Сега, след като можете да пишете пълни if-elif-else блокове, Python ви позволява да кондензирате просто условие в един ред. Вместо да пишете отделен код за всеки клон, можете да използвате троичен (условен) израз.

Синтаксис:

value_if_true if condition else value_if_false

Пример:

Python пример за едноредово троично условно изречение

def main():
    x, y = 10, 8
    st = "x is less than y" if (x < y) else "x is greater than or equal to y"
    print(st)

if __name__ == "__main__":
    main()
  • Code Ред 2: Дефинираме две променливи x, y = 10, 8.
  • Code Ред 3: Променливата st се задава на „x е по-малко от y“, ако x < y; в противен случай става „x е по-голямо или равно на y“. Тъй като тук x > y, st става втората стойност.
  • Code Ред 4: Отпечатва стойността на st и дава правилния изход.

Python Вложен оператор if

Вложен if оператор поставя един if оператор вътре в друг, което е полезно, когато решението зависи от второ условие. Следващият пример демонстрира вложен if оператор в Python който изчислява корабаping цена въз основа на държавата и общата сума на поръчката.

total = 100
# country = "US"
country = "AU"

if country == "US":
    if total <= 50:
        print("Shipping Cost is $50")
    elif total <= 100:
        print("Shipping Cost is $25")
    elif total <= 150:
        print("Shipping Cost is $5")
    else:
        print("FREE")

if country == "AU":
    if total <= 50:
        print("Shipping Cost is $100")
    else:
        print("FREE")

Разкоментирайте ред 2 в горния код, коментирайте ред 3 и изпълнете кода отново, за да видите как се променя резултатът за различна държава.

Превключете Case Statement в Python

Какво е оператор за превключване?

Операторът switch е многопосочен оператор за разклонение, който сравнява стойността на променлива със стойностите, посочени в операторите case. В продължение на много години Python езикът нямаше оператор switch, така че разработчиците имплементираха същото поведение с Python речник картаping.

Пример с използване на речникова картаping:

def switch_example(argument):
    switcher = {
        0: "This is Case Zero",
        1: "This is Case One",
        2: "This is Case Two",
    }
    return switcher.get(argument, "nothing")

if __name__ == "__main__":
    argument = 1
    print(switch_example(argument))

Сменяем калъф със съвпадение (Python 3.10 и Later)

Тъй като Python 3.10 (издадена през октомври 2021 г.), Python предоставя местен кибритена кутия оператор, известен като структурно съпоставяне на шаблони. Той предлага чиста и четлива алтернатива на дългите elif вериги и речниковия подход, показан по-горе.

def switch_example(argument):
    match argument:
        case 0:
            return "This is Case Zero"
        case 1:
            return "This is Case One"
        case 2:
            return "This is Case Two"
        case _:
            return "nothing"

if __name__ == "__main__":
    print(switch_example(1))

Долната черта (_) действа като регистър по подразбиране, съответстващ на всяка стойност, която не се обработва от по-ранните регистъри, точно както по подразбиране в традиционния оператор switch.

✅ Съвет: Използвайте съвпадение на главни и малки части, ако сте на Python 3.10 или по-нова версия. За по-стари версии, речникова картаping остава стандартният начин за емулиране на оператор switch.

if срещу elif срещу else: Бързо сравнение

Използвайте това сравнение, за да определите коя условна структура отговаря на вашата логика за вземане на решения.

ИзявлениеЦелКога да използвате
ifИзпълнява блок, когато условието е вярноЕднократно решение „да“/„не“
ако…иначеОсигурява резервен вариант, когато условието е невярноДва взаимно изключващи се резултата
ЕлифТества допълнителни условия последователноТри или повече възможности
Вложено акоПоставя if вътре в друг ifРешение, което зависи от второ условие
ТройнаКондензира if-else в един редПросто присвояване на стойност
кибритена кутияСъпоставя стойност с много шаблониМногопосочно разклоняване (Python 3.10 +)
⚠ Забележка: Python 2 достигна края на жизнения си цикъл на 1 януари 2020 г. и всички примери в тази статия използват Python 3 синтаксис. В Python 2, print беше оператор (например, print st), а не функция, така че горният код няма да се изпълни непроменен на Python 2.

Въпроси и Отговори

Изразът if стартира вземане на решение и винаги се оценява. Elif (иначе-if) се проверява само когато предходните условия if или elif са неверни, което ви позволява да тествате няколко възможности в една верига, докато се изпълнява точно един блок.

Да. Откакто Python 3.10, операторът match-case осигурява вградено разклоняване в стил switch чрез структурно съпоставяне на шаблони. В по-стари версии разработчиците емулират switch, използвайки речникова карта.ping с метода get() за предоставяне на стойност по подразбиране.

Използвайте тернарен израз: стойност_ако_е_вярно if условие else стойност_ако_невярно. Например, st = „ниск��“ if x < 10 else „високо“ присвоява стойност в един четлив ред без пълен if-else блок.

Да. Асистентите за кодиране с изкуствен интелект могат да генерират, обясняват и отстраняват грешки в if-elif-else логиката от команден ред на разбираем език. Те са полезни за обучение, но все пак трябва да прегледате резултата, за да потвърдите, че условията и отстъпите съответстват на желаната от вас логика.

Да. Условната логика е фундаментална за изкуствения интелект. Дърветата на решенията, системите, базирани на правила, и каналите за предварителна обработка на данни разчитат на разклоняване „ако-иначе“, за да избират действия, да филтрират данни и да контролират как моделът обработва различни входни данни.

Обобщете тази публикация с: