Physique & Chimie au lycée

Cours de physique-chimie pour les classes de 1ère et Terminale

Sommaire
SP-1 ES-1
SP-T ES-T
3e SNT
Divers Annales

Les bases de Python

Ce mémo n’est pas terminé

Les bases d’un langage de programmation, quel qu’il soit, sont la création et la manipulation de variables, les conditions et les boucles, ainsi que quelques fonctions de base.

Python en ligne sur repl.it.
La création d’un compte est nécessaire pour pouvoir exploiter toutes les fonction­nalités (notamment la création de graphiques via Matplolit).
Premiers pas en Python

Pour faire vos premiers pas en Python, vous allez suivre un excellent cours sur Openclassrooms.

Inutile d’installer Python sur votre ordinateur, créez-vous un compte sur repl.it

Lorsque c’est fait, créez un nouveau « repl » en Python.

Vous arrivez alors sur une page divisée en 3 parties.

La partie centrale est votre fichier de code (vous voyez sur l’image un code de deux lignes, mais au début cette partie est vide), la partie droite sur fond noir est la console (vous voyez dans la console ce qu’affiche le programme lorsqu’il est exécuté).

Vous pouvez maintenant suivre les premiers chapitres de ce cours. Lisez bien tout attentivement et faites le « TP » du chapitre 2.

0. Premiers pas avec l’interpréteur de commandes
1. Les variables
2. Les structures conditionnelles
3. Les boucles

Le mémo que je vous présente ci-dessous n’aura de sens pour vous que si vous avez des connaissances élémentaires en Python. Ce n’est pas un tuto (voir Premiers pas en Python juste au-dessus pour ça.)

Remarques sur la mise en forme du code Python

Retour à la ligne : marque la fin d’une instruction. Plusieurs retours à la ligne consécutifs n’ont aucune influence sur l’exécution du code, mais peuvent être utilisés pour le rendre plus clair et plus lisible.

Instruction sur plusieurs lignes : si l’instruction est longue, on peut faire un retour à la ligne pour rendre son code plus lisible si on met un antislash \ juste avant le retour à la ligne.

Espace : pas nécessaire entre les signes d’opération. a=b+1 donne la même chose que a = b + 1

Commentaire : texte qui n’est pas pris en compte au moment de l’exécution du programme. Commence par # et finit à la fin de la ligne.

Variables & fonctions de base

Objets & variables

Un objet, en informatique, est un type de donnée. Un objet peut être stocké dans une variable désigné par un nom.

Nombre entier (int) a = 5
Nombre réel (float) a = 2.3
Chaîne de caractère(1) (str) a = "un exemple" ou a = "25"
Booléen (bool) a = True ou a = False
Liste (list) a = ["pomme", -2.5]
Dictionnaire (dict) a = {"pomme" : 25, "poire" : "OK"}

Le nom d’une variable ne peut pas commencer par un chiffre et certains mots sont réservés (print, and, True, if …).

(1) Peut également être délimitée par des apostrophes ('exemple') ou des triples guillemets ("""exemple""").

Quelques fonctions de base

Renvoyer veut dire qu’une valeur est produite et peut être affichée ou stockée dans une variable.

print(a) : affiche le contenu de a dans la console

type(a) : renvoie le type de a (int, str…)

range(x,y) : renvoie une liste d’entiers de x inclus à y exclu(1)

del(a) : efface la variable a

a = input("message") : entrée de l’utilisateur (format str)

int(a) : renvoie a transformé en entier (erreur si pas possible).

float(a) : renvoie a transformé en réel (erreur si pas possible).

str(a) : renvoie a transformé en chaîne de caractères (erreur si pas possible).

(1) Si x n’est pas spécifié, sa valeur par défaut vaut 0. Donc range(5), par exemple, renvoie la liste [0, 1, 2, 3, 4].

Les nombres

Opérations de base : addition +, soustraction -, multiplication *, division /

Puissance : 24 s’écrit 2**4.

Maximum et minimum : max(a,b) ; min(a,b)

Division euclidienne : // pour le résultat et % pour le reste.

Incrémentation de variable : a = a+1 peut être écrit a+=1

