Rappels Python

Programmation pour l’IA

Florent Capelli

Université d’Artois, CRIL

Généralités

Présentation

Organisation de l’année

Évaluation: contrôle continu et examen

Présence au TP noté obligatoire.

Note finale:

Utilisation des LLMs

Utilisation strictement interdite pour le TP noté et les examens.

  • Utilisation d’un LLM pendant un examen sans autorisation explicite = triche.
  • Équivaut Ă  un 0 et un signalement au service juridique de l’universitĂ©.

Programmation pour l’IA?

Buts du cours

  1. Gagner en familiarité avec les différentes bibliothèques qui vous seront utiles pour le reste du cursus.
  2. Comprendre les concepts les plus importants de l’IA par la pratique.
  3. Manipuler les données efficacement.

Choix du langage Python:

  • Langage historiquement très utilisĂ© pour le calcul scientifique, l’apprentissage machine.
  • Large choix de bibliothèques.
  • Syntaxe simple.

Programme préliminaire

Principales bibliothèques :

Concepts :

Rappels de Python

Si vous n’avez jamais programmé en python: MOOC sur Fun.

Rappels des principales structures de données

Types de bases

Type et valeur de a, b et c:

a = 23/4
b = 23//4
c = 23%4

a : float vaut 5.75, b : int vaut 5, c : int 3.

Sur combien de bits int et float sont-ils codés respectivement ?

  • integer: prĂ©cision arbitraire en Python.
  • float: IEEE‑754 double‑precision, 64 bits (long en C).

Chaînes de caractères (strings)

Quel est le codage de caractère utilisé par défaut pour les strings (Python 3)?

Unicode.

Qu’est-ce qu’une f-string?

prenom = "Alice"
age = 22
presentation = f"{prenom} a {age} ans."
print(presentation)

Que fait le code suivant :

s = "abcd"
s[1] = "e"
print(s)

Exception TypeError.

Listes

Que vaut l:

l=[0,1,2,3,4]
l[1] = 2
l[-1] = 3

l=[0,2,2,3,3]

Que vaut l:

l=[0,1,2,3,4]
q=l
q[1]=2

l=[0,2,2,3,4]

Qu’affiche ce programme?

l=[[0,1,2,3,4]]
print(len(l))
print(len(l[0]))

1
5

Quelle opération est la plus rapide : l.append(5) ou l.insert(5,0)

append.

Quelle différence entre sorted(l) et l.sort()

sorted(l) crée une nouvelle liste triée.

Listes II

Que vaut [2*i for i in range(5)]?

[0,2,4,6,8]

Dictionnaires

Les dictionnaires associent des clés à des valeurs:

d = {"age" : 22, "prenom" : "Alice"}`

Que vaut d["age"]? d["nom"]?

d["age"] vaut 22. Le second retourne KeyError.

Que valent ("age" in d) et ("nom" in d)?

True et False.

Autres structures de données

Set(): permet de stocker des ensembles ordonnés, ie, sans doublons.

Que vaut list(Set([1,2,3,1,4,2,6]))?

[1,2,3,4,6]

Tuple: liste mais dont la longueur est fixée.

Structures de contrĂ´les

If elif else

if x>=10:
    print("Passe")
elif x<0:
    print("QUOI?")
else:
    print("Raté")

Pour quelles valeurs de x ce programme affiche-t-il “Raté”?

0<=x<10 .

Boucle for

for i in range(5):
    print(i)

Quel est le type de range(5)?

Un itérateur.

for i in [1,4,5]:
    print(i)

Qu’affiche le programme précédent ?

1
4
5

d = {"a" : 1, "b" : 2}
for i in d:
    print(i)

Qu’affiche le programme précédent ?

a
b

Iterables

Que valent les programmes suivants ?

list(enumerate([1,4,5,7]))

[(0,1), (1,4), (2,5), (3,7)]

list(zip([1,4,5,7], [4,5,6]))

[(1,4), (4,5), (5,6)]

list(map(lambda x:x+1,[1,4,5,7]))

[2,5,6,8]

Fonctions

def f(x):
    x+=1
y=0
f(y)
print(y)

Qu’écrit ce programme ?

0

def f(l):
    l.append(3)
l=[1,2]
f(l)
print(l)

Qu’écrit ce programme ?

[1,2,3]

Fonctions récursives

def f(l, r=[]):
     if len(l)>0:
         x=l.pop()
         r.append(x)
         f(l,r)

Que calcule cette fonction ?

Renverse une liste.

def f(n):
    if n==0:
        return [""]
    if n==1:
        return ["()"]
    else:
        l=f(n-1)
        return [f"(){j}" for j in l]+[f"({j})" for j in l]

Que calcule cette fonction ?

Tout les mots bien parenthésés ayant n parenthèses ouvrantes.

Classes

Comment définir une méthode de classe ? def f(self, x1, x2)

Comment définir un constructeur de classe ? On définit la méthode __init__.

class A:
    def __init__(self):
        self.x = 5
        self.y = 5
    def display(self):
        print(self.x, self.y)
class B(A):
    def __init__(self):
        self.x = 12

Que se passe-t-il si on exécute o = B() puis o.display() ? 'B' object has no attribute 'y'

Fichiers

Comment ouvrir un fichier en lecture ?

with open("truc", "r") as f:
    l = f.readlines()

Comment écrire dans un fichier ?

with open("truc", "w") as f:
    f.write("hahaha")

Attention à l’encodage des caractères !

Bibliothèques

Quelles sont les différences entre :

  • import math
  • from math import *
  • import math as m

La première importe la bibliothèque math avec le namespace math, la dernière avec le namespace m. La seconde importe toutes les fonctions de math. Le problème ici est que cela peut créer des conflits de noms.