3. Conditional Statements

3.1. if

3.1.1. Simple syntax

if True:
    print('First line of the true statement')

3.1.2. Multiline blocks

if True:
    print('First line of the true statement')
    print('Second line of the true statement')
    print('Third line of the true statement')

3.1.3. Positive and negative values

Negative values:

  • False
  • 0
  • 0.0
  • () - empty tuple
  • {} - empty dict
  • [] - empty list
  • '' - empty str
  • set() - empty set
  • None

Positive values:

  • any other

3.1.4. Checking for simple value

name = 'José Jiménez'

if name == 'José Jiménez':
    print('My name... José Jiménez')

3.1.5. Checking if value is in range

age = 7

if 0 <= age < 18:
    print('Age is between [0, 18)')

3.1.6. Checking if has value

name = None

if name:
    print(f'My name... {name}')
else:
    print('Name is not defined')

3.2. else

  • Optional
  • Executed when condition is not met

3.2.1. Checking if variable is certain value

name = 'José Jiménez'

if name == 'José Jiménez':
    print('My name... José Jiménez')
else:
    print('Your name is different')

3.2.2. Multiline blocks

if True:
    print('First line of the true statement')
    print('Second line of the true statement')
    print('Third line of the true statement')
else:
    print('First line of the false statement')
    print('Second line of the false statement')
    print('Third line of the false statement')

3.3. Inline if

3.3.1. Normal if

ip = '127.0.0.1'

if '.' in ip:
    protocol = 'IPv4'
else:
    protocol = 'IPv6'

3.3.2. One line version

ip = '127.0.0.1'

protocol = 'IPv4' if '.' in ip else 'IPv6'

3.4. elif and switch

3.4.1. elif

  • Used to check for additional condition if first is not met
  • In other languages is known as else if
language = 'Polish'

if language == 'English':
    print('Hello')
elif language == 'Russian':
    print('Здравствуйте')
elif language == 'Germany':
    print('Guten tag!')
elif language == 'Poland':
    print('Witaj!')
else:
    print('I do not speak this language')

3.4.2. No switch statement?!

  • switch in Object Oriented Programming is considered a bad practise
  • PEP 275
switch = {
    'English': 'Hello',
    'Russian': 'Здравствуйте',
    'German': 'Guten Tag',
    'Polish': 'Witaj',
}

language = 'French'
switch.get(language, 'I do not speak this language')
# 'I do not speak this language'
def switch(key):
    return {
        'English': 'Hello',
        'Russian': 'Здравствуйте',
        'German': 'Guten Tag',
        'Polish': 'Witaj',
    }.get(key, 'I do not speak this language')

switch('Russian')       # 'Здравствуйте'
switch('French')        # "Sorry, I don't know"

3.5. Assignments

3.5.1. Conditioning on user input

  • Filename: ifelse_input.py
  • Lines of code to write: 6 lines
  • Estimated time of completion: 5 min
  1. Napisz program, który poprosi użytkownika o wiek
  2. Użytkownik będzie podawał tylko i wyłącznie int lub float
  3. Następnie sprawdzi pełnoletność i wyświetli informację czy osoba jest “dorosła” czy “niepełnoletnia”
The whys and wherefores:
 
  • Wczytywanie ciągu znaków od użytkownika
  • Rzutowanie i konwersja typów
  • Instrukcje warunkowe
  • Sprawdzanie przypadków brzegowych (niekompatybilne argumenty)
  • Definiowanie zmiennych i stałych w programie
  • Magic Number

3.5.2. int and float

  • Filename: operators_integers.py
  • Lines of code to write: 7 lines
  • Estimated time of completion: 10 min
  1. Wczytaj liczbę od użytkownika (poda tylko int albo float)
  2. Wyświetl informację czy jest to liczba całkowita, czy niecałkowita.
The whys and wherefores:
 
  • wczytywanie ciągu znaków od użytkownika
  • weryfikacja ciągu wprowadzonego od użytkownika
  • konwersja typów i rzutowanie
Hints:
  • Liczba całkowita to taka, której część dziesiętna nie występuje lub jest równa zero.
  • Możesz to sprawdzić dzieląc liczbę z resztą przez 1 i sprawdzając resztę z dzielenia.
  • Zwróć uywagę, że input() zawsze zwraca str wiec trzeba rzutowac na int, ale wtedy tracimy informację czy wczesniej mielismy float