Notation scientifique : 2·103 s’écrit 2e3. 2·10-3 s’écrit 2e-3.

 
		a = 2
		b = a+3		# b = 5
		c = b//a	# c = 2 (division euclidienne 5÷2 = 2, reste 1)
		d = b%a		# d = 1 (reste de la division euclidienne)
	

Manipuler des nombres

On dispose d’un gâteau de 12 parts. On se propose d’écrire un code qui va demander le nombre de personnes qui partagent ce gâteau (minimum 2, maximum 12), et qui va indiquer le nombre de parts que reçoit chaque personne et le nombre de parts qui restent (on suppose un partage équitable).

Conseil : on développe toujours un code progressivement, en commençant par le plus simple et en implémentant au fur et à mesure les parties complémen­taires. Les questions vont vous guider dans le développement progressif de votre code.

1. Écrire un code qui demande le nombre d’invités à l’utilisateur, le transforme en nombre entier et le stocke dans une variable appelée $*x*$.

2. Compléter votre code pour que, si $*x*$ > 12, la valeur de $*x*$ soit égale à 12.

3. Compléter votre code pour que, si $*x*$ < 2, la valeur de $*x*$ soit égale à 2.

4. Stocker dans la variable parts le nombre de parts que reçoit chaque personne.

5. Stocker dans la variable reste le nombre de parts restantes.

6. Afficher votre résultat sous la forme « Chaque personne reçoit parts parts et il reste reste parts ».

Les chaînes de caractères

Dans les exemples qui suivent, a est une variable contenant une chaîne de caractères.

len(a) renvoie le nombre de caractères que contient a (y compris les espaces et les signes de ponctuation)

a+b concatène (agglomère) les deux chaînes de caractères. Par exemple si a="Salut" et b=Patrick, a+b sera "SalutPatrick" (sans espace). Si vous voulez une espace, vous pouvez écrire a + " " + b (il y a une espace entre les guillemets).

• Pour formater une chaîne de caractère, on met un « f » devant le guillemet de début et on met entre accolades { } le nom de la variable dedans  : f"la valeur de a vaut {a}".

Attention : avant la version 3.8, ce format ne fonctionne pas. Il faut écrire "la valeur de a vaut {}".format(a) pour obtenir le même résultat.

		a = "alphabet" 	# on crée la variable "a" contenant "alphabet"
		b = "cyrillique"
		len(a) 			# renvoie 8
		c = a+" "+b 	# "c" contient "alphabet cyrillique"
		d = f"j’écris en {b}"
		d = "j’écris en {}".format(b) # pour Python < 3.8
		print (d)		# affiche "j’écris en cyrillique"
	

Les listes

Une liste est un objet qui contient d’autres objets. Une liste se note entre crochets [ ].


		a = ["oiseau", 2.5, "4", ["merle", 4]]
	

Dans l’exemple ci-dessus, a est une liste contenant 4 éléments. Le premier est la chaîne de caractère "oiseau", le deuxième est le nombre réel (float) 2.5, le troisième est la chaîne de caractère 4 et le dernier est une liste qui elle-même comporte deux éléments.

Quelques instructions utiles à connaître à propos des listes.


		a = ["oiseau", 2.5, "4", ["merle", 4]]
		
		len(a) # renvoie le nombre d’éléments de la liste "a"
		
		a[0]  # renvoie l’élément n°0
		a[3]  # renvoie l’élément n°3
		a[-1] # renvoie le dernier élément

		a[0] = "corbeau" # remplace l’élément n°0 par "corbeau"

		a.append("mésange") # ajoute "mésange" à la fin de la liste
		
		# maintenant : a = ['corbeau', 2.5, '4', ['merle', 4], 'mésange']

		del a[1] # efface l’élément n°1

		b = ["aigle", "hibou"]
		c = a + b # "c" est une liste qui est l’association de a et b
		# c = ['corbeau', '4', ['merle', 4], 'mésange', 'aigle', 'hibou']
	

Les dictionnaires

Un dictionnaire est une liste donc chaque élément est constitué d’une clé et d’une valeur. Un dictionnaire se note entre accolades { }.


			a = {"prénom" : "Mihailo", "téléphone": "061-23-45-678"}
		

