---
# System prepended metadata

title: 'Lesson 2: Boolean data type + if-else statement'
tags: [Python Workshop 沈煒翔]

---

---
tags: Python Workshop 沈煒翔
---

# Lesson 2: Boolean data type + if-else statement

## Recap

Basic data types in Python

| Data type              | Examples               | Operators      |
|------------------------|------------------------|----------------|
| Integer (int)          | 0, 1, -3, 1000         | +, -, *, /, ** |
| Floating point (float) | 0.0, 5.3, 2e10         |+, -, *, /, **                |
| String (str)           | 'hello', "Hi", "12345" |                |

We can use `type()` to check the data type of the variable
    
```python
a = 5
print(type(a))
#>>> <class 'int'>

b = 15e4 # It means 15 with 4 zeros afterward.
print(b)
#>>> 150000.0
print(type(b))
#>>> <class 'float'>

c = a + 15.3 # Automatically cast to float. Just like real Math.
print(c)
#>>> 20.3
print(type(c))
#>>> <class 'float'>

d = 1 + 5 * 2 # Multiply/divison first, then addition/subtration. Just like proper Math.
print(d)
#>>> 11
print(type(d))
#>>> <class 'int'>

e = 50 / 3 # Also cast to float, like Math.
print(e)
#>>> 16.666666666666668 # some error caused by the precision limit of floating numbers.
print(type(e))
#>>> <class 'float'>
```

You can also change the data type of a variable using **casting**. **Python is a dynamic type language which means programmers should not worry too much about the typing.**

Also, using either int and float would not matter too much in most cases.

## Boolean datatype

It's either `True` or `False`. Only two values in this type.

```python
a = True
print(a)
#>>> True
print(type(a))
#>>> <class 'bool'>

b = False
print(b)
#>>> False
```

### Comparison Operators


| Operator | Meaning                  | Example   | Output |
|----------|--------------------------|-----------|--------|
| ==       | Equal                    | 5 == 3    | False  |
| !=       | Not equal                | 5 != 3    | True   |
| >        | Greater than             | 10.3 > 2  | True   |
| <        | Less than                | 2 < -1    | False  |
| >=       | Greater than or equal to | 5 >= 5    | True   |
| <=       | Less than or equal to    | 5 <= 4    | False  |

### Logical Operators

| Operator | Meaning                               | Example     | Output |
|----------|---------------------------------------|-------------|--------|
| and      | True if both statements are true      | 5<9 and 3<5 | True   |
| or       | True if one of the statements is true | 5<9 or 5>9  | True   |
| not      | Inverse the result                    | not 5<3     | True   |

### Example

```python
iPhone13_price = 22900 
hourly_rate = 150 
work_hour = 300

# We can see if I am able to purchase the iPhone.
print(work_hour * hourly_rate > iPhone13_price)
#>>> True

# However, if I work too much I might die.
max_work_hour = 200
print(work_hour * hourly_rate > iPhone13_price and work_hour < max_work_hour)
#>>> False

# Another factor to consider is that whether I can ask my Dad.
have_dad = True
print(work_hour * hourly_rate > iPhone13_price and work_hour < max_work_hour or have_dad)
# "and" excuted before "or" so this is the same as
print((work_hour * hourly_rate > iPhone13_price and work_hour < max_work_hour) or have_dad)
#>>> True
```

Notice that I use smaller case for variable and use "_" in between words. You should follow my coding style as exact as possible.

## If-else statements

Normally the code is excuted sequentially. If-else statements let you control the flow of your program.

```python
score = 40
if score >= 60:
    print("You passed!")
else:
    print("Come again next year.")
	
#>>> "Come again next year."
```

1. ":" after the condition.
1. Indentation (use four spaces, or tab four spaces!)

Also, you can have multiple different conditions using `elif`

```python
score = 70
if score >= 90:
    print("You got an A+")
    print("Great work")
elif score < 90 and score >= 85:
    print("You got a A.")
elif score < 60:
    print("You failed.")
else:
    print("Passed but try harder.")
```

### Exercise
Calculate how much tax this person have to pay. Assume 5% tax rate for income between [0, 10000], 10% tax rate for income more than 10000.
    
```python
income = 50000

print(5000)
```

Given a score, print the grade for the student.


| Score | Grade |
| -------- | -------- |
| score > 90     | A     |
| 90 >= score > 80     | B     |
| 80 >= score > 60     | C     |
| score < 60     | D     |

Sample inputs

```python
score = 77

print("C")
```

### Nested if-else statements

You can add as many if-else statements as you want. 

```python
iPhone13_price = 22900 
hourly_rate = 150 
work_hour = 100
max_work_hour = 500
have_dad = True

if work_hour > max_work_hour:
    print("Died working too hard")
else:
    print("Your survived and have good kidneys.")
    
    if work_hour * hourly_rate > iPhone13_price:
        print("You bought the iPhone 13.")
    elif have_dad: # this is the same as have_dad == True
        print("Your Dad bought the iPhone for you.")
    else:
	print("No iPhone QQ")

work_hour = work_hour + 10000
```

## Exercises

### Pass exam

You are taking the IELTS exam and there are four tests: reading, writing, listening, speaking test. Among the four tests, you need to have an average not less than 7.5 and none of the tests should be less than 7.0 to pass the exam.

Determine whether this person passes the exam?

```python
test1 = 8
test2 = 7
test3 = 7.5
test4 = 6

print("Didn't pass")
```

### Classifying triangles

We know that a triangle is either acute (銳角), right (直角), or obtuse (鈍角). Acute means that all angles in the triangle are less than 90 degree. Right means that one of the three angles is 90 degree. Obtuse means that one of the three angles is over 90 degree.


Given the length of the three sides of a triangle, determine whether the triangle is acute, right, or obtuse.

Sample inputs:

```python
length_A = 3
length_B = 4
length_C = 4

print("acute triangle")

length_A = 3
length_B = 4
length_C = 5

print("right triangle")

length_A = 3
length_B = 4
length_C = 6

print("obtuse triangle")

length_A = 3
length_B = 4
length_C = 7

print("triangle cannot exist")
```

Sample code:

```python=
# inputs
length_A = 3
length_B = 4
length_C = 5

```

<!-- # Take-home practices -->



### Check military service 

Given the gender, height, weight of a person, determine whether this person needs to join the army.

We know that only boys whose BMI is in between 16.5 and 31.5 need to join the army. 

BMI  = weight (in kg) / height^2 (in m)
BMI = 體重(公斤) / 身高^2 (公尺)

Sample inputs
```python
gender = 'boy'
weight = 100 # in kg
height = 170 # in cm

print("Don't need to join the army")

gender = 'girl'
weight = 70 # in kg
height = 170 # in cm

print("Don't need to join the army")

gender = 'boy'
weight = 70 # in kg
height = 170 # in cm

print("Need to join the army")
```

<!-- ## Calculate maximum discount
There's a pub running a promotion. The price of a bottle of beer is $10. 

1. If you buy more than (including) 10 bottles, you can get 1 bottle for free. 
2. If you buy more than (including) 20 bottles, you can get 2 bottles for free.
3. Either discount (1) and (2) can be used once.

Calculate the price you need to pay when you want to drink certain bottles of beer.

Sample inputs

```python
bottles = 7
print(70)

bottles = 11
print(100) # because 1 bottle is free

bottles = 23
print(210) # because 2 bottles are free

bottles = 20
print(190) # because you buy 19 bottles and gets 1 free

bottles = 21
print(200) # becuase you buy 20 bottles and gets 2 free, so one extra bottle

bottles = 22
print(200)
``` -->