Review of Basic Programming with Python

6 minute read

Purpose

For those with Python experience: review, make you aware of some things you may not have seen before - it will not be exhaustive.

For those without Python experience: introduction to Python syntax

  • It can do most of what you know from Java, Javascript, etc.
  • Easy-to-pick-up syntax

References for this lecture

Problem Solving with Algorithms and Data Structures using Python, Chapter 1: https://runestone.academy/runestone/books/published/pythonds/Introduction/toctree.html

Sections 1.1-1.4, 1.7, 1.8, 1.10, 1.12

Also see Think Python for a more exhaustive reference of basic Python or A Quick Python tutorial

Demo: Running Python

Python can be run in either script mode or interactive mode

My slides are written using a Jupyter Notebook mixes interactive mode cells and mark-up/documentation cells

print("Hello CS66 Students!")
Hello CS66 Students!

Let’s see how script mode and interactive mode works in VSCode

Demo: Using a Jupyter Notebook in VS Code

If this works, it could be a useful way to work through in-class activities

Let’s try it.

Demo: Submitting assignments on codePost

Objects

Python data items are called objects.

Examples of types of objects

  • atomic types like ints, floats, and bools
  • collection types like lists, strings, dictionaries, tuples, and sets
  • new types created by defining a new class

Examples of numerical and logical operations

from Activities 1.8.1.1 and 1.8.1.2

print(2+3*4)
print((2+3)*4)
print(2**10)   ## ** is the exponent operator
print(6/3)
print(7/3)
print(7//3)    ## integer division
print(7%3)     ## remainder (modulo)
print(3/6)
print(3//6)
print(3%6)
print(2**100)
14
20
1024
2.0
2.3333333333333335
2
1
0.5
0
3
1267650600228229401496703205376
print(5==10)
print(10 > 5)
print((5 >= 1) and (5 <= 10))
False
True
True

Variables

Assignments of values to variables in Python is done with the = operator

variables do not need to be declared ahead of time, and their types can change

x = False
print( type(x) )
x = 1
x = x + 1
print( type(x) )
print(x)
<class 'bool'>
<class 'int'>
2

Lists

Lists are Python’s ordered collection type (some other langauges call them arrays)

They are heterogeneous - they can have a mix of object types.

myList = [1,3,True,6.5]

Use subscipt notation to access elements by their index.

Indices are 0-based

print(myList[3])
myList[0] = "hi"
print(myList)
6.5
['hi', 3, True, 6.5]

There are many different built-in functions and methods that work with lists

myList = [1024, 3, True, 6.5]
myList.append(False)  #add on to the end of a list
print(myList)
[1024, 3, True, 6.5, False]
myList.insert(2,4.5)  #put a new value at index 2
print(myList)
[1024, 3, 4.5, True, 6.5, False]
print(myList.pop())  #remove and return whatever is at the end
print(myList)

False
[1024, 3, 4.5, True, 6.5]
print(myList.pop(1)) #remove and return whatever is at index 1
print(myList)
myList.pop(2)
print(myList)
3
[1024, 4.5, True, 6.5]
[1024, 4.5, 6.5]
anotherList = [10,2.5,47,1,6.63]
anotherList.sort()  #sort the list
print(anotherList)
[1, 2.5, 6.63, 10, 47]
anotherList = [10,2.5,47,1,6.63]
anotherList.reverse()  #reverse the list
print(anotherList)
[6.63, 1, 47, 2.5, 10]
anotherList = [10,47,2.5,47,1,6.63,47]
print(anotherList.count(47))   #count how many times 47 appears
print(anotherList.index(2.5))  #which index is 2.5 at?
3
2
print( 42 in anotherList )  #test if 42 is a member of the list
False
anotherList.remove(2.5)  #remove an item by its value
print(anotherList)
[10, 47, 47, 1, 6.63, 47]
#slice the list from index 2 up to (but not including) index 4
print( anotherList[2:4] ) 
[47, 1]
print( myList + anotherList ) #concatenate two lists
[1024, 4.5, 6.5, 10, 47, 47, 1, 6.63, 47]
print( len(anotherList) )  #find the length of a list
6

Strings and Tuples

Strings and Tuples behave much like lists, but they’re immutable - they can’t be changed

myTuple = (2,True,4.96)
print( len(myTuple) )
print( myTuple[2] )
3
4.96
myTuple[0] = 10 #error because tuples are immutable
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

Input In [20], in <cell line: 1>()
----> 1 myTuple[0] = 10


TypeError: 'tuple' object does not support item assignment
myString = "Eric"
print( myString[1] )
print( myString.lower() )  #there are many useful string methods
r
eric

While loops

Here’s an example of the syntax for a Python while loop.

counter = 1
while counter <= 5:
    print("Hello, world")
    counter = counter + 1
Hello, world
Hello, world
Hello, world
Hello, world
Hello, world

In Python, tabs matter! You always tab in any block of code associated with a loop, if-statement, function definition, etc.

For loops

for loops can be used to iterate through collections

In this example, day is the loop variable that takes on the next value in the list with each iteration.

days_of_the_week = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]


for day in days_of_the_week:
    print(day,"is a good day for programming")
Sunday is a good day for programming
Monday is a good day for programming
Tuesday is a good day for programming
Wednesday is a good day for programming
Thursday is a good day for programming
Friday is a good day for programming
Saturday is a good day for programming

For loops and range()

For loops are often combined with the range() function, which allow it to operate as a count-controlled loop.

for num in range(5):
    print(num,"squared is",num**2)
0 squared is 0
1 squared is 1
2 squared is 4
3 squared is 9
4 squared is 16

It’s also common to use range() with for loops to iterator through the indices of a list rather than the items of the list.

days_of_the_week = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]


