Open In Colab

Si vous avez déja des connaissances de programmation vous pouvez commencer ici

Parcourons les basiques

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:

  1. affectation
  2. bloc
  3. conditions
  4. repétition
  5. Les types de données prédéfinies
  6. Comment créer de nouvaux type de données
  7. comment structurer son code par les sous-programmes ou modules
In [2]:
# premier exemple! (sans explication: que fait-il?)
for i in [-1, 1, 2, 10]:
    print("valeur :", i)
print("Fin")
valeur : -1
valeur : 1
valeur : 2
valeur : 10
Fin

Noter le : et les tabulations, pas besoin de begin/end ou {, } ni de ; pour faire des blocs d'instructions

Les expressions

In [ ]:
(3 * 4) + 2

L'affectation

profitons en m^me temps de présenter queleus type de base dans python (enter, flotant, chaine de caractères (string)

In [ ]:
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

In [ ]:

Essayer la différence entre / et //

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é:

  • +, -, *, /, //, %, ...
In [ ]:
f"le / {5/2} et // {5//2}"

La fonction print

In [ ]:
# La fonction print
print(f"le / {5%2} et // {5//2}")
print(5*x)

La Conditionelle

In [ ]:
condition = True
In [ ]:
if (condition):
  x = 2
  print(x)
else:
  y = 5
  print(y)
In [ ]:
if (condition): 
  print ("Vraie") 
else: 
  print("Faux")

Essayer avec condition False si elle était True et True si elle était False

La répétition

In [ ]:
x = 10
while (x > 0):
  print(x, end=' ')
  x = x -1

La répétition par itérateur for

In [ ]:
for i in range(10):
  print(i, end=':')
In [ ]:
help(print)
In [ ]:
# cas de range
range(10)
In [ ]:
list(range(10))

définition de fonction ou de procedure

In [ ]:
def f(x,y):
  return (x+y)
In [ ]:
f(3,4)

Les listes

In [ ]:
l = [1,2,3,4,5,6,7]
print(l)
In [ ]:
l[4] = 100
l

Les tuples

In [ ]:
t = (1,2,3,4,5,6)

Les ensembles

In [ ]:
e = {1, 2, 3, 2, 5}
print(e)
{1, 2, 3, 5}

Les dictionnaire (hash)

In [ ]:
d = {3:4, "toto":6, "tuple":t}
d
In [ ]:
d['titi'] = 11
d
In [ ]:
d['ouf']
In [ ]:
# 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)
Bonjours auditeurs UTC503!
10
11
12
13
14
0 10 15
In [ ]:
# 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)
Bonjours auditeurs UTC503!
10
11
12
13
14
0 10 15

if else

De l'importance des tabulations et des riques de la simplicité

J'en profite pour introduire des astuces de la fonction print

Une fonction fantastique : help

In [ ]:
help(print)
In [ ]:
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)
1. : 0 : 0
2.* Dans la boucle x=1 2.* Dans la boucle x=2 2.* Dans la boucle x=3 2.* Dans la boucle x=4 2.* Dans la boucle x=5 2.* Dans la boucle x=6 2.* Dans la boucle x=7 2.* Dans la boucle x=8 2.* Dans la boucle x=9 2.* Dans la boucle x=10 
3. a la sortie de la boucle x>=10 10
4. Que vaut a? 10
In [ ]:
# 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)
1. : 0 : 0
2.* Dans la boucle x=1 2.* Dans la boucle x=2 2.* Dans la boucle x=3 2.* Dans la boucle x=4 2.* Dans la boucle x=5 2.* Dans la boucle x=6 2.* Dans la boucle x=7 2.* Dans la boucle x=8 2.* Dans la boucle x=9 2.* Dans la boucle x=10 
3. a la sortie de la boucle x>=10 10
4. Que vaut a? 1
In [ ]:
# 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)
1. : 0 : 0
2.* Dans la boucle x=1 2.* Dans la boucle x=2 2.* Dans la boucle x=3 2.* Dans la boucle x=4 2.* Dans la boucle x=5 2.* Dans la boucle x=6 2.* Dans la boucle x=7 2.* Dans la boucle x=8 2.* Dans la boucle x=9 2.* Dans la boucle x=10 
3. a la sortie de la boucle x>=10 10
4. Que vaut a? 10

Les variables et leur type

Les langages de programmation impératif, (vous le saurez ;)

  • manipule des valeurs en mémoire.
  • et leur évolution grâce à l'exécution d’instructions

=> 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.,

  • d'allouer en conséquence des zones de mémoire de dimension suffisantes pour stocker cette donnée,
  • et éventuellement de vérifier que les manipulations programmées sur cette variable (opérations mathématiques, traitement de texte, etc.) sont cohérentes avec son type.

Typage dynamique

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ù

  • le type des objets manipulés n'est pas forcément connu à l'avance,
  • ou bien le programmeur veut permettre par commodité le changement de type d'une variable.
In [ ]:
# la variable est définie en python lors de la première opération d'affectation
x = 3
y = k + x
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-23-715c43cd2d46> in <module>()
      1 # la variable est définie en python lors de la première opération d'affectation
      2 x = 3
----> 3 y = k + x

NameError: name 'k' is not defined

interprété vs compilé

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

interprete compile

In [ ]: