N = eval(input("Nombre de personnes"))
sucre, beurre, farine , oeufs = 175, 150, 250, 4
s, b, f, o = int(N*sucre/4), int(N*beurre/4), int(N*farine/4), int(N*oeufs/4)
print("Pour ",N," personnes, il faut ",s,"g de sucre, ",b,"g de beurre, ",f,"g de farine et ",o," oeufs",sep='')
N = eval(input("Nombre de personnes"))
M = eval(input("Nombre de places dans une voiture"))
nvoiture = N//M
reste = N%M
if reste is 0:
print("Il faut",nvoiture,"voitures transportant",M,"personnes.")
else:
print("Il faut",nvoiture,"voitures transportant",M,"personnes et une transportant",reste,"personnes.")
from cmath import sqrt, exp, pi
print(sqrt(-1), exp(pi*1j))
from math import sin, pi # manque l'importation de la constante pi!
print(sin(pi/2))
for i in range(1,11):
for j in range(1,11):
print(i,'*',j,'=',i*j)
from math import sqrt
x = 3
a = x
for i in range(5):
print(a)
ap = 0.5*(a+x/a)
a = ap
# a = 0.5*(a+x/a) # on aurait pu remplacer les deux lignes précédentes par celle-ci
print(a, sqrt(x))
L = list(range(30))
print(L[::2])
print(list(filter(lambda x: not x%7, L)))
L.reverse()
print(L)
L = 103428
print( sum( [ int(c) for c in str(L) ] ) ) # somme des chiffres du nombre
Table = [ [i*j for j in range(1,11)] for i in range(1,11) ]
for i in range(10):
for j in range(10):
print(Table[i][j],end=' ')
print()
# Remarque: ne pas utiliser
# Table = [ [0]*10 ]*10
# pour initialiser une liste vide, une référence des listes intérieures est duppliquée (cf memento)
L = [1,2,1,3,2,1,3,2,1,1,2,1]
d = {}
for i in L:
if i in d : d[ i ] += 1
else : d[ i ] = 1
print(d) # affiche l'histogramme des nombres contenus dans la liste
a = [ 1, 2 ]
b = [ 3, 4 ]
a[0] = b
b[0] = a
print(a[0][0][0][0][0][0][1])
print(a[0][0][0][0][0][1])
Le mécanisme repose sur le fait que l'affectation faire référence à la liste $b$ à la ligne 3 et $a$ à la ligne 4 mais que ces listes ne sont pas copiées. Ainsi, après la ligne 3, la liste $a$ est telle que $a = [ b, 2 ] = [ [3,4], 2]$ Après la ligne 4, on aura $a = [ [a,4], 2 ]$ Le premier élément du premier élément de $a$, soit $a[0][0]$ fait donc référence à $a$ elle-même et non à une copie de $a$. C'est donc une construction récursive dans laquelle $a[0][0]$ représente la même chose que $a$ si bien que $a[0][0][0][0][0][0][1] \equiv a[0][0][0][0][1] \equiv a[0][0][1] \equiv a[1] \equiv 2$. Ce sera toujours le résultat pour un nombre pair de [0] avant le [1]. S'il y a un nombre impair $a[0] \equiv b$ donnera $b[1] \equiv 4$ comme on le voit dans les exemples ci-dessous.
from pylab import *
%matplotlib inline
x = np.linspace(-3,3.0,num=101)
y = exp(x)
plot(x,y)
xlabel('$x$',size=24)
ylabel('$f(x)$',size=24)
show()
def derive(f,x,eps=1e-6):
return (f(x+eps)-f(x-eps))/(2.0*eps)
from math import sqrt
print(derive(sqrt,3,1e-6), 1/(2*sqrt(3)))
def f():
global x
x = 0
f ()
print(x)
Le problème est que la variable $x$ est définie localement à l'intérieur du corps de $f$. Elle n'est donc pas accessible à l'espace global pour la commande print, d'où l'erreur. Pour la rendre accessible à l'espace global, il faut utiliser le mot-clé global et modifier ainsi le code:
def Factorielle(n):
res = 1
for i in range(1,n+1):
res *= i
return res
from math import factorial
print(Factorielle(4), factorial(4))
def Factorielle(n):
if n == 1 or n == 0: return 1
return n*Factorielle(n-1)
print(Factorielle(8), factorial(8))