for day_num in range(len(days_of_the_week)):
    print(days_of_the_week[day_num],"is a good day for programming")
Sunday is a good day for programming
Monday is a good day for programming
Tuesday is a good day for programming
Wednesday is a good day for programming
Thursday is a good day for programming
Friday is a good day for programming
Saturday is a good day for programming

It’s easy to mix up whether you’re iterating through items or indices, so make sure to think twice about how you’re setting up you loops!

Conditional Statements

Python has if, else, and elif keywords to handle all of your conditional needs.

students = 124
classrooms = 5

if classrooms <= 0:
    print("You must have at least one classroom.")
students = 124
classrooms = 5

if classrooms <= 0:
    print("You must have at least one classroom.")
else:
    print("There are",students/classrooms,"students per classroom.")
There are 24.8 students per classroom.
score = 76

if score >= 90:
       print('A')
elif score >=80:
       print('B')
elif score >= 70:
       print('C')
elif score >= 60:
       print('D')
else:
       print('F')
C

Defining Functions

You can define functions in Python with the def keyword.

Parameters are listed as comma,separated variable names between parentheses.

The return keyword causes the function to terminate, with the given value returned.

def square(n):
    return n**2

print( square(3) )
9
square( square(3) )
81

In-Class Activities

Make a group of 3-4 students.

Have a discussion about each of these problems. Write notes either in this notebook, the comments of a regular Python file, or in some other convenient place.

Group Activity Problem 1

Run the following code example. In the notes section below, describe what the code does.

anotherList = [10,47,2.5,47,1,6.63,47]
print(anotherList.index(2.5))

Notes:

you may use this space for your notes

Group Activity Problem 2

What happens if you try to use the index method for an item that doesn’t appear in the list?

## test some code here

Notes:

write your notes here

Group Activity Problem 3

How is the list index method different than the in operator?

my_list = [35,66,70,5,42,10,12]
print(42 in my_list)

Notes:

write your notes here

Group Activity Problem 4

In the previous activity, you wrote a search_for function which served the same purpose as the in (e.g., list-contains) operator. Now write a similar function called find_index which serves the same purpose as the list index method you worked with above. However, instead of giving an error when the item isn’t in the list, return -1 instead.

# write your code here

Notes:

write your notes here

Group Activity Problem 5

Write a function called find_index_2D() that will find the position of an item in a 2-dimension list. For example, if called like this:

# write your code here

my_2d_list = [[0,1,2,3],
              [10,11,12,13],
              [20,21,22,23]]

print( find_index_2D(12,my_2d_list) ) #it should return the tuple (1,2) to indicate it is in row 1, column 2.

Notes:

write your notes here