Les commentaires introduits par # qui se terminent avec la ligne :
Les commentaires entre “”” (triple “) pouvant être sur plusieurs lignes :
Données et structure de données :
Flot d’instructions :
Definition de bloc / nommer un flots d'instruction / sous-programme :
L’affectation permet de modifier la valeur d’une variable. C’est donc la seule instruction : elle modifie l’état.
Remarque : L'affectation est parfois caché (effet de bord) par des traitements lors de l’appel d’une procédure
Une donnée se trouve en mémoire: elle à une référence (son adresse)
En fonction de son type : elle prend un certain espace (une taille) en mémoire. Le type permet de connaître la taille.
Comment manipuler les données? Soit on connaît leurs références, soit on les étiquette (on les nomme)
En Python les variables (sont nommé “nom d’une donnée”) représente en fait la référence vers les données.
x = 2
y = [1, 2]
Car en fait tout est objet (tout est référence)
id
donne la référenceid(x)
id(2)
Remarquer que x et 2 ont la même référence! (ie le même identifiant)
type
en pythion¶type(x)
type(y)
x = 2.0
y = x
print(x, y, type(x), type(y), id(x), id(y), id(2.0))
Voici une séquence :
z = 3.0
print("Z : ", z, id(z), type(z))
w = z
print("W : ", w, id(w), type(w))
Le résultat de l'exécution de la cellule vous semble compréhensible?
x = 2
x = 3.0
x = [1, 2, 3]
car x est le nom (la référence) il designera une nouvelle référence après l'affectation
x = 2
print(x, type(x), id(x))
x = 2.0
print(x, type(x), id(x))
x= [1, 2, 3]
print(x, type(x), id(x))
# c'est quoi d'après vous?
globals()['x']
L’assignation par référence n’a vraiment d’influance (effet sur l'état) que dans le cas où un objet est mutable.
En Python, il existe en effet deux types d’objets:
Les mutables sont ceux qu’on peut modifier après leur création.
Les non mutables sont ceux qu’on ne peut pas modifier après création.
On ne peut pas modifier 152 une fois que l’objet int est créé. Mais on peut rajouter des éléments à une liste après qu’elle soit créée. Les ints sont non mutables. Les listes sont mutables. Cela peut surprendre, mais les strings sont non mutables. Même quand vous faites:
pa = "papa"
pi = pa.replace("p", "m")
print(pa, id(pa))
print(pi, id(pi))
# L'affectation, l'affectation //
x = 3.0
y,z = 10,x
print(x,y,z)
# Echange de valeurs entre 2 variables en 1 instruction
x,y = y,x
print(x,y)
A = 10
B = 100
A = B
B = A
print(A,B)
# Mais
A,B = 10,100
print("1. ",A,B)
A,B = B,A
print("2. ",A,B)
Un programme en paradigme impératif Python est composé d'instructions.
{ ... }
pour le début et la fin de bloc sont remplacées par les niveaux d'indentations, terminé par une ligne blancheEn définitive, Python oblige à écrire du code lisible, et à prendre de bonnes habitudes conservables dans d'autres langages, ce qui en est fait un langage idéal pour apprendre la programmation. Je sais ce n'est pas votre cas, mais....
Un programme Python est construit à partir de blocs de code. Un block est un morceau de texte de programme Python qui est exécuté en tant qu'unité. Les éléments suivants sont des blocs :
quelques présentations rapide avant de détailler les différentes structuration d'un programme Python.
pour apprendre un nouveaux language il faudrait apprendre comment faire ceci:
# premier exemple! (sans explication: que fait-il?)
for i in [0, 1, 2]:
print("valeur :", i)
print("Fin")
Noter le :
et les tabulations, pas besoin de begin/end ou {, } ni de ; pour faire des blocs d'instructions
(3 * 4) + 2
profitons en m^me temps de présenter queleus type de base dans python (enter, flotant, chaine de caractères (string)
x = (3 + 5) / 4
y = 2 * x
z = "Un texte"
w = 'un autre texte'
#Du texte formaté f""
A = f"x={x} et y={y}"
C = "x={x} et y={y}"
B = None
Vérifier les valeurs des variables x,y,z,w,A et B
Les opérateurs sont des caractères ou des chaines de caractères qui on un sens en fonction du type de données manipulé:
f"le / {5/2} et // {5//2}"
La fonction print
# La fonction print
print(f"le / {5%2} et // {5//2}")
print(5*x)
condition = True
if (condition):
x = 2
print(x)
else:
y = 5
print(y)
if (condition):
print ("Vraie")
else:
print("Faux")
Essayer avec condition False si elle était True et True si elle était False
x = 10
while (x > 0):
print(x, end=' ')
x = x -1
for
¶for i in range(10):
print(i, end=':')
help(print)
# cas de range
range(10)
list(range(10))
def f(x,y):
return (x+y)
f(3,4)
l = [1,2,3,4,5,6,7]
print(l)
l[4] = 100
l
t = (1,2,3,4,5,6)
e = {1, 2, 3, 2, 5}
print(e)
d = {3:4, "toto":6, "tuple":t}
d
d['titi'] = 11
d
d['ouf']
# Mixons tout ceci
print("Bonjours auditeurs UTC503!")
a,b=0,10
if (a == 0):
x=b
else:
x = a + b
#La ligne blanche au dessus exprime la fin du if (tout simplement) ou le retour a la tabulation précedente
while (x < 15):
print(x)
x = x + 1
print(a,b,x)
# Ca marche aussi
print("Bonjours auditeurs UTC503!")
a,b=0,10
if (a == 0):
x=b
else:
x = a + b
while (x < 15):
print(x)
x = x + 1
print(a,b,x)
J'en profite pour introduire des astuces de la fonction print
Une fonction fantastique : help
help(print)
x,a = 0,0
print("1.",x,a,sep=" : ")
while (x < 10):
x = x + 1
print("2.* Dans la boucle x=", x, sep="", end=" ")
a = a + 1
print("\n3. a la sortie de la boucle x>=10", x)
print("4. Que vaut a?", a)
# Le même?
x,a = 0,0
print("1.",x,a,sep=" : ")
while (x < 5):
x = x + 1
print("2.* Dans la boucle x=", x, sep="", end=" ")
a = a + 1
print("\n3. a la sortie de la boucle x>=10", x)
print("4. Que vaut a?", a)
# Conseil, mettre une ligne blanche pour séparer les blocs. C'est encore plus lisible ;)
x,a = 0,0
print("1.",x,a,sep=" : ")
while (x < 5):
x = x + 1
print("2.* Dans la boucle x=", x, sep="", end=" ")
a = a + 1
print("\n3. a la sortie de la boucle x>=10", x)
print("4. Que vaut a?", a)
Les langages de programmation impératif, (vous le saurez ;)
=> La variables, représente une association (on dit aussi une liaison) entre un symbole et une valeur. Le symbole (comme une étiquette sur un document) permettant au programmeur d'identifier et manipuler ces valeurs.
Le typage d'une variable consiste à associer un « type » de donnée [une méta donnée une information], permettant au langage de savoir si celle-ci est de type numérique, textuel, etc.,
Le typage dynamique consiste à laisser le langage réaliser cette opération de typage « à la volée », lors de l'exécution du code.
Un langages statiquement typés demandent au programmeur de déclarer expressément, pour chaque variable qu'il introduit dans son code, son typage.
Le typage dynamique est une solution très commode pour le développement rapide de programmes, où
# la variable est définie en python lors de la première opération d'affectation
x = 3
y = k + x
On peut distinguer deux grands types de langages : les langages interprétés et les langages compilés.
Le langage interprété plutôt typage dynamique
Le langage compilé plutôt typage statique