CS 105 Lecture 4: Functions and Conditionals Craig Zilles (Computer - - PowerPoint PPT Presentation

cs 105
SMART_READER_LITE
LIVE PREVIEW

CS 105 Lecture 4: Functions and Conditionals Craig Zilles (Computer - - PowerPoint PPT Presentation

CS 105 Lecture 4: Functions and Conditionals Craig Zilles (Computer Science) https://go.illinois.edu/cs105fa19 September 20, 2019 Are you sitti ting next t to someone to talk to for th the clicker questi tions? To Today I'm using:


slide-1
SLIDE 1

Lecture 4: Functions and Conditionals

Craig Zilles (Computer Science) September 20, 2019 https://go.illinois.edu/cs105fa19

CS 105

slide-2
SLIDE 2

Are you sitti ting next t to someone to talk to for th the clicker questi tions? To Today I'm using: pythontutor.com

2

slide-3
SLIDE 3

Bi Big Pictu cture (Muddiest t Poi

  • ints

ts)

  • if the challenge questions are too hard can we leave

some of it?

  • In general, I'd say that there is no single concept that

confuses me most as of right now. I kind of understand why I need to do what I need to do in coding, but I am still foggy as to where each and every little character goes, and what makes something a syntax error and what doesn't.

3

slide-4
SLIDE 4

To Today

  • 1. Warmup
  • 2. Functions
  • Indentation / Code Blocks
  • Parameters and Arguments
  • Return Values
  • 3. Boolean Expressions
  • Relational operators: ==, !=, <, >, <=, >=
  • Boolean operators: and, or, not
  • 4. Conditionals
  • if, elif, else
  • Nesting

4

slide-5
SLIDE 5

Neg Negative e Indexi xing

What is the value of the above expression? A) 'a' B) 'b' C) 'c' D) 'd' E) 'e'

5

"abcde"[-2]

slide-6
SLIDE 6

Us User-de define ned d Func unctions ns

using recipes in recipes

6

slide-7
SLIDE 7

Us User-de define ned d Func unctions ns

  • Sequences of operations for use elsewhere in program
  • Function definition says what to do

def get_input_and_print(): name = input("Your name?\n") print("Hello " + name + "!")

  • Function calls/invocations actually run the function

get_input_and_print()

7

slide-8
SLIDE 8

Re Representative Muddiest Points

  • The sections on parameters and returns made no sense

to me. I don't understand when to indent something, or what to return and when.

  • I feel like I do not understand what code block and

indentations stand for in Python.

8

slide-9
SLIDE 9

Cod Code Bl Block

  • cks
  • Need a way to tell Python "this statements are related"
  • Python uses indentation

9

Code Block A Code Block B (Execution determined by control flow construct) Control flow construct: Code Block C (Same indentation as A)

slide-10
SLIDE 10

In Indentation tion

  • In other prog. languages, indentation is just good style
  • In Python, it is syntactic and semantic
  • These three programs are all different
  • Text is same, white space and behavior is different

10

def test(): print('first') print('second') test() def test(): print('first') print('second') test() def test(): print('first') print('second') test()

slide-11
SLIDE 11

Wh What does this program output?

  • A) it raises an error
  • B)
  • C)
  • D)
  • E)

11

first first second second first first second

def test(): print('first') print('second') test()

slide-12
SLIDE 12

Paramet eters, Arguments, Ret eturn Values

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

12

slide-13
SLIDE 13

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

13

slide-14
SLIDE 14

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!")

14

slide-15
SLIDE 15

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)

15

slide-16
SLIDE 16

An Annou

  • unce

cements ts

  • Quiz 1 next week
  • Taken at home on PrairieLearn
  • To be done Alone!

16

slide-17
SLIDE 17

Ho How much to total time di did y d you spe u spend i nd in n th the past t week on CS 105?

  • Lecture + Lab = 3 hours
  • Readings + Preflights + HW + Office hours + Exam
  • Which of these Boolean expressions are True for you

A) hours_spent < 6 hours B) 6 hours <= hours_spent < 9 hours C) 9 hours <= hours_spent < 11 hours D) 11 hours <= hours_spent < 13 hours E) hours_spent >= 13 hours

17

slide-18
SLIDE 18

Ho How was Ex Exam m 0 for you? u?

  • A) Great, no problems at all!
  • B) Fine
  • C) Whatever
  • D) Not a fan
  • E) Terrible, I hated it!

18

slide-19
SLIDE 19

Ex Exam m 0

  • Seemed to go pretty smoothly

19

slide-20
SLIDE 20

Bool Booleans

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

them, why they're used, etc.

  • There are two Boolean values: True, False
  • Used for making decisions:
  • Do something or don't do something

20

slide-21
SLIDE 21

Bool Boolean Expression

  • ns
  • Expressions that evaluate to True or False

(1 + 6) < (2 + 5)

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

21

slide-22
SLIDE 22

Re Relational and membership operators

  • When to use = and when use == ?

22

slide-23
SLIDE 23

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

23

slide-24
SLIDE 24

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()

24

slide-25
SLIDE 25

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:

25

Falsy values

slide-26
SLIDE 26

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)

26

slide-27
SLIDE 27

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

27

slide-28
SLIDE 28

x==3 or 4

28

slide-29
SLIDE 29

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')

29

slide-30
SLIDE 30

Wh What does this program output?

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

30

hello there hello there

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

slide-31
SLIDE 31

Con Conditi tion

  • nals
  • if, elif, else
  • I'm confused about when to use multiple distinct if

statements or if-elif-else.

  • I'm not too sure about the concept of "elif"
  • 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.

31

slide-32
SLIDE 32

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)

32

slide-33
SLIDE 33

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)

33

slide-34
SLIDE 34

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'

34

slide-35
SLIDE 35

Mul Multi-wa way branches in general?

If you were choosing between 6 possibilities, how many elif statements would you have: A) 1 B) 2 C) 3 D) 4 E) 5

35