CS156
Chris Pollett
Sep 12, 2022
person = {
"name" : "bob",
"age" : 27,
"sex" : "Male"
}
empty_dict = {} #an empty dictionary # or use dict()
name= person["name"] person["age"] = 28 person["address"] = "somewhere" #this would add a key-value pair del person["age"] # removes key value associated with 'age'
if "name" in person:
name = person["name"]
else:
name = "no one"
#the above conditional can be shortened to:
name = person.get("name", "no one")
keys = list(person) #keys is ['address', 'name', 'sex'] #the method person.keys() is similar but returns dict_keys(['name', 'age', 'sex']) #person.values() would get list of values #len(person) gives the number of keys in dictionary
while condition:
statement1
statement2
...
for n in [1,2,3,4,5,6,7,8,9]:
print("2 to the %d is %d" % (n, 2**n))
for n in range(1,10):
print("2 to the %d is %d" % (n, 2**n)) # same as before
a = range(5) # can omit start to get a = 0, 1, 2, 3, 4 b = range(1,8) # b = 1, 2, 3, 4, 5, 6, 7 c = range(0, 13, 2) # c = 0, 2, 4, 6, 8, 10, 12 d = range(7, 2, -1) # d = 7, 6, 5, 4, 3
a = "Get rich quick"
for b in a:
print(b)
c = ["now", "I", "know"]
for d in c:
print(d)
person = {
"name" : "bob",
"age" : 27,
"sex" : "Male"
}
for key in person:
print(key, person[key])
f = open("my_file.txt")
for line in f:
print(line)
def smaller_value( a, b): if a < b: return a # notice single line if can be same line else: return b
print(smaller_value(8, 4))
def reverse_list(list):
if list == []: return []
return reverse_list(list[1:]) + [list[0]]
print(reverse_list([1, 2, 3, 4])) # prints [4, 3, 2, 1]
def divide(a,b):
q = a // b
r = a - q*b
return (q, r)
quotient, remainder = divide(2373, 16)
def expify(a, b=2): return b**a #if don't give a second argument b will be 2
i = 5 def printi(): i=4 print(i) printi() # outputs 4 print(i) #outputs 5 #note without the i=4 assignment would get i=5
def assign_i(): global i i=3 assign_i() print(i) #now get 3
a = printi a() # prints 4
Consider: def f(x): return x**3 f(10) #returns 1000 g = lambda x: x**3 #notice don't use return with lambda g(10) #returns 1000 def make_adder (n): return lambda x: x + n f = make_adder(2) g = make_adder(6) print(f(42), g(42))
Which of the following is true?
def countdown(n):
while n > 0:
yield n
n -=1
c = countdown(5)
print(next(c)) #prints 5
print(next(c)) #prints 4
print(next(c)) #prints 3
import time
def tail_log(f):
f.seek(0, 2) # 2nd arg: 0 means start of file, 1 means current pos, 2 means end of file
while True:
line = f.readline()
if not line:
time.sleep(0.1) # sleep 1/10 of a second
continue
yield line
def print_matches(text):
print("Trying to find", text)
while True:
line = (yield)
if text in line:
print(line)
p = print_matches("hello")
next(p) #prints 'Trying to find hello'
p.send("lalalala la") #doesn't print anything
p.send("hello world") #prints hello world
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
class Stack(object): #this says stack inherits from object
a_class_variable = 5 # this var behaves like a Java static var
def __init__(self): #self = this in Java
self.stack = [] #now stack is a field variable of Stack
#in general using self.field_var is how we declare and
#instantiate a instance variable
def push(self, object): #the first argument of any method
self.stack.append(object) # is the object itself
def pop(self):
return self.stack.pop()
@property #properties are attributes that computes its value when accessed
def length(self):
return len(self.stack)
my_instance = Stack()
my_instance.push("hello")
print(my_instance.length)
print(isinstance(my_instance, object)) #returns True
print(issubclass(Stack, object)) #returns True
print(type(my_instance)) # returns <class '__main__.Stack'>
...
#etc