12 from __future__
import print_function
15 VERSION =
'natseq --- 2010 March 16'
24 """Renvoie le produit des éléments de s
25 (Si s est vide alors renvoie 1)
27 Pre: s: séquence de naturels
40 """Renvoie la somme des éléments de s
42 (Si s est vide alors renvoie 0)
44 Pre: s: séquence de naturels
57 """Renvoie la somme des éléments de s ** k
58 (Si s est vide alors renvoie 0)
59 (Si k == 0 alors renvoie len(s))
61 Pre: s: séquence de naturels
75 if __name__ ==
'__main__':
82 debug.test_begin(VERSION, __debug__)
84 print(
'prod()...', end=
''); sys.stdout.flush()
88 assert prod([1, 2]) == 2,
prod([1, 2])
89 assert prod([2, 3]) == 6,
prod([2, 3])
90 assert prod([1, 2, 0]) == 0,
prod([1, 2, 0])
92 assert prod(range(1, n + 1)) == math.factorial(n), \
93 (n,
prod(range(1, n + 1)), math.factorial(n), range(1, n + 1))
94 print(
'ok'); sys.stdout.flush()
97 print(
'sum()...', end=
''); sys.stdout.flush()
98 assert sum([]) == 0,
sum([])
99 assert sum([0]) == 0,
sum([0])
100 assert sum([1]) == 1,
sum([1])
101 assert sum([1, 2]) == 3,
sum([1, 2])
102 assert sum([1, 2, 0]) == 3,
sum([1, 2, 0])
103 for n
in range(1000):
104 assert sum(range(n + 1)) == n*(n + 1)//2, \
105 (n,
sum(range(n + 1)), n*(n + 1)//2, range(n + 1))
106 print(
'ok'); sys.stdout.flush()
109 print(
'sum_pow()...', end=
''); sys.stdout.flush()
128 for n
in range(1000):
129 assert sum_pow(range(n + 1), 0) == n + 1, \
130 (n,
sum_pow(range(n + 1), 0), range(n + 1))
131 assert sum_pow(range(n + 1), 1) == n*(n + 1)//2, \
132 (n,
sum_pow(range(n + 1), 1), n*(n + 1)//2, range(n + 1))
133 assert sum_pow(range(n + 1), 2) == n*(n + 1)*(n*2 + 1)//6, \
134 (n,
sum_pow(range(n + 1), 2), n*(n + 1)*(n*2 + 1)//6, range(n + 1))
135 assert sum_pow(range(n + 1), 3) == (n*(n + 1)//2)**2, \
136 (n,
sum_pow(range(n + 1), 3), (n*(n + 1)//2)**2, range(n + 1))
137 print(
'ok'); sys.stdout.flush()