CS 105 SUMMER WEDNESDAY 5 · 2020. 8. 5. · Jokes aside –still intend to Probably Week 6, 7, or...

26
CS 105 SUMMER WEDNESDAY 5

Transcript of CS 105 SUMMER WEDNESDAY 5 · 2020. 8. 5. · Jokes aside –still intend to Probably Week 6, 7, or...

  • CS 105 SUMMER –

    WEDNESDAY 5

  • Hey Max, what about that bee movie thing?

    patient!

    Jokes aside – still intend to

    Probably Week 6, 7, or 8, as we'll have time

    May have to be email - SMS apis are pricier

    than they used to be

  • What to talk about today?

    From the muddiest points

    While loop vs For loop

    Loop nesting – when, why, etc (ZyBooks 7.8.1, 7.8.2,

    7.10.2)

    Why care about dynamic typing?

    What's with global vs local? When does it matter?

    Your questions – please feel free to post

    questions you'd like to see in chat!

  • Quick MPs

    In the context of for loops - "Do you have to define i before using it? Also,

    does the loop variable have to be i or it could be any variable? "

    for i in ["Alice", "Bob", "Charlie"]:

    print(i)

    for name in ["Alice", "Bob", "Charlie"]:

    print(name)

    • Name is arbitrary –

    call it whatever you

    want

    • i is convention for

    index

  • Quick MPs

    Some MPs:

    "I also struggle on some parts of the homework."

    "Can we have quiz review sessions?"

    Please post your questions to Piazza. Also use office

    hours/tutoring!! (should have better hours…)

    Piazza exists for a dialog – it's okay if what you

    have is a broken code and a "yo wtf?!"

  • Quick MPs

    “confused about why range(0,5) doesn't go until 5 is that just something that i should know and accept or is there like an actual reason”

    Largely something you should just accept, but there is a good reason

    Think looping through list indices (without enumerate)

    range(len(my_list)) –> 0 up to the last index of the list

    if my_list is [1,2,3,4], then range(4) gives me (0,1,2,3)

    In brief – exclude the end so you can use the length as the stopping point

    Same idea with slicing to the end

  • Quick MPs

    "Could we go deeper into polymorphism?"

    We could…largely out of class scope for the summer

    Polymorphism is a key part of object-oriented

    languages (like Python, Java)

    Plan to talk about in optional video content/maybe

    optional parts of class meeting in Week 8

  • Quick MPs

    "Why do docstrings matter?"

    From Python.org:

    A docstring is a string literal that occurs as the first statement in a module, function, class, or method definition. Such a docstring becomes the __doc__ special attribute of that object.

    Basically, a fancy comment telling you WHAT a function does

    Good habit for larger programming projects, but not really a part of this course

  • Quick MPs

    "When I'm taking a quiz or the final and there's a question

    that I am unsure of, what are the first things I should think or

    look for that would help me find the right solution to the

    problem?"

    1. Question prompt

    2. Python docs

    3. Trying anything in Repl.it

  • For example – area code from a phone number

    Identifies a technique

    – slicing

    Also gives a worse

    cast test case – could

    try return '555' if all

    else fails

  • So…slicing…docs are weird

  • So…slicing…docs are weird

  • So…slicing…docs are weird

  • Quiz 4 comments

    High level stats: Mean

    84%, Median 88%

    Good job! Trending up!!

    …Is stonks still funny?

    Was it ever funny?

  • Practice Quiz 5

    Slightly different question setup

    Still 30, but 5 programming Qs

    Excel as much as HW7 – lab solutions

    posted to help with this!

    Looking at doing a code reading

    question on Quiz 6, Quiz 7

  • While loop vs For loop

    High level –

    while loop is "indefinite" -> runs until a condition ends

    for loop can also be considered a "for each loop" -> "for each item in this thing"

    The thing can be:

    a list (or other collection)

    a range statement

    etc.

  • Can for loops and while loops do the exact same

    things?

    In a manner of speaking…

    For example, we could make an infinite for loop

    Note this loop isn't really "running until X condition", though

    for element in my_list:

    my_list.append(new_element) #This won't actually

    #extend the loop!

  • Better to think about what each loop is BEST for

    for loops – looping over collections, processing each

    element of SOME THING, "x" number of steps

    while loops – Running until a sentinel value, running until

    something is true or something else is no longer true

  • break and continue – best with while

    Let's code this:

    "Write a program which gets a list of numbers from the user. If the user enters a non-numeric string, skip the string. If the user enters a negative number, end and print the list"

    We will need str.isnumeric() for this

  • Did we need break?

    No – we used break to break the while True, but could have also just used a sentinel value

    continue here was also not strictly needed, but simplified it down from an else

    You almost never STRICTLY NEED continue or break UNLESS you have an otherwise infinite loop (while True: )

  • Using break with for loops – decent example

    Let's write this function…

    "Write a function that takes a list of numbers as an

    argument. Sum up all the numbers up to the first

    negative number and return that sum"

  • ZyBooks 7.8.1, 7.8.2, 7.10.2

    ZyBooks questions

  • Dynamic typing, global vs local

    Largely, these are concerns you'd only deal with in larger pieces of code, outside of the course scope

    Dynamic is still a little bit neat

    We can use type-checking to take advantage of dynamic typing…

  • An example of dynamic typing being useful

    Let's write a function which can take either a string or a

    list.

    If it's a list, return the sum of all the numbers in that list

    If it's a string, split it on commas (,) and return the sum of all

    the numbers in that string

    Assume we'll either get a list of numbers or a csv string

  • Global vs local

    Largely, everything you've been writing is local

    Why is global bad? Changing a variable by accident

    (dynamic typing negative!!)

    Avoiding globals – principle for larger programs

    Still sometimes useful, like importing the math module

    globally

  • Any homework questions you'd like looked at,

    for example?

    Any other questions you may have?