def collatz(n):
count = 0
print(n)
while n != 1:
if n % 2 == 0:
n = n // 2
else:
n = 3 * n + 1
print(n)
count += 1
return count
iterations = collatz(42)
print("needed", iterations, "iterations")
def maximum(li):
if li == []:
return None
max_so_far = li[0]
for i in range(1, len(li)):
value = li[i]
if value > max_so_far:
max_so_far = value
return max_so_far
print(maximum([]))
print(maximum([1]))
print(maximum([1, 2, 3]))
print(maximum([3, 2, 1]))
We can use slicing of lists for making the code shorter, but also make it more expressive:
def maximum(li):
if li == []:
return None
max_so_far = li[0]
for value in li[1:]:
if value > max_so_far:
max_so_far = value
return max_so_far
print(maximum([]))
print(maximum([1]))
print(maximum([1, 2, 3]))
print(maximum([3, 2, 1]))
import math
def std_dev(li):
n = len(li)
if n == 0:
return None
elif n == 1:
return 0.0
avg = sum(li) / n
deviations = 0.0
for number in li:
deviations += (number - avg) ** 2
std_dev = math.sqrt(deviations / (n - 1))
return std_dev
print(std_dev([]))
print(std_dev([1]))
print(std_dev([1,1,1]))
print(std_dev([1,2,3]))