Dans cette liste, il y a deux éléments : "prénom" : "Mihailo" et "téléphone": "061-23-45-678".

Le premier élément a pour clé "prénom" et pour valeur "Mihailo"


			a = {"prénom" : "Mihailo", "téléphone" : "061-23-45-678"}
			
			len(a) # renvoie le nombre d’éléments du dictionnaire "a"
			
			a["prénom"] # renvoie la valeur de l’élément qui a pour clé "prénom"
			
			a["téléphone"] = 061-32-54-876 # change la valeur de l’élément
										   # qui a pour clé "téléphone"
			
			a["nom"] = "Popović" # si l’élément n’existe pas, il est créé.
			
			# a est désormais :
			a = {"prénom" : "Mihailo", "téléphone" : "061-23-45-678",
			"nom" : "Popović"}
			
		

Conditions

Le déroulement conditionnel d’un programme est régi par les commandes if, elif et else.

 
		a = input("entrez un nombre")
		a = int(a)
		if a >= 10 :
			print("vous avez eu la moyenne")
		else :
			print("vous n’avez pas eu la moyenne")
	

elif est la contraction de else if. Le code conditionnel sera exécuté si aucune condition antérieure n’est vérifiée mais que celle-ci l’est.

 
		a = input("entrez un nombre")
		a = int(a)
		if a > 20 :
			print("menteur")
		elif a >= 10 :
			print("vous avez eu la moyenne")
		else :
			print("vous n’avez pas eu la moyenne")
	

Dans le code précédent, si on remplace elif par if et que $*a*$ vaut 21, le programme va d’abord afficher « menteur », puis « vous avez eu la moyenne ».
Alors qu’avec le elif, celui-ci n’exécute pas l’instruction print("vous avez eu la moyenne") car la condition if a > 20 : était vraie.

Liste des comparateurs

> ; < : plus grand ou plus petit que
>= ; <= : plus grand ou égal à ou plus petit ou égal à (le signe égal vient en dernier).
== ; != : égal à ou différent de (notez le double égal, car le signe = attribue une valeur à une variable mais ne teste pas une égalité. Attention, c’est une erreur que l’on fait très souvent au début).

Combiner les conditions

and : les deux conditions doivent être respectées (il peut y en avoir plus que deux).
or : une des deux conditions doit être respectée.
not : la condition ne doit pas être respectée

Conditions et variables booléennes

 
		a = True
		b = False
		if a :
			# ce code sera exécuté
		if b :
			# ce code ne sera pas exécuté
		if not b :
			# ce code sera exécuté
	

Les conditions

On va prendre l’énoncé de l’exercice précédent et on va améliorer notre code pour prévoir la situation suivante :

  • Si l’utilisateur entre une valeur qui est inférieure à 2 ou supérieure à 12, le programme doit l’informer que le nombre doit être compris entre ces deux valeur et s'arrêter.

Proposer deux manière différentes de coder la gestion de cette condition.

TP noté n°1 version a

On souhaite réaliser un programme permettant de calculer la moyenne trimestrielle d’un élève. Cet élève doit avoir quatre notes s’il était présent à toutes les évaluations du trimestre.

1. Base du programme (5 pts)

• Écrivez un programme qui demande à l’utilisateur d’entrer 4 notes sur 20. Ces notes sont des nombres entiers. Ce programme calcule ensuite la moyenne de l’élève et l’affiche.
Attention : l’interaction de l’utilisateur avec le programme doit être claire. L’utilisateur doit comprendre ce que le programme demande et le résultat que celui-ci lui donne.

• Faites un copier-coller du code dans un fichier texte et appelez ce code « version 1 ». Sauvegardez soigneusement ce fichier, vous me l’enverrez par mail à la fin de l’heure.

Utilisez l’IDE en ligne sur repl.it.

2. Gestion des absences (5 pts)

