This is an old revision of the document!
Chaque fichier contenant du code source en Python aura l'extension .py et il sera exécuté dans le terminal caractéristique pour python3 avec la commande:
python3 index.py
Un bloc de code (corps d'une fonction, contenu d'une boucle) commence avec la première ligne indentée et se finit lorsqu'on arrive à la première ligne qui ne respecte plus l'indentation. L'indentation doit etre consistente à l'intérieur d'un certain bloc.
Il faut tenir compte aussi du fait que si on a une ligne qui se termine par :, il est absolument nécessaire que la suivante soit indentée.
En général, on préfère un TAB pour l'indentation:
for i in range(1,11): print(i) if i == 5: break
Contrairement aux autres langages de programmation, en Python il ne faut pas déclarer les variables ou leur type avant de les utiliser. De ce point de vue, Python fait partie de la catégorie des langages de programmation dynamiquement typés, où le type des variables n'est interpété qu'au moment de l'exécution.
Python supporte 2 types numériques: entiers et réels.
# Syntaxe pour déclarer un numéro entier: myInt = 7 # Syntaxe pour déclarer un numéro réel: myFloat = 7.0 myFloat = float(7)
myString = 'hello' myString = "hello"
On peut réaliser l'attribution des valeurs aux plusieurs variables simultanément, mais sans mélanger les valeurs numériques avec les strings:
# Instructions valides a, b = 1, 2 suma = a + b
# Instructions valides hello = "hello" world = "world" message = hello + " " + world
# Cela ne va pas fonctionner one = 1 two = 2 three = 3 hello = "hello" print (one + two + three + hello)
one = 1 two = 2 three = 3 hello = "hello" print ( str(one) + str(two) + str(three) + hello )
Les listes sont similaires aux array. Elles peuvent contenire n'importe quel type de variables et le nombre des éléments n'est pas limité.
Pour créer une liste qui contient des éléments de type entier on va utilise la suivante ligne de code:
myList = [1,2,3,4,5]
On peut créer une liste vide, auquel on va ajouter des éléments:
# Déclaration de la liste mylist = [] # Insertion des éléments mylist.append(1) mylist.append(2) mylist.append(3)
En extraire un élément d'une liste on va utiliser une construction de type liste[indice]
:
mylist = [1,2,3] # On affiche chaque élément print( mylist[0] ) print( mylist[1] ) print( mylist[2] ) # Output 1 2 3
Pour créer une liste avec des éléments entiers, on va utiliser la fonction range
, qui va retourne une liste avec toutes les numéros entiers d'un certain intervalle. La fonction a la suivante définition: range(start, stop, pas)
, où start est la première valeur dans la liste, stop
est la valeur d'arrêter (la valeur n'est pas incluse), pas
est le pas d' incrémentation et est un paramétré optionnel (la valeur défauts est 1).
Exemple
Pour créer une liste avec des valeurs paires de 2 a 12, on va avoir la suivante ligne de code:
mylist = range (2, 13, 2)
Un dictionnaire est une structure de données, similaire aux vecteurs ou aux listes, mais fonctionne avec des valeurs et des clés au lieu des indices. Chaque valeur stockée dans un dictionnaire peut être accessible à l'aide d'une clé, représentée par n'importe quel type d'objet (une chaîne, un nombre, une liste, etc.), au lieu d'utiliser un index pour l'adresser.
Par exemple, les dictionnaires peuvent être utiles pour implémenter des bases de données. Supposons que nous ayons une base de données d'étudiants et que nous devons retenir la spécialisation pour laquelle chacun d'entre eux a opté.
Déclarer un dictionnaire
specialisation = {} specialisation["Ana"] = "Informatique" specialisation["Radu"] = "Electronique"
Ou bien
specialisation = { "Ana": "Informatique", "Radu": "Electronique" }
Parcourir les éléments d'un dictionnaire
for nom, spec in specialisation.iteritems(): print ("Le nom de l'optionel ou {} a été répartisé est: {}".format(nom, spec))
Eliminer des valeurs d'un dictionnaire
del optionalRepartizare["Ana"] # ou optionalRepartizare.pop("Ana")
Propriétés des clés dans un dictionnaire
Dans un dictionnaire, on n'a pas de restrictions pour les valeurs, mais les clés doivent etre uniques. Au cas ou on ne respecte pas cette propriété et on a 2 entrées ayant la meme clé, seulement le dernier enregistrement va rester valide. Par exemple, pour la suivante séquence de code:
age = { "Ana" : 14, "Ioana" : 13, "Ana" : 16, "Ioana" : 22, "Ana" : 11 } print ("Ana a {} années et Ioana a {} années.".format(age["Ana"], age["Ioana"]))
On va afficher le message suivant: “Ana a 11 années et Ioana a 22 années.”
# Décision simple a = 33 b = 200 if b > a: print("b is greater than a")
# Utiliser elif pour ajouter une condition supplémentaire a = 33 b = 33 if b > a: print("b is greater than a") elif a == b: print("a and b are equal")
# Le mot clé else prend tout ce qui n'a pas été inclus avant a = 200 b = 33 if b > a: print("b is greater than a") elif a == b: print("a and b are equal") else: print("a is greater than b")
# Else sans elif a = 200 b = 33 if b > a: print("b is greater than a") else: print("b is not greater than a")
Contrairement aux autres langages, qui ont la forme standard for(…) { code } pour la boucle for, Python élimine les parantheses qui marquent l'itération d'une liste et utilise les : pour indiquer le début du bloc de code qui sera exécuté a l'intérieur de la boucle, comme dans l'exemple suivant:
listaDeNume = ["Ana", "Maria", "Ioana", "Irina", "Andreea", "Cristina"] for nume in listaDeNume: print (nume)
En Python, l'indice du pas ou l'on se trouve a chaque moment lorsqu'on parcourt une séquence n'est pas visible. Cependant, il y a une méthode pour compter les pas: la fonction enumerate:
cours= [ "Analyse", "SdE", "ALF"] for index, hobby in enumerate(cours): print (index, hobby) # Output: 0 Analyse 1 SdE 2 ALF
Une autre fonctionnalité est l'utilitaire zip, qui permet de parcourir 2 listes simultanément:
lista1 = [ 3, 9, 17, 15, 19] lista2 = [ 2, 4, 30, 24, 3] for a, b in zip( lista1, lista2 ): if a > b: print (a) else: print (b) # Output: 3 9 30 24 19
Une autre particularité du langage Python est le fait qu'on peut appliquer la condition “else” aussi pour la boucle “for”. Dans ce cas, la branche “else” sera executée après la boucle “for”, si et seulement si à l'intérieur de “for” on n'a pas une déclaration de type “break”. Par exemple:
listeAnimaux = [ "loup", "lapin", "lion", "ours" ] for i in listeAnimaux: print (i) if i == "lapin" print ("Le lapin n'est pas sauvage") break else: print ("Tous les animaux!") # Output loup lapin Le lapin n est pas sauvage #Si on execute la sequence suivante: for i in listeAnimaux: print (i) if i == "lapin" print ("Le lapin n'est pas sauvage") else: print ("Tous les animaux!") # Output loup lapin Le lapin n est pas sauvage lion ours Tous les animaux!
#Afficher les chiffres de 0 a 9 count = 0 while count < 10: print (count) count = count + 1
Comme pour la boucle “for” on a aussi la possiblité d'appliquer la condition “else” a la boucle “while”. La différence est que le bloc “else” sera exécuté chaque fois que la condition de la structure répétitive sera évaluée comme fausse:
print ("Dévinez de numéro de l'intervalle [ 1, 10 ]") monNr = 7 votreNr = 0 while votreNr!= monNr: votreNr = int( input("Choisissez. ") ) else: print ("Félicitations!")
L'instruction “break” est utilisée pour sortir d'une structure répétitive, en étant une alternative pour la condition de sortie. Par exemple, on peut afficher les numéros de 0 a 9 de la facon suivante:
count = 0 while True: print (count) count = count + 1 if count > 10: break
La déclaration “continue” est utilisée pour ignorer un bloc d'instructions. Par exemple, on peut l'utiliser pour afficher les nombres pairs de 0 a 20:
number = 0 while number < 21: if number % 2 == 1 continue print (number)
def myFunction(): print ("Welcome") # ou def simpleSum( a, b ): return a + b
myFunction() # ou first = 1 second = 1 sum = simpleSum( first, second ) print (sum) print (simpleSum( first, second ))
On appelle objet une encapsulation de variables et fonctions dans une seule entité, tandis qu'une classe représente un modèle pour la création des objets. Donc, in objet prend ses données d'une classe.
# Classe simple class MaClasse: variable = "Bonjour" def maFonction(self): print ("Bonjour de l'autre part!") # Association classe objet monObjet = MaClasse() # Afficher le contenu de la variable de MaClasse print (monObjet.variable) # Appeler la fonction maFonction, qui va afficher sur l'écran le message "Bonjour de l'autre part!" monObjet.maFonction()
Le nombre d'objets qu'on peut créer a partir d'une classe n'est pas limité, tous les objets en héritant touts les particularités de la classe (variables et fonctions). Cependant, chaque objet contient des copies indépendantes des variables définies a l'interieur de la classe. Donc, si on crée un nouvel objet de la classe mere, on peut modifier son contenu sans affecter la definition initiale de la classe:
class MaClasse: variable = "Bonjour" def maFonction(self): print ("Bonjour de l'autre part!") monObjet1 = MaClasse() monObjet2 = MaClasse() monObjet2.variable = "au revoir" print (monObjet1.variable) print (monObjet2.variable) #Output bonjour au revoir
Pour pouvoir utiliser des fonctions qui exécutent des opérations mathématiques en Python, il faut importer et utiliser le module math.
import math
math.functionName( params )
Quelques fonctions élémentaires de ce type sont: floor, ceil, pow, sqrt.
functionName( params )
Quelques exemple de cette catégires sont: abs, round, sum.
Comme l'entrée des données peut provenir du clavier en nombreuses situations, Python 3 fournit la fonction input(). Cette fonction peut recevoir aussi un parametre supplémentaire, qui sera le string affiché dans la ligne de commande au moment de la lecture des données nécessaires:
name = input("Quel est votre nom? ") print("Bienvenue, " + name + "!")
# Output dans la ligne de commande Quel est votre nom? "Ana" Bienvenue, Ana!
En Python, on a 2 types d'erreurs: erreurs de syntaxe et exceptions.
Les erreurs de syntaxe, connues aussi sur le nom d'erreurs d'analyse (parsing error) sont les plus communes:
>>> while True print('Hello world') File "<stdin>", line 1 while True print('Hello world') ^ SyntaxError: invalid syntax
Les exceptions sont détectées au moment de l'exécution:
>>> 10 * (1/0) Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: division by zero
Pour gérer les exceptions en Python, on utilise le bloc try - except, comme dans l'exemple suivant:
while True: try: x = int(input("Please enter a number: ")) break except ValueError: print("Oops! That was no valid number. Try again...")
Pour changer le langage de programmation du notre éditeur, on appuie sur l’option Python de la barre en haut.
En MakeCode on a accès à toutes les fonctions disponibles en Blocks language qui sont représentées par blocs, sauf les blocs Variable, Logic, Loop et Array (pour lesquels on utilise la syntaxe normale de Python). Si on écrit le nom de la catégorie précédée par un point, on peut voir la liste des fonctions correspondant à cette catégorie.
Pour pouvoir utiliser les fonctions correspondant au on_start et on_forever on doit premièrement ajouter les instructions qui doivent être exécutées dans une fonction appelée on_start() ou on_forever() et après ça on doit appelle cette fonction avec basic.on_start/forever().
Make Code génére automatiquement les en têtes des fonctions on_start/forever() quand on accède au basic.on_start/forever(), donc on doit juste remplir le corps de la fonction.
Sur le devant du dispositif il y a le logo qui représente un capteur tactile. Dans Python, le manière d’interagir avec ce capteur est similaire avec on_start/forever, donc on doit définir un fonction avec le nom on_logo_event_pressed() ou on va écrire les instructions qui doivent être exécutées quand on touche le logo. Après ça, on doit donner cette fonction comme paramètre au input.on_logo_event(TouchButtonEvent.PRESSED, on_logo_event_pressed()). Le premier paramètre est l'événement qui a lieu, donc TouchButtonEvent.PRESSED car on touche le logo et la deuxième est l’action qui doit se produire quand l'événement respectif se passe.
Make Code génère automatiquement l’en tête de fonction on_logo_event_pressed() quand on accède au input.on_logo_event(), donc on doit juste remplir le corps de la fonction.
Exécution des programmes dans la ligne de commande
Exécution des programmes dans MakeCode en utilisant Python