-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6f74343
commit 45f867b
Showing
1 changed file
with
178 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,178 @@ | ||
# COPY OF CODE FROM LECTURE 4: | ||
|
||
######################### | ||
## EXAMPLE: combinations of print and return | ||
## Python Tutor link: http://www.pythontutor.com/visualize.html#code=def%20is_even_with_return(%20i%20%29%3A%0A%20%20%20%20%22%22%22%20%0A%20%20%20%20Input%3A%20i,%20a%20positive%20int%0A%20%20%20%20Returns%20True%20if%20i%20is%20even,%20otherwise%20False%0A%20%20%20%20%22%22%22%0A%20%20%20%20print('with%20return'%29%0A%20%20%20%20remainder%20%3D%20i%20%25%202%0A%20%20%20%20return%20remainder%20%3D%3D%200%0A%0Ais_even_with_return(3%29%20%0Aprint(is_even_with_return(3%29%20%29%0A%0Adef%20is_even_without_return(%20i%20%29%3A%0A%20%20%20%20%22%22%22%20%0A%20%20%20%20Input%3A%20i,%20a%20positive%20int%0A%20%20%20%20Does%20not%20return%20anything%0A%20%20%20%20%22%22%22%0A%20%20%20%20print('without%20return'%29%0A%0Ais_even_without_return(3%29%0Aprint(is_even_without_return(3%29%20%29%0A&cumulative=false&curInstr=0&heapPrimitives=false&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false | ||
######################### | ||
def is_even_with_return( i ): | ||
""" | ||
Input: i, a positive int | ||
Returns True if i is even, otherwise False | ||
""" | ||
print('with return') | ||
remainder = i % 2 | ||
return remainder == 0 | ||
|
||
is_even_with_return(3) | ||
print(is_even_with_return(3) ) | ||
|
||
def is_even_without_return( i ): | ||
""" | ||
Input: i, a positive int | ||
Does not return anything | ||
""" | ||
print('without return') | ||
remainder = i % 2 | ||
|
||
is_even_without_return(3) | ||
print(is_even_without_return(3) ) | ||
|
||
# Simple is_even function definition | ||
def is_even( i ): | ||
""" | ||
Input: i, a positive int | ||
Returns True if i is even, otherwise False | ||
""" | ||
remainder = i % 2 | ||
return remainder == 0 | ||
|
||
# Use the is_even function later on in the code | ||
print("All numbers between 0 and 20: even or not") | ||
for i in range(20): | ||
if is_even(i): | ||
print(i, "even") | ||
else: | ||
print(i, "odd") | ||
|
||
######################### | ||
## EXAMPLE: applying functions to repeat same task many times | ||
######################### | ||
def bisection_cuberoot_approx(x, epsilon): | ||
""" | ||
Input: x, an integer | ||
Uses bisection to approximate the cube root of x to within epsilon | ||
Returns: a float approximating the cube root of x | ||
""" | ||
low = 0.0 | ||
high = x | ||
guess = (high + low)/2.0 | ||
while abs(guess**3 - x) >= epsilon: | ||
if guess**3 < x: | ||
low = guess | ||
else: | ||
high = guess | ||
guess = (high + low)/2.0 | ||
return guess | ||
|
||
x = 1 | ||
while x <= 10000: | ||
approx = bisection_cuberoot_approx(x, 0.01) | ||
print(approx, "is close to cube root of", x) | ||
x *= 10 | ||
|
||
|
||
######################### | ||
## EXAMPLE: functions as arguments | ||
## Python Tutor link: http://www.pythontutor.com/visualize.html#code=def%20func_a(%29%3A%0A%20%20%20%20print('inside%20func_a'%29%0A%0Adef%20func_b(y%29%3A%0A%20%20%20%20print('inside%20func_b'%29%0A%20%20%20%20return%20y%0A%0Adef%20func_c(z%29%3A%0A%20%20%20%20print('inside%20func_c'%29%0A%20%20%20%20return%20z(%29%0A%0Aprint(func_a(%29%29%0Aprint(5%2Bfunc_b(2%29%29%0Aprint(func_c(func_a%29%29%0A&cumulative=false&curInstr=0&heapPrimitives=false&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false | ||
######################### | ||
def func_a(): | ||
print('inside func_a') | ||
|
||
def func_b(y): | ||
print('inside func_b') | ||
return y | ||
|
||
def func_c(z): | ||
print('inside func_c') | ||
return z() | ||
|
||
print(func_a()) | ||
print(5+func_b(2)) | ||
print(func_c(func_a)) | ||
|
||
|
||
######################### | ||
## EXAMPLE: returning function objects | ||
## Python Tutor link: http://www.pythontutor.com/visualize.html#code=def%20f(%29%3A%0A%20%20%20%20def%20x(a,%20b%29%3A%0A%20%20%20%20%20%20%20%20return%20a%2Bb%0A%20%20%20%20return%20x%0A%20%20%20%20%0Aval%20%3D%20f(%29(3,4%29%0Aprint(val%29%0A&cumulative=false&curInstr=0&heapPrimitives=false&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false | ||
######################### | ||
def f(): | ||
def x(a, b): | ||
return a+b | ||
return x | ||
|
||
# the first part, f(), returns a function object | ||
# then apply that function with parameters 3 and 4 | ||
val = f()(3,4) | ||
print(val) | ||
|
||
|
||
|
||
######################### | ||
## EXAMPLE: shows accessing variables outside scope | ||
######################### | ||
def f(y): | ||
x = 1 | ||
x += 1 | ||
print(x) | ||
x = 5 | ||
f(x) | ||
print(x) | ||
|
||
def g(y): | ||
print(x) | ||
print(x+1) | ||
x = 5 | ||
g(x) | ||
print(x) | ||
|
||
def h(y): | ||
pass | ||
#x += 1 #leads to an error without line `global x` inside h | ||
x = 5 | ||
h(x) | ||
print(x) | ||
|
||
|
||
######################### | ||
## EXAMPLE: hader scope example from slides | ||
## Python Tutor link: http://www.pythontutor.com/visualize.html#code=def%20g(x%29%3A%0A%20%20%20%20def%20h(%29%3A%0A%20%20%20%20%20%20%20%20x%20%3D%20'abc'%0A%20%20%20%20x%20%3D%20x%20%2B%201%0A%20%20%20%20print('in%20g(x%29%3A%20x%20%3D',%20x%29%0A%20%20%20%20h(%29%0A%20%20%20%20return%20x%0A%0Ax%20%3D%203%0Az%20%3D%20g(x%29&cumulative=false&curInstr=0&heapPrimitives=false&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false | ||
######################### | ||
def g(x): | ||
def h(): | ||
x = 'abc' | ||
x = x + 1 | ||
print('in g(x): x =', x) | ||
h() | ||
return x | ||
|
||
x = 3 | ||
z = g(x) | ||
|
||
|
||
######################### | ||
## EXAMPLE: complicated scope, test yourself! | ||
## Python Tutor link: http://www.pythontutor.com/visualize.html#code=def%20f(x%29%3A%0A%20%20%20x%20%3D%20x%20%2B%201%0A%20%20%20print('in%20f(x%29%3A%20x%20%3D',%20x%29%0A%20%20%20return%20x%0A%0Ax%20%3D%203%0Az%20%3D%20f(x%29%0Aprint('in%20main%20program%20scope%3A%20z%20%3D',%20z%29%0Aprint('in%20main%20program%20scope%3A%20x%20%3D',%20x%29%0A%0Adef%20g(x%29%3A%0A%20%20%20%20def%20h(x%29%3A%0A%20%20%20%20%20%20%20%20x%20%3D%20x%2B1%0A%20%20%20%20%20%20%20%20print(%22in%20h(x%29%3A%20x%20%3D%20%22,%20x%29%0A%20%20%20%20x%20%3D%20x%20%2B%201%0A%20%20%20%20print('in%20g(x%29%3A%20x%20%3D%20',%20x%29%0A%20%20%20%20h(x%29%0A%20%20%20%20return%20x%0A%0Ax%20%3D%203%0Az%20%3D%20g(x%29%0Aprint('in%20main%20program%20scope%3A%20x%20%3D%20',%20x%29%0Aprint('in%20main%20program%20scope%3A%20z%20%3D%20',%20z%29%0A&cumulative=false&curInstr=0&heapPrimitives=false&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false | ||
######################### | ||
def f(x): | ||
x = x + 1 | ||
print('in f(x): x =', x) | ||
return x | ||
|
||
x = 3 | ||
z = f(x) | ||
print('in main program scope: z =', z) | ||
print('in main program scope: x =', x) | ||
|
||
def g(x): | ||
def h(x): | ||
x = x+1 | ||
print("in h(x): x = ", x) | ||
x = x + 1 | ||
print('in g(x): x = ', x) | ||
h(x) | ||
return x | ||
|
||
x = 3 | ||
z = g(x) | ||
print('in main program scope: x = ', x) | ||
print('in main program scope: z = ', z) |