On va maintenant rajouter une fonctionnalité au programme. Comme il s’agit d’élèves de l’EFB, il y a souvent beaucoup d’absences. Si un élève a été absent à une évaluation, le professeur dans entrer la chaîne de caractère abs (sans guillemets) à la place de la 4e note. Le programme calcule alors la moyenne sur 3 notes. On ne traitera pas la situation où l’élève a manqué à plus d’un contrôle.

• Écrivez un code permettant de faire cela (il y a plusieurs possibilités), puis faites un copier-coller de votre nouveau code à la suite du premier et appelez ce code « version 2 ».

3. Détermination de la « mention » (5 pts)

Le programme doit afficher la « mention » de l’élève en fonction de sa moyenne : Redoublement si la moyenne est inférieure à 10 et Félicitations si la moyenne est supérieur ou égale à 16. Sinon, la mention est Passable.

Vous pouvez faire cette partie même si vous n’avez pas réussi à implémenter la gestion des absences.

• Écrivez un code permettant de faire cela, puis faites un copier-coller de votre nouveau code à la suite du premier et appelez ce code « version 3 ».

4. Repêchage (5 pts)

À cause de la situation sanitaire, on décide de remplacer par 8 toute note inférieure à 8, puis de calculer une nouvelle moyenne.

Vous pouvez faire cette partie même si vous n’avez pas réussi à implémenter la gestion des absences et des mentions (parties 2 et 3).

• Écrivez un code permettant de faire cela, puis faites un copier-coller de votre nouveau code à la suite du premier et appelez ce code « version 4 ».

TP noté n°1 version b

On souhaite réaliser un programme permettant de calculer le coût d’une commande comprenant 3 au 4 articles sur un site en ligne.

1. Base du programme (5 pts)

• Écrivez un programme qui demande à l’utilisateur d’entrer le prix de 4 articles et qui calcule le montant de la commande et l’affiche. On va se limiter à des prix correspondant à des nombres entiers.
Attention : l’interaction de l’utilisateur avec le programme doit être claire. L’utilisateur doit comprendre ce que le programme demande et le résultat que celui-ci lui donne.

• Faites un copier-coller du code dans un fichier texte et appelez ce code « version 1.0 ». Sauvegardez soigneusement ce fichier, vous me l’enverrez par mail à la fin de l’heure.

Vous pouvez utilisez Eduptyhon ou l’IDE en ligne sur repl.it.

2. Gestion d’une commande de 3 articles (5 pts)

On va maintenant rajouter une fonctionnalité au programme. Le panier peut ne compter que 3 articles. Le programme doit pouvoir s’adapter à des paniers de trois ou de quatre articles selon ce que rentre l’utilisateur.

• Écrivez un code permettant de faire cela (il y a plusieurs possibilités), puis faites un copier-coller de votre nouveau code à la suite du premier et appelez ce code « version 2.0 ».

3. Réduction sur le 4e article

Si le client achète un 4e article, celui-ci obtient une remise de 10 % sur cet article, cette remise ne pouvant pas dépasser 5 €.

• Écrivez un code permettant de faire cela, puis faites un copier-coller de votre nouveau code à la suite du premier et appelez ce code « version 3.0 ».

Vous pouvez faire cette partie même si vous n’avez pas réussi à implémenter la gestion des commandes de trois articles.

4. Frais de port (5 pts)

Si le montant de la commande dépasse 40 €, les frais de port sont offerts. Sinon, ces frais s’élèvent à 5 €. De plus, toute commande supérieure à 80 € bénéficie d’une remise supplémentaire de 5 %.

• Écrivez un code permettant de calculer le total de la commande et de l’afficher, puis faites un copier-coller de votre nouveau code à la suite du premier et appelez ce code « version 4.0 ».

Vous pouvez faire cette partie même si vous n’avez pas réussi à implémenter les parties 2 et 3.

Les boucles

La boucle for

La boucle forin permet de traiter les éléments d’un objet itérable, c’est-à-dire d’un type de données que l’on peut énumérer – dont on peut prendre les éléments constitutifs l’un après l’autre. Un petit exemple vaut mieux qu’une longue explication :


		ma_liste = ["pomme", "poire", "prûne", "pêche"]
		for fruit in ma_liste :
			print (fruit)
	

