Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • m-bah-ange-pascal.tanoh.etu/ap-tanoh-mbah-ange-pascal
1 result
Select Git revision
Show changes
Commits on Source (3)
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
:module: ap_decorators
:author: FIL - Faculté des Sciences et Technologies - Univ. Lille <http://portail.fil.univ-lille1.fr>_
:date: 2018, september
"""
from functools import wraps
def trace(fct):
'''
Decorator for tracing every call to fct.
Recursive calls are indented.
:Example:
>>> @trace
... def fact(n):
... if n == 0:
... return 1
... else:
... return n * fact(n - 1)
>>> fact(5)
-> fact((5,), {})
... -> fact((4,), {})
...... -> fact((3,), {})
......... -> fact((2,), {})
............ -> fact((1,), {})
............... -> fact((0,), {})
............... <- 1
............ <- 1
......... <- 2
...... <- 6
... <- 24
<- 120
120
'''
@wraps(fct)
def wrapper(*args, **kwargs):
dots = '...' * wrapper.__depth
print('{:s} -> {:s}{:s}'.format(dots, wrapper.__name__, repr((args, kwargs))))
wrapper.__depth += 1
y = fct(*args, **kwargs)
wrapper.__depth -= 1
print('{:s} <- {:s}'.format(dots, repr(y)))
return y
wrapper.__depth = 0
return wrapper
def count(fct):
'''
decorator for counting calls to function fct
:Example:
>>> @count
... def fact(n):
... if n == 0:
... return 1
... else:
... return n * fact(n - 1)
>>> fact.counter
0
>>> fact(5)
120
>>> fact.counter
6
'''
@wraps(fct)
def wrapper(*args, **kwargs):
y = fct(*args, **kwargs)
wrapper.counter += 1
return y
wrapper.counter = 0
return wrapper
def memoize(fct):
'''
decorator for memoizing computed values of function fct
:Example:
>>> @count
... @memoize
... def fact(n):
... if n == 0:
... return 1
... else:
... return n * fact(n - 1)
>>> fact.counter
0
>>> fact(5)
120
>>> fact.counter
6
>>> fact.counter = 0
>>> fact(5)
120
>>> fact.counter
1
'''
cache = dict()
@wraps(fct)
def wrapper(*args, **kwargs):
key = repr((args, kwargs))
if key in cache:
return cache[key]
else:
y = fct(*args, **kwargs)
cache[key] = y
return y
return wrapper
if __name__ == '__main__':
import doctest
doctest.testmod(optionflags=doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS, verbose=False)
#/TANOH/bin/python3 PASCAL
#31/01/2024
#TP3 GROUPE 15
def fibo(n:int)->int:
"""renvoie le terme de la suite de Fibonacci.
Précondition :
Exemple(s) :
$$$ fibo(10)
55
$$$ fibo(4)
3
"""
res = 0
if n == 0:
res = 0
elif 0 < n <=2:
res = res + 1
else:
res = fibo(n-1) + fibo(n-2)
return res
\ No newline at end of file
#/TANOH/bin/python3 PASCAL
#31/01/2024
#TP3 GROUPE 15
import turtle
def zig_zag():
"""dessine un Zig zag
Précondition : None
Exemple(s) :
$$$
"""
for i in range(5):
turtle.left(45)
turtle.forward(40)
turtle.right(90)
turtle.forward(40)
turtle.left(45)
def vonkoch(l:int|float, n:int):
"""à_remplacer_par_ce_que_fait_la_fonction
Précondition :
Exemple(s) :
$$$
"""
turtle.speed("fast")
if n == 0:
turtle.forward(l)
else:
vonkoch(l/3, n-1)
turtle.left(60)
vonkoch(l/3, n-1)
turtle.right(120)
vonkoch(l/3, n-1)
turtle.left(120)
vonkoch(l/3, n-1)
return turtle
\ No newline at end of file
#/TANOH/bin/python3 PASCAL
#31/01/2024
#TP3 GROUPE 15
def somme_de_deux_nombres(a:int, b:int)->int:
""" Renvoie la sommes des entiers
Précondition : aucune
Exemple(s) :
$$$ somme_de_deux_nombres(100,200)
300
$$$ somme_de_deux_nombres(250,50)
300
"""
if a == 0 :
res = b
else:
res = somme_de_deux_nombres(a-1, b+1)
return res
def binomial(n:int, p:int)->float:
"""à_remplacer_par_ce_que_fait_la_fonction
Précondition : n>=p
Exemple(s) :
$$$ binomial(5,2)
10
$$$ binomial(10,6)
210
"""
res = 0
if p == 0 or n==p:
res = 1
else:
res = binomial(n-1,p) + binomial(n-1, p-1)
return res
def is_palindromic(mot:str)->bool:
"""à_remplacer_par_ce_que_fait_la_fonction
Précondition : Aucune
Exemple(s) :
$$$ is_palindromic('assa')
True
$$$ is_palindromic('papa')
False
"""
mot = mot.lower()
if 0<=len(mot)<=1:
res = True
else :
res = mot[0] == mot[-1] and is_palindromic(mot[1:-1])
return res
\ No newline at end of file