Skip to content
Snippets Groups Projects
Commit 5c533257 authored by Romain Vuillemot's avatar Romain Vuillemot
Browse files

Mise à jour code exercices

parent 3dc01f7f
Branches master
No related tags found
No related merge requests found
def addition(a, b):
return a + b
def addition_inf(*argv):
res = 0
for arg in argv:
......
carres = []
for x in range(10):
if x % 2:
carres.append(x * x)
list(map(lambda x: x * x, filter(lambda x: x % 2, range(10))))
[x * x for x in range(10) if x % 2]
# https://docs.python.org/3/tutorial/errors.html
import addition
class Error(Exception):
"""Classe de base d'exceptions"""
pass
class ValueTooSmallError(Error):
"""Si la valeur est trop petite"""
pass
if __name__ == "__main__":
a, b = 1, 2
try:
if a < 0 or b < 0:
raise ValueTooSmallError
# assert addition(a, b) == 3
# assert not addition(a, b) == 4
# addition(a, "c")
# raise EnvironmentError
except AssertionError:
print("test non validé")
except TypeError:
print("problème de typage")
except ValueTooSmallError:
print("valeur trop petite")
except:
print("erreur inconnue")
finally:
print("c'est la fin, toujours exécuté")
from math import pi
s = "Python"
s.center(10) # centrer sur 10 positions
print(s)
# Donne -->' Python '
s.center(10,"*") # centrer sur 10 positions en complétant par des '*'
# Donne -->'**Python**'
print(s)
s = "Training"
s.ljust(12) # justifier à gauche sur 12 positions}
# Donne -->'Training '
print(s)
s.ljust(12,":")
# Donne -->'Training::::'
s = "Programming"
s.rjust(15)
# Donne -->' Programming'
s.rjust(15, "~")
# Donne -->'~~~~Programming'
account_number = "43447879"
account_number.zfill(12)
# Donne -->'000043447879'
# Même chose avec rjust :
account_number.rjust(12,"0")
# Donne -->'000043447879'
s = 'Hello, world.'
str(s)
# Donne -->'Hello, world.'
repr(s)
# Donne --> "'Hello, world.'"
str(1/7)
# Donne --> '0.14285714285714285'
r=2
print("La surface pour un rayon {rayon:3d} sera {surface:8.3f}".format(surface=r*r*pi, rayon=r))
# Donne --> 'La surface pour un rayon 2 sera 12.566'
x = 10 * 3.25
y = 200 * 200
s = 'The value of x is ' + repr(x) + ', and y is ' + repr(y) + '...'
print(s)
# Donne --> The value of x is 32.5, and y is 40000...
# Le repr() d'un string ajoute des quotes et backslashes:
hello = 'hello, world\n'
str(hello)
# Donne --> 'hello world\n'
repr(hello)
# Donne --> 'hello, world\\n' %* {\color{magenta} noter le double slash} *)
# L'argument d'appel de repr() peut être n'importe quel objet Python :
repr((x, y, ('spam', 'eggs')))
# Donne -->"(32.5, 40000, ('spam', 'eggs'))"
for x in range(1, 11):
print(repr(x).rjust(2), repr(x*x).rjust(3), repr(x*x*x).rjust(4))
# Donne -->
# 1 1 1
# 2 4 8
# 3 9 27
# 4 16 64
# 5 25 125
# 6 36 216
# 7 49 343
# 8 64 512
# 9 81 729
# 10 100 1000
for x in range(1, 6):
print(repr(x).rjust(2), end='#'*x+'\n') # on ajoute x fois \# + \textbackslash n à la fin de chaque ligne} *)
# Donne -->
# 1#
# 2##
# 3###
# 4####
# 5#####
#
\ No newline at end of file
L = []
L.ap
\ No newline at end of file
from math import sqrt
def premier(a):
# si == 1 ou ==2
if(a == 1 or a== 2):
return True
# si pair
elif(a % 2 == 0):
return False
else:
if (int(sqrt(a)) == sqrt(a)):
return False
for k in range(3, int(sqrt(a)+1), 2):
if a % k == 0:
return False
return True
# autre
assert premier(1) == True
assert premier(2) == True
assert premier(4) == False
assert premier(9) == False
assert premier(3) == True
assert premier(20) == False
assert premier(23) == True
assert premier(6067) == True
def trouveOuDitOuInserer(sequence, val, inf=0, sup=None):
if sup is None:
sup = len(sequence)-1
if sup < inf :
return inf
mid = (inf + sup) // 2
if sequence[mid] == val: return mid
if sequence[mid] < val: inf = mid + 1
else: sup = mid-1
return trouveOuDitOuInserer(sequence, val, inf, sup)
3
ary = (2, 3, 4, 6, 7,9,10, 12, 13)
print('On cherche dans ', ary, ' et les places sont : ')
print('7 ', trouveOuDitOuInserer(ary, 7, 0, len(ary) -1));input('?');
print('2 ',trouveOuDitOuInserer(ary, 2, 0, len(ary) -1));input('?')
print('5 ',trouveOuDitOuInserer(ary, 5, 0, len(ary) -1));input('?')
print('15', trouveOuDitOuInserer(ary, 15, 0, len(ary) -1));input('?')
print('1', trouveOuDitOuInserer(ary, 1, 0, len(ary) -1));input('?')
""" tests
On cherche dans (2, 3, 4, 6, 7, 9, 10, 12, 13) et les places sont :
7 4
2 0
5 3
15 9
1 0
"""
\ No newline at end of file
from random import randint;
def dichotomie(liste, val):
print("La liste reçue : ",liste, ' de taille ', len(liste))
if liste==[] : return False
m=len(liste)//2
print('\ton compare liste[',m,']=', liste[m], ' et ', val)
if liste[m] == val: return True
elif liste[m] > val: return dichotomie(liste[:m], val) # dans liste[:m], liste[m] n'est pas inclu.
else: return dichotomie(liste[m+1:], val) # dans liste[X:], liste[X] est inclu.
ll=[randint(1,50) for i in range(10)]
ll.sort()
x=int(input("chercher une valeur entre 1 et 50 dans la liste " + repr(ll) + " ? : "))
print("La présence de ", x, " dans la liste : ", ll, dichotomie(ll, x))
"""
# Et un cas de succès :
chercher une valeur entre 1 et 50 dans la liste [4, 7, 10, 14, 19, 27, 31, 32, 35, 47] ? : 32
La liste reçue : [4, 7, 10, 14, 19, 27, 31, 32, 35, 47] de taille 10
on compare liste[ 5 ]= 27 et 32
La liste reçue : [31, 32, 35, 47] de taille 4
on compare liste[ 2 ]= 35 et 32
La liste reçue : [31, 32] de taille 2
on compare liste[ 1 ]= 32 et 32
La présence de 32 dans la liste : [4, 7, 10, 14, 19, 27, 31, 32, 35, 47] True
# Et un cas d'échec :
chercher une valeur entre 1 et 50 dans la liste [22, 23, 30, 33, 37, 42, 42, 43, 47, 49] ? : 35
La liste reçue : [22, 23, 30, 33, 37, 42, 42, 43, 47, 49] de taille 10
on compare liste[ 5 ]= 42 et 35
La liste reçue : [22, 23, 30, 33, 37] de taille 5
on compare liste[ 2 ]= 30 et 35
La liste reçue : [33, 37] de taille 2
on compare liste[ 1 ]= 37 et 35
La liste reçue : [33] de taille 1
on compare liste[ 0 ]= 33 et 35
La liste reçue : [] de taille 0
La présence de 35 dans la liste : [22, 23, 30, 33, 37, 42, 42, 43, 47, 49] False
"""
\ No newline at end of file
INT_MIN = 0
def cutRod(price, n):
# Initialisation tables de cache
val = [0 for x in range(n+1)]
val[0] = 0
for i in range(1, n+1):
max_val = INT_MIN
for j in range(i):
max_val = max(max_val, price[j] + val[i-j-1])
val[i] = max_val
return val[n]
if __name__=="__main__":
arr = [1, 5, 8, 9, 10, 17, 17, 20]
size = len(arr)
print("Valeur maximum de découpe " + str(cutRod(arr, size)))
\ No newline at end of file
def duplicatas(L):
s = set()
for x in L:
if x in s:
return True
s.add(x)
return False
if __name__=="__main__":
assert duplicatas([3, 5, 3]) == True
assert duplicatas([3, 5, 5]) == False
import timeit
print(timeit.timeit("x = 2 + 2"))
#.0188..............
print(timeit.timeit("x = range(10)"))
#.589.........
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment