mscroggs.co.uk
mscroggs.co.uk subscribe

# MATH0011: Mathematical Methods II

## Code we wrote during lecture 2

python
# Code that asks for your name then says hello to you
name = input("What is your name? ")
print("Hello "+name)

# The following attempt doesn't work because of a TypeError
= input("Enter a temperature in Celsius: ")
print("In Fahrenheit, this is ",9*c/5+32)

# Every variable has a type
= 1
print(type(a))
= 1.0
print(type(b))
= 1+0j
print(type(c))
= "1"
print(type(d))
= True
print(type(e))

# * and + do different things for different types
print(10*2)
print("10"*2)

print(10+2)
print("10"+"2")
print("10"+2)

# You can convert between types using int( ), float( ), str( ), complex( ), bool( )
= "10"
= int(a)
print(a*2)

# This is a working version of our attempted code above after fixing the TypeError
= float(input("Enter a temperature in Celsius: "))
print("In Fahrenheit, this is ",9*c/5+32)

## Lists
= [4,10,3,7,0,-10]
print(a)
print(a)
print(a)
print(a)
print(a[-1])
print(a[-2])

# Changing the value of an item in a list
print(a)
a = 3
print(a)

# Slices
print(a[0:2])
print(a[:2])
print(a[3:5])
print(a[3:])
print(a[1:5:2])
print(a[::2])
print(a[::-1])

# Slicing also works on strings
words = "This is a string!"
print(words)
print(words[7:])
print(words[::2])
print(words[::-1])

# You can use append to add to the end of a list
= [4,10,3,7,0,-10]
print(a)
a.append(7)
print(a)

# You can use + to concatenate two lists together
print(a + [2,3,4,5,6])
+= [3,6,7]

# Lists can contain a mix of types or be empty
= [True, "Hello", 4, 3+2j, 5, [4, 5]]
= []

# You can use for to iterate through a list
= [4,10,3,7,0,-10]
for i in a:
print(i**2)

# Example: Make a list containing the square numbers below 1000
squares = []
= 0
while i**< 1000:
squares.append(i**2)
i += 1
print(squares)

# Example: Print out all the square numbers up to 1000 whose final digit is 4
for s in squares:
if s%10 == 4:
print(s)

# Some useful functions you can apply to lists
= [4,10,3,7,0,-10,7,7,7,7]
print(a)
print(max(a))
print(min(a))
print(sum(a))
print(len(a))

# Sorts the list into order
a.sort()
print(a)
# Counts the number of 7s in the list
print(a.count(7))

# Example: Print out the numbers whose squares are less
# than 1000 and have final digit 4
squares = []
= 0
while i**< 1000:
squares.append(i**2)
i += 1

for i,s in enumerate(squares):
if s%10 == 4:
print(i)
# enumerate make the first variable go 0,1,2,3,...
# and the second variable go through the items in the list

# Example: Generating a list of prime numbers up to 1000
# First version
primes = []
for n in range(2,1000):
a = True
for i in range(2,n):
if n%i == 0:
a = False
if a:
primes.append(n)
# Better version
primes = []
for n in range(2,1000):
a = True
for i in primes:
if n%i == 0:
a = False
break
if i**> n:
break
if a:
primes.append(n)

print(primes)

# Example: Make a list containing Fibonacci numbers up to 1000

fib = [1,1]
while fib[-1] < 1000:
fib.append(fib[-1]+fib[-2])
print(fib)

## Dictionaries
= {"cat":5, "dog":3, "fish":0}
print(a)
print(a["cat"])
a["cat"+= 2
print(a["cat"])
a["dog"= 0
print(a)

# Iterating through dictionaries
for i in a:
print(i)

for i in a.keys():
print(i)

for i in a.values():
print(i)

for i,j in a.items():
print(i, j)

## Tuples
= (2,3,10)
print(a)
print(a)
a = 2

# Tuples with 1 or 0 items looks weird
= (1,)
= (,)

# Saving to and loading a list from a file.
# You probably don't need this, but I included it
# in case you want it for the project.
# Save
= [1,2,3,4]
import json
with open("list.json","w"as f:
json.dump(a, f)

with open("list.json"as f:
print(a)

## Functions
def f(x):
return x**2

print(f(4))
= f(5)
print(a)

# Functions can have no inputs.... although this isn't very useful
def a():
print("Hello World")
a()

# Functions can have multiple inputs
def multiply_and_print(a, b):
print(a*b)

multiply_and_print(5,3)

# Example: Function that returns the product of a list
def product(a):
"Returns the product of all the items in a list"
output = 1
for i in a:
output *= i
return output

print(product([2,3,4,5,6,7]))

# If the first line of a function is a string, then it
# can be viewed by calling help on the function
help(product)

# Example: Write a choose function

def factorial(n):
output = 1
for i in range(2,n+1):
output *= i
return output

def choose(n,r):
"Returns n choose r, or n!/r!(n-r)!"
a = factorial(n)
a /= factorial(r)
a /= factorial(n-r)
return a

print(choose(10,5))

# Example: Write a solve function that solves ax^2+bx+c=0

def solve(a, b, c):
"Returns the solution(s( of ax**2+bx+c=0"
root = (b**2-4*a*c)**(1/2)
if b**2-4*a*== 0:
ans = -b/(2*a)
return ans
else:
ans1 = (-b+root)/(2*a)
ans2 = (-b-root)/(2*a)
return ans1,ans2

# Solve x**2+5x+6=0
print(solve(1,5,6))

# Solve x**2+6x+9=0
print(solve(1,6,9))

# Solve x**2+6x+10=0
print(solve(1,6,10))

# Example: How many times must this function be applied, starting at 2019, to reach 1?
def f(x):
if x%2 == 0:
return x//2
else:
return x+1

= 2019
count = 0
while n != 1:
n = f(n)
count += 1
print(count)
© Matthew Scroggs 2019