1. Conditional Statements

1.1. if

  • The same indent level

1.1.1. Simple syntax

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

1.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')

1.1.3. Positive and negative values

Negative values:

  • False

  • None

  • 0

  • 0.0

  • 0+0j

  • 0.0+0.0j

  • empty str() or ''

  • empty tuple() or ()

  • empty dict() or {}

  • empty list() or []

  • empty set()

Positive values:

  • any other

1.1.4. Checking for simple value

name = 'José Jiménez'

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

1.1.5. Checking if value is in range

age = 7

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

1.1.6. Checking if has value

name = None

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

1.2. else

  • Optional

  • Executed when condition is not met

1.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')

1.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')

1.3. Inline if

1.3.1. Normal if

ip = '127.0.0.1'

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

1.3.2. One line version

ip = '127.0.0.1'

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

1.4. elif and switch

1.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')

1.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"

1.5. Assignments

1.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ł int lub float, nie będzie próbował podawać niepoprawnych typów, np. str albo float z przecinkiem zamiast kropki

  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

1.5.2. int and float

  • Filename: ifelse_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