During this activity, students should be able to:
Solve the following set of problems using Python 3. Run and test each of your programs to make sure they work as expected.
Write a program called positives.py
. Define in this program a function called positives(x)
that takes a list of numbers x
as its argument, and returns a new list that only contains the positive numbers of x
.
Test your program with the following main()
function:
def main(): print(positives([-21, -31])) print(positives([-48, -2, 0, -47, 45])) print(positives([-9, -38, 49, -49, 32, 6, 4, 26, -8, 45])) print(positives([-27, 48, 13, 5, 27, 5, -48, -42, -35, 49, -41, -24, 11, 29, 33, -8, 45, -44, 12, 46])) print(positives([-2, 0, 27, 47, -13, -23, 8, -28, 23, 7, -29, -24, -30, -6, -21, -17, -35, -8, -30, -7, -48, -18, -2, 1, -1, 18, 35, -32, -42, -5, 46, 8, 0, -31, -23, -47, -4, 37, -5, -45, -17, -5, -29, -35, -2, 40, 9, 25, -11, -32]))
The expected program output should be:
[] [0, 45] [49, 32, 6, 4, 26, 45] [48, 13, 5, 27, 5, 49, 11, 29, 33, 45, 12, 46] [0, 27, 47, 8, 23, 7, 1, 18, 35, 46, 8, 0, 37, 40, 9, 25]
Write a program called dotproduct.py
. Define in this program a function called dotproduct(a, b)
that takes two arguments: the lists a
and b
. It returns the result of performing the dot product of a
times b
. The dot product is an algebraic operation that takes two equal-length sequences of numbers and returns a single number obtained by multiplying corresponding entries and then summing those products:
Test your program with the following main()
function:
def main(): print(dotproduct([], [])) print(dotproduct([1, 2, 3], [4, 5, 6])) print(dotproduct([1.3, 3.4, 5.7, 9.5, 10.4], [-4.5, 3.0, 1.5, 0.9, 0.0])) print(dotproduct([92, -39, 82, 16, -64, -1, -16, -45, -7, 39, 45, 0, 34, -3, -51, 71, 23, -8, 41, -40], [-50, -81, 94, -84, 47, 86, 52, 19, -57, 36, -20, 11, -42, 48, 14, 13, 9, -67, 92, 96]))
The expected program output should be:
0 32 21.45 357
Write a program called replicate.py
. Define in this program a function called replicate(n, x)
that takes two arguments: a list x
and an integer number n
, where n
≥ 0. It returns a new list that replicates n
times each element contained in x
.
Test your program with the following main()
function:
def main(): print(replicate(7, [])) print(replicate(0, ['a', 'b', 'c'])) print(replicate(3, ['a'])) print(replicate(3, ['a', 'b', 'c'])) print(replicate(4, [1, 2, 3, 4]))
The expected program output should be:
[] [] ['a', 'a', 'a'] ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'] [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4]
The Fibonacci sequence is:
$$ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, \ldots $$The sequence starts with 0 and 1. Any number that follows is calculated by adding the previous two numbers.
Write a program calledfibo.py
. Define in this program a function called fibo(n)
that returns a list with the first n
Fibonacci numbers.
Test your program with the following main()
function:
def main(): print(fibo(0)) print(fibo(1)) print(fibo(2)) print(fibo(5)) print(fibo(10)) print(fibo(20)) print(fibo(30)) print(fibo(100))
The expected program output should be:
[] [0] [0, 1] [0, 1, 1, 2, 3] [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181] [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229] [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976, 7778742049, 12586269025, 20365011074, 32951280099, 53316291173, 86267571272, 139583862445, 225851433717, 365435296162, 591286729879, 956722026041, 1548008755920, 2504730781961, 4052739537881, 6557470319842, 10610209857723, 17167680177565, 27777890035288, 44945570212853, 72723460248141, 117669030460994, 190392490709135, 308061521170129, 498454011879264, 806515533049393, 1304969544928657, 2111485077978050, 3416454622906707, 5527939700884757, 8944394323791464, 14472334024676221, 23416728348467685, 37889062373143906, 61305790721611591, 99194853094755497, 160500643816367088, 259695496911122585, 420196140727489673, 679891637638612258, 1100087778366101931, 1779979416004714189, 2880067194370816120, 4660046610375530309, 7540113804746346429, 12200160415121876738, 19740274219868223167, 31940434634990099905, 51680708854858323072, 83621143489848422977, 135301852344706746049, 218922995834555169026]
In statistics, the standard deviation \(\sigma\) is a measure of how spread out numbers are. It has the following formula:
$$ \sigma = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(x_i-\bar{x})^2} $$Where \(\bar{x}\) is the arithmetic mean and is defined as follows:
$$ \bar{x} = \frac{1}{n}\sum_{i=1}^{n}x_i $$ Write a program calleddeviation.py
. Define in this program a function called deviation(x)
that returns the standard deviation of the list of numbers contained in x
.
Test your program with the following main()
function:
def main(): print(deviation([42])) print(deviation([10, 20])) print(deviation([1, 2, 3, 4, 5])) print(deviation([7, 7, 7, 7, 7, 7, 7])) print(deviation([32, 88, 20, 26, 14, 24, 26, 44, 14, 94, 94, 72, 8, 46, 92, 50, 38, 56, 60, 84]))
The expected program output should be:
0.0 5.0 1.4142135623730951 0.0 28.673855687716646
Write a program called compress.py
. Define in this program a function called compress(x)
that takes a list x
as its argument. If x
contains consecutive repeated elements, they should be replaced with a single copy of that element. The order of the elements should not be changed.
Test your program with the following main()
function:
def main(): print(compress(['a', 'a', 'a', 'a', 'b', 'c', 'c', 'a', 'a', 'd', 'e', 'e', 'e', 'e'])) print(compress(['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'])) print(compress(['a', 'b', 'c', 'd'])) print(compress([]))
The expected program output should be:
['a', 'b', 'c', 'a', 'd', 'e'] ['a'] ['a', 'b', 'c', 'd'] []