CS 105 Lecture 5: Booleans and Conditionals Craig Zilles (Computer - - PowerPoint PPT Presentation

cs 105
SMART_READER_LITE
LIVE PREVIEW

CS 105 Lecture 5: Booleans and Conditionals Craig Zilles (Computer - - PowerPoint PPT Presentation

CS 105 Lecture 5: Booleans and Conditionals Craig Zilles (Computer Science) https://go.illinois.edu/cs105sp19 February 23, 2020 To Today 1. Booleans 2. Simple conditionals if, else, elif 3. Boolean Expressions and Operators


slide-1
SLIDE 1

Lecture 5: Booleans and Conditionals

Craig Zilles (Computer Science) February 23, 2020 https://go.illinois.edu/cs105sp19

CS 105

slide-2
SLIDE 2

To Today

  • 1. Booleans
  • 2. Simple conditionals
  • if, else, elif
  • 3. Boolean Expressions and Operators
  • Relational operators: ==, !=, <, >, <=, >=
  • Boolean operators: and, or, not
  • 4. More on Functions
  • 5. Short circuiting
  • 6. Nesting

2

slide-3
SLIDE 3

Bool Booleans

  • I don't understand what Booleans are and how to use

them, why they're used, etc.

  • They are just another type (like int, string, float)
  • There are two Boolean values: True, False
  • Used for making decisions:
  • Do something or don't do something

3

slide-4
SLIDE 4

Bool Boolean Expression

  • ns
  • Expressions that evaluate to True or False

(1 + 6) < (2 + 5)

  • A) True
  • B) False
  • C) Raises an error

4

slide-5
SLIDE 5

if st statements (c (condi nditiona nally e y execut cute c code de bl block cks) s)

x = 1 if x < 7: print(x) print(7)

5

What does this code print? a) 1 b) 7 c) 1 7 a) Something else b) An error occurs

slide-6
SLIDE 6

In Indentation tion

"I am confused when to use indentation" "I was a bit confused on code blocks. Is hitting the tab key equivilent to hitting the space bar 3 or 4 times? Does it matter which one you use?" "What happens if you mix tabs and spaces in your code?"

6

slide-7
SLIDE 7

if/else st statements

x = 2 if x > 8: x = x - 2 print(x) else: print(8)

7

What does this code print? a) 0 b) 8 c) 0 8 a) Something else b) An error occurs

slide-8
SLIDE 8

if/elif/else st statements

x = 1 if x < 8: print('less than 8') elif x > 20: print('greater than 20') else: print('from 8 to 20') Include as many elifs as you want, between if and else

8

slide-9
SLIDE 9

Re Relational and membership operators

  • Why is there both == and =? What's the difference

between the two? When do you use ==, and =?

9

slide-10
SLIDE 10

Suppose young is a variable with a Boolean value why does if young == true: not work when if young: does?

10

slide-11
SLIDE 11

Re Relational Ops on non-numbe numbers

  • Why lower case letters are greater than upper case

letters?

  • People often normalize case before comparisons

thing1.lower() < thing2.lower()

11

slide-12
SLIDE 12

Tr Truthy and Fa Falsy

  • Python will convert non-Boolean types to Booleans

if "hello":

  • You can force conversion using bool() function.
  • All values are truthy (convert to True) except:

12

Falsy values

slide-13
SLIDE 13

What get ets printed?

grade = 98 if (grade >= 90): print(“You got an A!”) if (grade >= 80): print(“You got a B!”) else: print(“You got something else”)

13

A) You got an A! B) You got a B! C) You got something else D) More than one of the above

slide-14
SLIDE 14

What get ets printed?

grade = 98 if (grade >= 90): print(“You got an A!”) if (grade >= 80 and grade < 90): print(“You got a B!”) else: print(“You got something else”)

14

A) You got an A! B) You got a B! C) You got something else D) More than one of the above

slide-15
SLIDE 15

Bool Boolean op

  • perator
  • rs
  • Why is x==3 or 4 always True? I am still confused

with this concept.

  • "If you've finished your homework and done your chores

then you can go out."

  • Binary operators:

and

  • r
  • Unary operator:

not

  • Operate on Booleans (or coerce to Booleans)

15

slide-16
SLIDE 16

Pr Precedence

  • I'm still confused about the sequence of the operations

when it has both Boolean operators and other kinds of

  • perators.
  • Order of evaluation is confusing. When I was comparing

'and' or 'or' to a symbol, it is hard to tell which one i should evaluate first.

  • Relational operators evaluate before Boolean ops.
  • and evaluates before or

x == 7 and y == 3 or x > 12 and y < -12

  • Avoid relying on operator precedence; use parentheses

16

slide-17
SLIDE 17

x==3 or 4

17

slide-18
SLIDE 18

An Annou

  • unce

cements ts

  • Lab this week: Practice with Functions!!!
  • Exam 1 this week from Thursday - Sunday
  • Do you have a CBTF reservation?
  • Cumulative through HW5 (i.e., lots of overlap w/Quiz1)
  • Practice exam 1 out Tuesday morning (do HW 5 first)
  • Quiz 1: mean = 88%, median = 92%
  • Tutoring encouraged if you got 65% or less

