# Community Data Science Workshops (Core)/Day 1 Lecture

(Redirected from CDSW/Day 1 lecture)

Welcome to the Saturday lecture section of the Community Data Science Workshop! For about 2 hours, we'll work through an introduction to the Python programming language via both a lecture and hand-on exercises.

At the beginning of the lecture, we'll give a short pre-lecture talk to motivate the sessions.

Screencast videos of both are available:

The links above should be viewable in most browsers. If you have trouble playing it, you can download the VLC media player which will be a able to play it on Windows, OSX, or GNU/Linux

## Lecture outline

### Review Friday material

• math: using python as a calculator
• division shows something different: `8/2` versus `2*2`
• type()
• there are different types of things in python (called objects)
• variables that "know about the decimal place" (floats) and variables that don't (ints)
• variables
• assignment of variaibles
• e.g., math with variables: scale up a recipe, into an assignment
• you can assign to a variable and it will replace the old value
• strings
• things within quotation marks
• adding strings with "concatenation" (smushing things together)
• e.g., `print("Hello" + name)`
• concatenating strings and integers don't work (e.g., `print(1 + "mako")`)
• 1 is different than "1"; name is different than "name"
• single quotes versus double quotes (python doesn't care)
• you can also multiply strings! (although it's not clear why you want to weird)
• booleans
• comparisons (e.g., `1 == 1` or `1 == 0`)
• you can compare strings (case sensative!)
• also >, <, and !=
• type() shows that the output of True or False is `bool`
• e.g., `"i" in "team"`
• e.g., `"i" not in "team"`
• if/elif/else (move to external file)
• if, something that evaluates to a boolean, and then colon
• e.g., `if "mako" in "makoshark"`
• e.g., adding else example: `if brother_age > sister_age`
• e.g., temperature range (e.g., if temp<65 is cold; temp>80 is hot; otherwise, just right)
• e.g., adding elif: fix the bug in the previous program if they were the same age
• indent with spaces (we use 4 spaces!)
• functions
• has a parentheses
• we've already learnd examples of this: exit(), help(), type()

### Lists

• purpose
• Stores things in order
• initialization
• making a list called my list: `my_list = ["a", "b", "c"]`
• comma separated elements. in python they can be a mix of any kind of types
• `type(my_list)`
• len() review
• accessing elements
• indexing like my_list[0]
• indexing starts from the front and we start counting at 0 (now you understand all the zeros we've been using
• we go from the end with negative numbers
• what happens if we try to move outside of the range? ('error!)
• using the the `my_list.append()` function
• the `.append()` function is a special kind of function that lists know about
• changing elements
• replacing elements like `my_list[0] = "foo"`
• finding elements in list
• e.g., `"z" in my_list`
• slicing lists
• the colon inside the [] is the slicing syntax
• e.g., `my_list[0:2]` is 0th up to, but not including, the 2nd
• e.g., `my_list[2:]`
• e.g., `my_list[:2]`
• e.g., `my_list[:]`
• strings are like lists
• we can slice lists
• len()
• `len("")` length of the empty string
• many other interesting functions for lists
• e.g., `min()` and `max()`
• e.g., create a list of names and sort it `names.sort()`

### loops and more flow control

• for loops
• e.g., `for name in names: print name`
• e.g., `for name in names: print 'hello ' + name`
• Super powerful because it can do something many many times. Data science is about doing tedious things very quickly. For is the workhorse that makes this possible.
• Look and see name is after we're done looping.
• Move to text editor
• if statements inside for loops
• e.g., `if name[0] in "AEIOU"` then print "starts with a vowel"
• show we can test things outside the loop to show how the comparisons are working
• append to a list within a for loop
• create a counter within a for loop (keep track)
• build up a sentence
• nested for loops

### dictionaries

• purpose
• initialization
• accessing elements
• changing elements
• keys() and values()

### modules

• purpose
• importing with import
• import random
• random.randint
• random.sample

• input()

### walk through State_Capitals.ipynb

Where State_Capitals.ipynb from https://communitydata.science/~mako/State_Capitals.ipynb is the grand finale and synthesis of lecture material.