Quel est/quels sont le ou les cas en python où l’on peut déclarer une variable (donc un nom) en python sans lui assigner directement une valeur ? Comment s’appelle ce type de variable spécifiquement ?
In [ ]:
%reset
global MyVariable
globals()
Expliquez brièvement le fonctionnement des deux principales boucles en python (for et while) en précisant notamment :
- qu’est ce qui change à chaque itération
- quand est-ce que le boucle s’arrête
In [ ]:
for it in range(10):
print(it)
In [ ]:
it=0
while it < 10:
print(it)
it +=1
Qu’est ce qu’est la généricité (le fait qu’un code soit générique) ?
In [ ]:
def Ajoute_dix(inputData):
if isinstance(inputData, int):
return inputData + 10
elif isinstance(inputData, str):
return int(inputData) + 10
else:
return 10
# applications avec un INT
a=15
print("Le type de a est : {}".format(type(a)))
b=Ajoute_dix(a)
print("En applicant la fonction Ajoute_dix à (a) on obtient : {}".format(b))
print("Qui est de type : {}".format(type(b)))
# applications avec un STR
a='15'
print("Le type de a est : {}".format(type(a)))
b=Ajoute_dix(a)
print("En applicant la fonction Ajoute_dix à (a) on obtient : {}".format(b))
print("Qui est de type : {}".format(type(b)))
In [ ]:
a=5%2
print('a=5%2 is a {} of type {}'.format(a,type(a)))
In [ ]:
a=[1]+3
print('a=[1]+3 is a {} of type {}'.format(a,type(a)))
In [ ]:
a=[1]*3
print('a=a=[1]*3 is a {} of type {}'.format(a,type(a)))
In [ ]:
a=9.0*9
print('a=9.0*9 is a {} of type {}'.format(a,type(a)))
In [ ]:
a=9*"9"
print("a=9*“9” is a {} of type {}".format(a,type(a)))
In [ ]:
a = 4 == "4"
print("a=4=“4” is a {}".format(a,type(a)))
In [ ]:
a=4="4"
print("a=4=“4” is a {}".format(a)))
In [ ]:
x=3
y=5
z=11
a = True
b = False
In [ ]:
(x < y ) and (a or b)
In [ ]:
(x < y < z) != (a != b)
In [ ]:
(a and (not b) and ( -y <= -z ) )
In [ ]:
(not (a and b)) or ((y**2 < z**2))
In [ ]:
liste1 = ["a", "b", "c", "d", "e"]
In [ ]:
liste1[ len(liste1) ]
In [ ]:
liste1[ - len(liste1) ]
In [ ]:
a=2
while a <= 7:
a = a*a + a + 1
print(a)
In [ ]:
a=1
for it in range(5):
a = a + it
print(a)
In [ ]:
liste1 = [1,2,3]
liste2 = liste1
liste2.append(4)
print(liste1)
In [ ]:
x=8
liste1 = [ ]
for it in range(x//2):
liste1.append( x - it )
print( liste1 )
Dans cette partie les codes fournis ne fonctionnent pas, soit parce qu’ils provoquent une erreur, soit parce qu’ils ne produisent pas les résultats attendus. Le but est de les corriger.
In [ ]:
def cube_si_abs_plus_grande_que_un( x ):
if abs( x*x*x >= 1.0 :
print("Erreur")
return
return x*x*x
In [ ]:
def cube_si_abs_plus_grande_que_un( x ):
if abs( x*x*x <= 1.0 ) : ## Condition mal formeé
print("Erreur")
return
return x*x*x
print(cube_si_abs_plus_grande_que_un(3))
In [ ]:
def factorielle( int( n ) ):
res = 1
for it in range(1,n+1):
res = res*it
return res
In [ ]:
print( factorielle( 10 ) )
In [ ]:
def factorielle( n ):
res = 1
for it in range(1,n+1):
res = res*it
return res
In [ ]:
print( factorielle( 10 ) )
In [ ]:
def somme_carre( n ):
res = 0
i=0
while i < n:
i += 1
res += i*i
return res
In [ ]:
def somme_carre( n ):
res = 0
i=0
while i < n:
i += 1
res += i*i
return res
In [ ]:
somme_carre(10)
In [ ]:
from math import srqt #Faute de frape
def somme_sqrt( n ):
res = 0 i=0 while i < n #On ne declare pas les vaiables sur la m ligne
i += 1#Faute d'indentation
res += sqrt(i)
return res
In [ ]:
from math import sqrt #Faute de frape
def somme_sqrt( n ):
res = 0
i=0
while (i < n):
i += 1
res += sqrt(i)
return res
In [ ]:
somme_sqrt(5)
In [ ]:
def somme_racine_cubique( n ):
res = 0
for it in range(n):
res += it**(1/3)
return res
somme_racine_cubique(8)
In [ ]:
def somme_racine_cubique( n ):
res = 0
for it in range(n+1):
res += it**(1/3)
return res
somme_racine_cubique(8)
Dans cette partie les codes fonctionnent, le but étant de comprendre leur effet, ou d’être capable de les simplifier.
In [ ]:
def f(liste):
for i in range(len(liste)):
for j in range(i):
if liste[i][j] != 0:
return False
return True
In [ ]:
a = f( [[1,1,1],
[0,1,1],
[0,0,1]] )
print('Est ce que la matrice contient des 0 sous la diagonale ? {}'.format(a))
In [ ]:
a = f( [[1,0,0],
[0,1,0],
[0,0,1]] )
print(a)
b = f( [[1,1,1],
[0,1,1],
[0,0,1]] )
print(b)
c = f( [[1,0,0],
[1,1,0],
[1,1,1]] )
print(c)
d = f( [[1,1,1],
[1,1,1],
[1,1,1]] )
print(d)
In [ ]:
def f( n ):
if n == 0:
return False
return not f( n - 1 )
In [ ]:
a = f(12)
b = f(8)
c = f(13)
print(a,b,c)
In [ ]:
for it in range(50):
print('le nombre {0} est il impair ? {1}'.format(it,f(it)))
In [ ]:
def f( n ):
res = 0
for it in range(n):
if it % 5 == 1:
res = res + it
if it % 7 == 1:
res = res + it
if it % 9 == 1:
res = res + it
return res
In [ ]:
for it in range(50):
print('Si on applique à {} la fonction on obtient {} '.format(it,f(it)))
In [ ]:
def f( n ):
res=0
for it in range(n):
if (it % 5 == 1): res += it
if (it % 7 == 1): res += it
if (it % 9 == 1): res += it
return res
In [ ]:
def f (n ):
l=range(n)
liste1=[it for it in l if it % 5 == 1]
liste2=[it for it in l if it % 7 == 1]
liste3=[it for it in l if it % 9 == 1]
return (sum(liste1)+sum(liste2)+sum(liste3))
In [ ]:
for it in range(50):
print('Si on applique à {} la fonction on obtient {} '.format(it,f(it)))
In [ ]:
from time import clock
def duree(fonction, n=10):
debut = clock()
fonction(n)
fin = clock()
return fin - debut
In [ ]:
def somme_n_entiers1(n):
ref=0
l=range(n+1)
for it in l:
if it % 2 == 0:
ref += it
return ref
In [ ]:
def somme_n_entiers2(n):
it=0
ref=0
l=range(n+1)
while (it < len(l)):
if (l[it] % 2 == 0):
ref += it
it += 1
return ref
In [ ]:
def SumRec(n):
if n == 0:
return(0)
elif n % 2 != 0:
return(n-1 + SumRec(n-3))
else :
return(n + SumRec(n-2))
In [ ]:
def SommePair(n):
return sum(range(0,n+1,2))
In [ ]:
In [ ]:
print('{:>25}> {:f} s'.format('utilisation de la fonction for ',duree(somme_n_entiers1) ))
print('{:>25}> {:f} s'.format('utilisation de la fonction while ',duree(somme_n_entiers2) ))
print('{:>25}> {:f} s'.format('utilisation la plus simple ',duree(SommePair) ))
print('{:>25}> {:f} s'.format('utilisation la recursivité ',duree(SumRec) ))
In [ ]:
def Test_11(My_Liste):
for it in My_Liste:
if it % 11 == 0:
return True
break
return False
In [ ]:
Test_11([1, 2, 3, 22])
In [ ]:
def div_euclidiene(a,b):
q,r=0,a
while r>=b:
q,r=q+1,r-b
return(q,r)
In [ ]:
a=546
b=34
quotient, reste = div_euclidiene(a,b)
print("La Division euclidienne peut s'ecrire \n {0} = {1} x {2} + {3}".format(a,b,quotient,reste))