Conditions: if, then, else - Learn Python 3 - Snakify

Lesson 3
Warunki: if-then-else


1. Składnia

Wszystkie programy z pierwszej lekcji zostały wykonane sekwencyjnie, wiersz po wierszu. Żadna linia nie mogła zostać pominięta.

Rozważmy następujący problem: dla danej liczby całkowitej X określ jej wartość bezwzględną. Jeśli X> 0 to program powinien wydrukować wartość X, w przeciwnym razie powinien wydrukować -X. Tego zachowania nie można osiągnąć przy użyciu programu sekwencyjnego. Program powinien warunkowo wybrać następny krok. Właśnie tam warunki pomagają:

x = int(input())
if x > 0:
    print(x)
else:
    print(-x)

Ten program używa instrukcji warunkowej, if . Po tym, if postawimy warunek (x > 0) po dwukropku. Następnie wstawiamy blok instrukcji, które będą wykonywane tylko wtedy, gdy warunek jest prawdziwy (tj. Wartość jest równa True ). Po tym bloku może następować słowo else , dwukropek i inny blok instrukcji, które będą wykonywane tylko wtedy, gdy warunek jest fałszywy (tzn. Wartość False ). W powyższym przypadku warunek jest fałszywy, dlatego wykonywany jest blok "else". Każdy blok powinien być wcięty za pomocą spacji.

Podsumowując, instrukcja warunkowa w Pythonie ma następującą składnię:

if condition :
    true-block
    several instructions that are executed
    if the condition evaluates to True
else:
    false-block
    several instructions that are executed
    if the condition evaluates to False

else kluczowe else z blokiem "false" może zostać pominięte, jeśli nic nie powinno zostać zrobione, jeśli warunek jest fałszywy. Na przykład możemy zastąpić zmienną x jej wartością bezwzględną w następujący sposób:

x = int(input())
if x < 0:
    x = -x
print(x)

W tym przykładzie zmienna x jest przypisana do -x tylko, jeśli x < 0 . Natomiast polecenie print(x) jest wykonywane za każdym razem, ponieważ nie jest wcięte, więc nie należy do "prawdziwego" bloku.

Wcięcie to ogólny sposób w Pythonie do oddzielania bloków kodu. Wszystkie instrukcje w tym samym bloku powinny być wcięte w ten sam sposób, tzn. Powinny mieć taką samą liczbę spacji na początku linii. Zaleca się użycie 4 spacji na wcięcie.

Wcięcie sprawia, że ​​Python różni się od większości innych języków, w których nawiasy klamrowe { i } są używane do tworzenia bloków.

Nawiasem mówiąc, w Pythonie jest wbudowana funkcja wartości bezwzględnej:

x = int(input())
print(abs(x))
Advertising by Google, may be based on your interests

2. Zagnieżdżone warunki

Każda instrukcja Pythona może być umieszczona w blokach "true" i "false", w tym w innej instrukcji warunkowej. W ten sposób uzyskujemy warunki zagnieżdżone. Bloki warunków wewnętrznych są wcięte z użyciem jeszcze dwóch spacji (np. 8 spacji). Zobaczmy przykład. Biorąc pod uwagę współrzędne punktu na płaszczyźnie, wydrukuj jego ćwiartkę.

x = int(input())
y = int(input())
if x > 0:
    if y > 0:
        # x jest większe od 0, y jest większe od 0
        print("Quadrant I")
    else:    
        # x jest większe od 0, y jest mniejsze lub równe 0
        print("Quadrant IV")
else:
    if y > 0:
        # x jest mniejsze lub równe 0, y jest większe niż 0
        print("Quadrant II")
    else:    
        # x jest mniejsze lub równe 0, y jest mniejsze lub równe 0
        print("Quadrant III")

W tym przykładzie wykorzystujemy komentarze: tekst objaśniający, który nie ma wpływu na wykonanie programu. Ten tekst zaczyna się od skrótu # i trwa do końca wiersza.

Advertising by Google, may be based on your interests

3. Operatory porównania

Zwykle warunek po if ma co najmniej jeden z następujących operatorów:

<
mniej - warunek jest prawdziwy, jeśli lewa strona jest mniejsza niż prawa strona.
>
większy - warunek jest prawdziwy, jeśli lewa strona jest większa niż prawa strona.
<=
mniejszy lub równy.
>=
większy lub równy.
==
równy.
!=
nie równe.

Na przykład warunek x * x < 1000 oznacza "wartość wyrażenia x * x jest mniejsza niż 1000", a warunek 2 * x != y oznacza "podwójna wartość zmiennej x nie jest równa wartości zmiennej y ".

Operatory porównania w Pythonie można pogrupować w następujący sposób: a == b == c lub x <= y >= 10 . To rzadkość wśród języków programowania.

Advertising by Google, may be based on your interests

4. Obiekty Bool i operatory logiczne

Kiedy sumujemy dwa obiekty liczb całkowitych za pomocą operatora + , np. 2 + 5 , otrzymujemy nowy obiekt: 7 . W ten sam sposób, gdy porównamy dwie liczby całkowite za pomocą operatora < , np. 2 < 5 , otrzymamy nowy obiekt: True .

print(2 < 5)
print(2 > 5)
Obiekty True i False mają specjalny typ o nazwie bool . Ponieważ każda nazwa typu może być używana do rzutowania obiektów do tego typu, zobaczmy, co ta liczba daje liczbom:
print(bool(-10))    # Prawdziwe
print(bool(0))      # Fałsz - zero jest jedyną liczbą fałszywą
print(bool(10))     # Prawdziwe

print(bool(''))     # False - pusty łańcuch jest jedynym fałszywym ciągiem znaków
print(bool('abc'))  # Prawdziwe

Czasami musisz sprawdzić kilka warunków naraz. Na przykład możesz sprawdzić, czy liczba n jest podzielna przez 2, używając warunku n % 2 == 0 ( n daje resztę 0 przy dzieleniu przez 2 ). Jeśli chcesz sprawdzić, czy dwie liczby n i m są dzielone przez 2, powinieneś sprawdzić zarówno n % 2 == 0 i m % 2 == 0 . Aby to zrobić, łączysz je za pomocą operatora and (logiczne AND): n % 2 == 0 and m % 2 == 0 .

Python ma logiczne AND, logiczne OR i negację.

Operator and jest operatorem binarnym, który ocenia wartość True wtedy i tylko wtedy, gdy zarówno jego lewa strona, jak i prawa strona są True .

Operator or jest operatorem binarnym, który ma wartość True jeśli co najmniej jedna z jego stron ma wartość True .

Operator not jest jednoznaczną negacją, po której następuje pewna wartość. Jest obliczany na True jeśli ta wartość jest False i vice versa.

Sprawdźmy, czy co najmniej jedna z liczb kończy się na 0:

a = int(input())
b = int(input())
if a % 10 == 0 or b % 10 == 0:
    print('YES')
else:
    print('NO')

Sprawdźmy, czy liczba a jest dodatnia, a liczba b jest nieujemna:

if a > 0 and not (b < 0):

Zamiast not (b < 0) możemy pisać (b >= 0) .

Advertising by Google, may be based on your interests

5. słowo "elif"

Jeśli masz więcej niż dwie opcje do rozróżnienia przy użyciu operatora warunkowego, możesz użyć instrukcji if... elif... else .

Pokażmy, jak to działa, przepisując przykład z punktem (x, y) na płaszczyźnie i ćwiartkami z góry:

x = int(input())
y = int(input())
if x > 0 and y > 0:
    print("Quadrant I")
elif x > 0 and y < 0:
    print("Quadrant IV")
elif y > 0:
    print("Quadrant II")
else:
    print("Quadrant III")

W takim przypadku warunki w if i elif są sprawdzane jeden po drugim aż do znalezienia pierwszego prawdziwego warunku. Wtedy wykonywany jest tylko blok true dla tego warunku. Jeśli wszystkie warunki są fałszywe, blok "else" jest wykonywany, jeśli jest obecny.

Advertising by Google, may be based on your interests