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 • Relational operators: ==, !=, <, >, <=, >= • Boolean operators: and, or, not 4. More on Functions 5. Short circuiting 6. Nesting 2
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
Bool Boolean Expression ons • Expressions that evaluate to True or False (1 + 6) < (2 + 5) • A) True • B) False • C) Raises an error 4
if st statements (c (condi nditiona nally e y execut cute c code de bl block cks) s) What does this code print? x = 1 a) 1 if x < 7: b) 7 print(x) c) 1 print(7) 7 a) Something else b) An error occurs 5
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
if/else st statements What does this code print? x = 2 a) 0 if x > 8: b) 8 x = x - 2 c) 0 print(x) 8 else: a) Something else print(8) b) An error occurs 7
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
Re Relational and membership operators • Why is there both == and =? What's the difference between the two? When do you use ==, and =? 9
Suppose young is a variable with a Boolean value why does if young == true: not work when if young: does? 10
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
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: Falsy values 12
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”) A) You got an A! B) You got a B! C) You got something else D) More than one of the above 13
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”) A) You got an A! B) You got a B! C) You got something else D) More than one of the above 14
Bool Boolean op operator ors • 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 or • Unary operator: not • Operate on Booleans (or coerce to Booleans) 15
Pr Precedence • I'm still confused about the sequence of the operations when it has both Boolean operators and other kinds of operators. • 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
x==3 or 4 17
An Annou ounce 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
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
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
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
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
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
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
Sh Shor ort 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 is True True or anything() is False False and anything() • 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
Wh What does this program output? print('hello') and print('there') • A) it raises an error • B) hello • C) there • D) hello there • E) it prints nothing, but raises no errors 26
Con Conditi tion onals • 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
Sh Shape of of "d "deci cision on tr tree": ": if w/o 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
Sh Shape of of "d "deci cision on 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
Ch Choos oosing 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
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
Nes Nesting • CS likes composition; indent + indent = nesting 32
Nes Nesting When to use elif and when to use else? I think there should be only 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
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
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
Recommend
More recommend