18

slide-19
SLIDE 19

Functions Rev eview ew: Paramet eters, Arguments, Ret eturn Values

def welcome_message(first, last): message = "Welcome " + first + " " + last message += " to CS 105!" return message msg = welcome_message("Harry", "Potter")

19

slide-20
SLIDE 20

Wh What does test(7) re return?

def test(num): if num > 0: return True return False A) True B) False C) first True and then False D) the tuple (True, False) E) an error occurs

20

slide-21
SLIDE 21

Fu Function Composi sition

def f(x): return 3 * x What value is returned by f(f(2))? A) 3 B) 6 C) 9 D) 12 E) 18

21

slide-22
SLIDE 22

No None

  • I don't understand the value of None, and what it means

when you don't have the return statement.

  • Would there ever be a time that we would need a

function to return the value of "none"?

  • Mostly this is important to know because you might do

something like this by accident: x = print("hi there!")

22

slide-23
SLIDE 23

Fu Functions s vs.

  • s. Methods
  • Methods are functions that are part of an object/type
  • They use dot notation
  • For example:

my_list = [0, 1, 2, 3] my_list.append(22)

  • Functions, in contrast:

len(my_list)

23

slide-24
SLIDE 24

Wh What bugs are in the following code?

def add_one(x): return x + 1 x = 2 x = x + add_one(x) A) No bugs. The code is fine. B) The function body is not indented. C) We use x as both a parameter and a variable, but we are not allowed to do that D) Both B and C

24

slide-25
SLIDE 25

Sh Shor

  • rt

t Ci Circu cuiti ting

  • i am confused about the concept of short circuit
  • Python is lazy (which is a good thing if you understand it)
  • It won't evaluate Boolean expressions it doesn't need to

True or anything() is True False and anything() is False

  • Python won't evaluate the anything() part
  • Can use this to avoid running code that would get errors

(len(my_str) > 10) and (my_str[10] == 'a')

25

slide-26
SLIDE 26

Wh What does this program output?

  • A) it raises an error
  • B)
  • C)
  • D)
  • E) it prints nothing, but raises no errors

26

hello there hello there

print('hello') and print('there')

slide-27
SLIDE 27

Con Conditi tion

  • nals
  • I don't understand how each of the components of the

chapter can be used in real world cases. A thing I like to do to help me better grasp the concepts, is imagine them happening in this world. So giving me more mundane scenarios of where we would be using these things would help a lot.

27

slide-28
SLIDE 28

Sh Shape of

  • f "d

"deci cision

  • n tr

tree": ": if w/o

  • else

Asked my TA to send email to all students in the class that didn't take Exam 0.

  • Step 1: make a set of all students that took Exam 0
  • Step 2: check each student in class if in the set

if student in exam0_takers: send_email(student)

28

slide-29
SLIDE 29

Sh Shape of

  • f "d

"deci cision

  • n tr

tree": ": if w/else

Company sends recruiting invitations to students with Python in their resume, sends 'nack' email to others if 'python' in resume.lower(): send_invitation(student) else: send_polite_decline(student)

29

slide-30
SLIDE 30

Ch Choos

  • osing betw

tween many alternati tives

Final exam location based on first letter of netid: [a-j] Loomis 100 [k-o] DCL 1320 [p-z] English 214

first_char = netid.lower()[0] if first_char <= 'j': location = 'Loomis 100' elif first_char <= o: location = 'DCL 1320' else: location = 'English 214'

30

slide-31
SLIDE 31

Mul Multi-wa way branches in general?

If you were choosing between 6 possibilities, what is the fewest elif statements you coud have: A) 1 B) 2 C) 3 D) 4 E) 5

31

slide-32
SLIDE 32

Nes Nesting

  • CS likes composition; indent + indent = nesting

32

slide-33
SLIDE 33

Nes Nesting

When to use elif and when to use else? I think there should be

  • nly 1 else in the whole program but I saw:

if sales_type == 2: if sales_bonus < 5: sales_bonus = 10 else: sales_bonus = sales_bonus + 2 else: sales_bonus = sales_bonus + 1 Can I change the first 'else' into elif?

33

slide-34
SLIDE 34

Ne Next week eek's s rea eading

  • Sometimes we want to execute code multiple times
  • Send email to each student with their exam score
  • For loop: do something to each element of a collection

for val in ['good', '105', 'class']: print(val)

  • Range function: generate lists of numbers

range(6) # -> [0, 1, 2, 3, 4, 5]

  • While loop: not as important as for loop
  • Loop nesting: put a loop inside another loop
  • break & continue: give more control of loops

34

slide-35
SLIDE 35

Te Test often to minimize debugging time

  • Write at most a few lines of code before testing!
  • If you made a mistake, the problem must be in those

few lines

  • Biggest novice mistake: write a lot of code before

testing any of it

  • When it doesn’t work, it takes a long time to find the

bug

35