# 5.3. Conditional Statements¶

## 5.3.1. Positive and Negative Values¶

Negative values:

• empty bool() or False

• empty int() or 0

• empty float() or 0.0

• empty complex() or 0+0j or 0.0+0.0j

• empty str() or ''

• empty tuple() or ()

• empty list() or []

• empty set()

• empty frozenset()

• empty dict() or {}

• None

Positive values:

• any other

## 5.3.2. Conditional Statement¶

Listing 5.17. if generic syntax
if <condition>:
<do something>

Listing 5.18. Single line statements
if True:
print('First line of the true statement')

# First line of the true statement

Listing 5.19. 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')

# First line of the true statement
# Second line of the true statement
# Third line of the true statement

Listing 5.20. Multiline blocks
if True:
print('First line of the true statement')
print('Second line of the true statement')

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

# First line of the true statement
# Second line of the true statement
# First line of inner true statement

Listing 5.21. Checking for simple value
age = 7

if age == 7:
print('Go to school')

# Go to school

Listing 5.22. Checking for simple value.
country = 'USA'

if country == 'USA':
job = 'astronaut'

print(job)
# astronaut

Listing 5.23. Checking for simple value
number = 4

if number % 2 == 0:
print('Even')

# Even

Listing 5.24. Checking if value is in range
age = 7

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

# Age is between [0, 18)

Listing 5.25. Checking if value is in range
a = 10
b = 100

if 0 <= a <= 50 < b:
print('Yes')

# Yes

Listing 5.26. Checking if has value
name = input('What is your name?: ')
# What is your name?: Jan Twardowski<ENTER>

if name:
print(f'My name is... {name}')

# My name is Jan Twardowski

Listing 5.27. Checking if has value
name = input('What is your name?: ')
# What is your name?: <ENTER>

if name:
print(f'My name... {name}')


## 5.3.3. Unconditional Alternative¶

• Optional

• Executed when condition is not met

Listing 5.28. else generic syntax
if <condition>:
<do something>
else:
<do something>

Listing 5.29. Single line statements
if True:
print('True statement')
else:
print('Else statement')

# True statement

Listing 5.30. Multiline blocks
if True:
print('True statement, first line')
print('True statement, second line')
else:
print('Else statement, first line')
print('Else statement, second line')

# True statement, first line
# True statement, second line

Listing 5.31. Nested multiline blocks
if True:
print('Outer block, true statement, first line')
print('Outer block, true statement, second line')

if True:
print('Inner block, true statement, first line')
print('Inner block, true statement, second line')
else:
print('Inner block, else statement, fist line')
print('Inner block, else statement, second line')

else:
print('Outer block, else statement, first line')
print('Outer block, else statement, second line')

# Outer block, true statement, first line
# Outer block, true statement, second line
# Inner block, true statement, first line
# Inner block, true statement, second line

number = 3

if number % 2 == 0:
print('Even')
else:
print('Odd')

# Odd

Listing 5.32. Checking if variable is certain value
country = 'Russia'

if country == 'USA':
job = 'astronaut'
else:
job = 'cosmonaut'

print(job)
# cosmonaut

Listing 5.33. Checking if variable is certain value
name = input('What is your name?: ')
# What is your name?: <ENTER>

if name:
print(f'My name is... {name}')
else:
print('Did you forget to type your name?')

# Did you forget to type your name?

data = [True, False, True]

if any(data):
print('Yes')
else:
print('No')

# Yes

data = [True, False, True]

if all(data):
print('Yes')
else:
print('No')

# No


## 5.3.4. Conditional Alternative¶

• Used to check for additional condition if first is not met

• In other languages is known as else if

Listing 5.34. elif generic syntax
if <condition>:
<do something>
elif <condition>:
<do something>
else:
<do something>

language = input('What is your language?: ')
# What is your language?: Polish<ENTER>

if language == 'English':
print('Hello')
elif language == 'Russian':
print('Здравствуйте')
elif language == 'German':
print('Guten Tag')
elif language == 'Polish':
print('Witaj')
else:
print("I don't speak this language")

# Witaj


## 5.3.5. Shorthand Expressions¶

number = 3
is_even = (number % 2 == 0 )

print(is_even)
# False

number = 3
is_digit = (number in range(0,10))

print(is_digit)
# True


## 5.3.6. Conditional Expression¶

number = 3

if number in range(0,10):
is_digit = True
else:
is_digit = False

print(is_digit)
# True

number = 3
is_digit = True if number in range(0,10) else False

print(is_digit)
# True

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

print(protocol)
# IPv4

Listing 5.35. Normal if
country = 'Russia'

if country == 'USA':
job = 'astronaut'
else:
job = 'cosmonaut'

print(job)
# cosmonaut

Listing 5.36. Inline if
country = 'Russia'
job = 'astronaut' if country == 'USA' else 'cosmonaut'

print(job)
# astronaut

Listing 5.37. Is Numeric
age = input('What is your age?: ')
# What is your age?: 10<ENTER>

age = float(age) if age.isnumeric() else None
print(age)
# 10.0


## 5.3.7. Switch¶

• No switch statement in Python!

• switch in Object Oriented Programming is considered a bad practise

• PEP 275

switch = {
'English': 'Hello',
'Russian': 'Здравствуйте',
'German': 'Guten Tag',
'Polish': 'Witaj',
'default': "I don't speak this language"}

language = input('What is your language?: ')
# What is your language?: French<ENTER>

switch.get(language, switch['default'])
# "I don't speak this language"

def switch(key):
data = {
'English': 'Hello',
'Russian': 'Здравствуйте',
'German': 'Guten Tag',
'Polish': 'Witaj',
'default': "I don't speak this language"}
return data.get(language, data['default'])

switch('Russian')
# 'Здравствуйте'

switch('French')
# "I don't speak this language"


## 5.3.8. Assignments¶

### 5.3.8.1. Conditional Statements¶

• Assignment name: Conditional Statements

• Last update: 2020-10-01

• Complexity level: easy

• Lines of code to write: 6 lines

• Estimated time of completion: 3 min

English
1. Ask user to input age

2. User will pass only valid int

3. Print whether user is adult

Polish
1. Poproś użytkownika o wprowadzenie swojego wieku

2. Użytkownika poda tylko poprawne int

3. Wypisz czy użytkownik jest pełnoletni

The whys and wherefores