La variable fruit va prendre à chaque tour de boucle la valeur d’un des élément de ma_liste. Ce programme affiche donc successivement pomme, poire, prûne et pêche.

Cette boucle est souvent utilisée avec la fonction range pour obtenir une variable d’énumération dont la valeur augmente de 1 à chaque tour. Par exemple :


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

Cette boucle affiche 0, puis 1… jusqu’à 10 exclu.

Éliminer les accents

Écrire un programme qui, lorsqu’on lui donne une chaîne de caractère, va remplacer les caractères accentués « é », « è », et « ê » par la lettre « e »

Boucle for et dictionnaire

Dans le cas des dictionnaires, il existe plusieurs manière d’utiliser la boucle for.


			a = {"prénom" : "Mihailo", "téléphone" : "061-23-45-678",
			"nom" : "Popović"}
			
			for i in a :	# i prend successivement la valeur des clés
				print (i)
			
			for i in a.values() : # i prend successivement la valeur des valeurs
				print (i)
			
			for i,j in a.items() : # i : clés et j : valeurs
				print (i, " : ", j)
			
		

La boucle while

La boucle while … : est un code qui s’exécute tant que la condition du while est vraie. Un exemple :


		a = "O"
		
		while a == "O" :
			# au départ, la condition est vraie
			
			print ("On continue !")
			a = input ("Continuer ? (O/N) ")
			
			# Si l’utilisateur entre autre chose que O,
			# la condition est fausse, la boucle s’arrête
			# le programme passe à la suite
		
		print ("fini !")
	

Cette boucle s’exécute un nombre non prédéterminé de fois – en fait, tant que l’utilisateur n’entre pas la lettre O majuscule, celle-ci s’exécute.

Attention cependant, si la condition est toujours vraie, la boucle est infinie et le programme ne s’arrête jamais. Pensez bien, lorsque vous utilisez ce genre de boucle, à vérifier que la condition deviendra fausse à un moment ou à un autre.

Comment savoir quel type de boucle utiliser ? On apprend vite à saisir la nuance entre les deux. Dans un premier temps, essayez de formuler votre boucle en bon français. Si vous utilisez «pour chaque», il faut utiliser un boucle for. Si vous utilisez « tant que », alors il faut utiliser la boucle while.
Bien entendu, un langage de programmation est avant tout un langage. Comme avec tous les langages, il est possible d’exprimer la même idée de manière différentes. Par exemple, l’instruction « pour chaque case, mettre un croix » – on pense à la boucle for, peut aussi s’énoncer « tant qu’il y a des cases vides, cochez les cases » – on pense à la boucle while. Les deux sont valables, même si la première est formulée plus simplement que la deuxième.

Somme des carrés

1. Écrire un programme qui calcule la somme des carrés des $*n*$ premiers entiers, $*n*$ étant une valeur choisie par l’utilisateur (qu’on pourra coder « en dur »).

2. Même exercice, mais cette fois-ci on veut calculer la somme des carrés des entiers multiples de 3 jusqu’à la valeur $*n*$

TP noté n°2 version a

Vous disposez de la liste de mots suivante :


			a = ["bison", "chèvre", "vache", "crocodile", "lion", "gazelle", "varan", "héron", "lièvre"]
		

1. Écrivez un programme permettant d’afficher ces mots les uns après les autres.

2. Écrivez un programme qui va chercher si la lettre « v » est présente dans un mot donné.

3. Écrivez un programme qui va vous donner la liste des mots contenant la lettre « v » dans la liste a. Pour cela, ce programme doit créer une liste vide, et y ajouter les mots voulus au fur et à mesure qu’il examine la liste a.

TP noté n°2 version b

Vous disposez de la liste suivante :


			a = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"]
		

1. Écrivez un programme permettant d’afficher ces mois les uns après les autres.

2. Écrivez un programme qui va chercher si la lettre « e » est présente dans un mot donné.

3. Écrivez un programme qui va vous donner la liste des mois ne contenant pas la lettre « e » dans la liste a. Pour cela, ce programme doit créer une liste vide, et y ajouter les mois voulus au fur et à mesure qu’il examine la liste a.