2. Composite statements

2.1. Complex expressions

2.1.1. and

first_name = 'José'
last_name = 'Jiménez'

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

2.1.2. or

first_name = 'José'
last_name = 'Jiménez'

if first_name == 'José' or first_name == 'Max':
    print('Your name is José or Max')
else:
    print('Your name is different')

2.1.3. and and or

  • Use parenthesis for explicit order

first_name = 'José'
last_name = 'Jiménez'

if (first_name == 'José' and last_name == 'Jiménez')
        or (first_name == 'Mark' and last_name == 'Watney'):
    print('Your name is José Jiménez or Mark Watney')
else:
    print('Your name is different')

2.2. Good practice

2.2.1. Complex conditions

for line in file:
    if line and not line.startswith('#') and not line.isspace():
        ...

2.2.2. Defining exit conditions first

for line in file:
    if line.startswith('#'):
        continue

    if line.isspace():
        continue

    ...

2.3. Control Statements

2.3.1. in with tuple, dict, list, set

  • in checks whether value is in collection

  • works with tuple, dict, list, set

usernames = {'José Jiménez', 'Jan Twardowski', 'Mark Watney'}

if 'José Jiménez' in usernames:
    print(True)
else:
    print(False)

2.3.2. in with str

  • in checks whether str is a part of another str

text = 'My name... José Jiménez'

if 'José' in text:
    print(True)
else:
    print(False)

2.3.3. not

  • not negates (logically inverts) condition

name = None

if not name:
    print('Name is not defined')
usernames = {'José', 'Max', 'Иван'}

if 'José' not in usernames:
    print('Not found')

2.3.4. is

name = None

if name is None:
    print('Name is not defined')
name = None

if name is not None:
    print(name)

2.4. Assignments

2.4.1. Classification of blood pressure in adults

  1. Poniższa tabelka przedstawia klasyfikację ciśnienia krwi, wg. American Heart Association

  2. Użytkownik wprowadza ciśnienie w formacie XXX/YY, gdzie:

    • XXX to wartość ciśnienia skurczowego (ang. systolic)

    • YY to wartość ciśnienia rozkurczowego (ang. diastolic)

  3. Daj informację użytkownikowi o klasyfikacji ciśnienia

  4. W przypadku gdy wartości ciśnienia skurczowego i ciśnienia rozkurczowego należą do różnych kategorii, należy przyjąć kategorię wyższą

Table 17. Classification of blood pressure in adults [Weal18]

Blood Pressure Category

Systolic [mm Hg]

Operator

Diastolic [mm Hg]

Normal

Less than 120

and

Less than 80

Elevated

120-129

and

Less than 80

Hypertension stage 1

130-139

or

80-89

Hypertension stage 2

140 or higher

or

90 or higher

Hypertensive Crisis

Higher than 180

and/or

Higher than 120

The whys and wherefores
  • Wczytywanie ciągu znaków od użytkownika

  • Rzutowanie i konwersja typów

  • Instrukcje warunkowe

  • Złożone instrukcje warunkowe

  • Sprawdzanie przypadków brzegowych (niekompatybilne argumenty)

  • Definiowanie zmiennych i stałych w programie