wip 1er TP

This commit is contained in:
Alexis Fourmaux 2025-07-21 12:24:37 +02:00
parent b47afcc893
commit bbf2a72012
2 changed files with 125 additions and 27 deletions

View file

@ -24,6 +24,10 @@ Le mode interactif fonctionne de la manière suivante :
3. Il **évalue l'expression saisie** : il l'analyse et l'exécute
4. Il affiche enfin le résultat.
```admonish tip title="Astuce"
Si vous utilisez les flèches <kbd>&uarr;</kbd> et <kbd>&darr;</kbd> dans l'invite de commande, vous pourrez naviguer dans l'historique des commandes tapées, et réutiliser d'anciennes commandes pour les modifier ou les réexécuter.
```
## Python est une calculatrice
Vous pouvez utiliser l'interpréteur de python comme une calculatrice. C'est évidemment bien plus puissant, mais nous allons commencer par découvrir ses capacités de calcul.
@ -39,15 +43,20 @@ Vous pouvez utiliser l'interpréteur de python comme une calculatrice. C'est év
- 6 fois 7
- 9 divisé par 2
- 4,2 plus 1,5
- 13 modulo 7
- 5 modulo 2
- le quotient de la division euclidienne de 5 par 2
- 2 puissance 10
- 37 fois la somme de 13 et 24
3. Divisez 10 par 3. Que remarquez-vous ?
```
```admonish note title="Remarques"
```admonish success title="À retenir"
- Python utilise la notation anglo-saxonne pour les nombres non entiers (c'est à dire un point au lieu d'une virgule) : il écrira `4.5` et non pas `4,5`. Il en va de même lorsque vous écrirez des nombres en Python.
- Les symboles `+`, `-`, `*`, `/`... sont appelés **opérateurs** en Python
- L'opérateur modulo `%` est souvent utilisé pour savoir si un nombre est multiple d'un autre. Il vaut mieux s'en souvenir.
- L'opérateur modulo `%` est souvent utilisé pour savoir si un nombre est multiple d'un autre. Il vaut mieux s'en souvenir. Il permet de calculer le reste de la division euclidienne de deux nombres. Par exemple si on divise 5 par 2 on obtient 2 et il reste 1. 1 est donc notre reste et `5 % 2` nous donnera 1.
- Si l'on veut effectuer la division euclidiuenne d'un nombre par un autre, on peut le faire avec l'opérateur `//` qui est différent de `/`. Par exemple `5//2` nous donnera 2, alors que `5/2` nous donnera `2.5`
- Les nombres décimaux ont parfois des valeurs approximatives. Il faut être vigilant lorsqu'on les utilise dans des calculs.
```
### Mais aussi une calculatrice scientifique
@ -85,17 +94,114 @@ En utilisant la [documentation du module `math`](https://docs.python.org/3/libra
- le cosinus de $\pi$
- la partie entière de 3.56
2. Expliquez la différence entre les fonctions `math.floor()` et `math.ceil()`
3. Calculez le temps que met un satellite à faire le tour de la terre en étant à 100km d'altitude
**en une seule expression**, grâce à la formule suivante : $$ T = 2\pi\sqrt{(R_T+h)^3 \over G.M_T}$$
avec :
- $T$ le temps que met le satellite à faire le tour (ce que vous devez trouver)
- $R_T$ le rayon de la Terre, exprimé en mètres : 6,378.10⁶m
- $h$ l'altitude du satellite (100km) en mètres (attention 1km = 1000m)
- $G$ la constante de gravitation universelle : 6,67.10⁻¹¹
- $M_T$ la masse de la Terre : 5,98.10²⁴ kg
Vous devriez trouver $T \approx 5187s$
```
## Les variables et les types
### Les variables
Dans la suite nous allons apprendre à utiliser des variables. Que sont les variables ? C'est la base de tout programme informatique : elles vous permettent de stocker une information (un nombre, le résultat d'un calcul, une phrase sous forme de chaîne de caractères...) pour la réutiliser plus tard.
```admonish success title="À retenir"
- Les variables sont une donnée de votre programme stockée dans l'ordinateur.
- Elles sont nommées et on peut les **affecter** en écrivant `ma_variable = <contenu de ma variable>` (attention la variable est toujours à gauche, le contenu toujours à droite). Affecter signifie mettre un contenu dans la variable.
- Les noms des variables peuvent comporter:
- Des caratères **alphanumériques**, c'est à dire des lettres minuscules ou majuscules et des chiffres
- Des `_` (tiret du bas, sur la touche <kbd>8</kbd> de votre clavier)
- Les noms des variables ne peuvent pas commencer par un chiffre
- Les noms des variables sont **sensibles à la casse** : c'est à dire qu'une variable écrite avec des majuscules sera différente d'une variable écrite avec des minuscules (par exemple ma variable `age` sera différente de `Age`)
- Certains mots-clés ne peuvent pas être utilisés comme des noms de variables parce qu'ils sont **réservés**, c'est à dire qu'ils ont une autre signification dans le langage.
- En python, la **convention** veut que l'on écrive les variables sous la forme dite **snake case** : on va l'écrire avec uniquement des minuscules en remplaçant les espaces par des `_`. Par exemple, une variable représentant la date de naissance pourra s'écrire : `date_de_naissance`
```
Vous verrez la plupart des mots **réservés** par la suite, et comprendrez vite pourquoi on ne peut pas les utiliser comme variables, tout en les retenant facilement, mais vous pourrez trouver la liste de ces mot-clés dans la [documentation python](https://docs.python.org/3/reference/lexical_analysis.html#keywords)
```admonish warning title="Important"
Python utilise beaucoup de **conventions** dans son langage. Une convention est une règle qui n'est pas obligatoire mais que tout le monde respecte par habitude, et parce que cela permet d'avoir un code qui est facile à lire par tout le monde. Même si elles sont parfois arbitraires, elles ont en général été pensées et établies par la communauté suite à des retours d'expérience. Par ailleurs, certaines conventions permettent de donner des informations supplémentaires importantes (nous en verrons régulièrement par la suite).
Pour la suite de ce TP, mais également dans vos TD, projets ou évaluations, vous devrez respecter les conventions que nous verrons pour prendre les bonnes habitudes, sinon je les considèrerai comme des erreurs.
```
```admonish travail
Nous allons donc affecter et utiliser nos premières variables.
1. Pour cela, dans l'interpréteur, écrivez `mon_age = 19` puis appuyez sur <kbd>Entrée</kbd>. Que se passe-t-il ?
2. Essayez d'entrer un nom de variable **illégal** (c'est à dire qu'il n'est pas autorisé dans le langage et qu'il causera une erreur). Notez-le. Que se passe-t-il ?
3. Essayez d'écrire `3 = x`. que se passe-t-il ?
4. Ecrivez le code suivant. Expliquez ce qu'il fait
~~~python
>>> mon_age = 19
>>> mon_age = mon_age * 2
>>> mon_age
~~~
5.
a. Le code suivant calcule le prix TTC d'un article à partir de sont prix hors taxes (45€), en lui ajoutant la TVA. Ecrivez-le dans l'interpréteur. Quel résultat obtenez-vous pour le prix TTC ?
~~~python
>>> prix_ht = 45
>>> tva = 5.5 / 100
>>> prix_ttc = prix_ht * (1 + tva)
>>> prix_ttc
~~~
b. Modifiez la valeur de `tva` pour qu'elle prenne la valeur de 20%. Quelle valeur a `prix_ttc` ? Pourquoi ?
c. Recalculez la valeur de `prix_ttc` pour prendre en compte la modification de `tva` (Astuce: vous pouvez utiliser <kbd>&uarr;</kbd> pour retrouver la ligne déjà tapée). donnez la ligne que vous avez réexécutée.
d. Donnez lexpression qui permet dévaluer le prix à payer par le client lorsquon lui accorde une réduction de 5% sur le prix **hors taxes**.
e. Donnez l'expression qui permet d'augmenter la TVA de 1%, quel que soit sont taux actuel.
```
### Les types et la fonction `type`
Les variables peuvent contenir differents types de données. Nous avons surtout vu des nombres jusqu'à maintenant, mais elles peuvent aussi contenir des **chaînes de caractères** ou d'autres types plus complexes. Nous verrons dans un premier temps les plus simples.
```admonish success title="À retenir"
- Python est capable de trouver le type d'une donnée tout seul, et cette variable prend le type souhaité lors de l'affectation. On appelle ça du **typage dynamique**
- Python possède une fonction `type` qui permet d'afficher le type de chaque variable.
```
```admonish travail
1. Affecter le valeur `21` à une variable `mon_age`. Donner le type de cette variable en utilisant la fonction `type`.
2. Affecter la valeur `3.14` à une variable `pi`. Donner le type de cette variable.
3. Affecter la valeur `True` (ou `False`) à une variable `j_aime_les_spaghettis`. Donnez son type.
4. Affecter la valeur `"<votre prénom>"` à une variable `prenom` et donnez son type.
5. Ecrivez `age = '85'` (Attention aux guillemets) dans l'interpréteur. Donnez le type de `age`.
6. Ecrivez maintenant `age * 2`. Que se passe-t-il ? comment se comporte l'opérateur `*` lorsqu'il est utilisé avec des chaînes de caractères ?
7. Donnez une expression permettant d'affecter le *texte* `'21'` à la variable "mon_age_str" en utilsant uniquement la variable `mon_age` (question 1) et la fonction `str`. Utilisez la fonction type pour vérifier. Qu'en déduisez-vous sur la fonction `str` ?
8. De même donnez une expression permettant de d'affecter le *nombre* 85 à la variable `age_int` en utilisant uniquement `age` (question 6) et la fonction `int`. Qu'en déduisez-vous sur ce que fait la fonction `int` ?
```
```admonish success title="À retenir"
Voici un tableau recensant les principaux types de base de Python
| Type | Explication | Exemple |
|------|-------------|---------|
| int | Nombre entier | `1` |
| float | Nombre décimal (à virgule "flottante") | `1.23` |
| bool | Booléen : une valeur pouvant être soit vraie soit fausse | `True` ou `False` |
| str | Chaîne de caractères : des caractères qui se suivent pour représenter du texte | `'Hello !'` |
Les chaînes de caractères peuvent s'écrire avec des guillemets simples `'` (touche <kbd>4</kbd>) (qui est aussi utilisé en apostrphe en français) ou des guillemets doubles `"` (touche <kbd>3</kbd>).
Vous pourrez utiliser des `"` lorsque que votre chaîne contiendra des `'` et inversement. Exemples:
- `"J'aime les spaghettis"`
- `'Elle a dit "Hello"'`
```
## Un premier script
- print
- chaines de caractères + formatage
## Structure conditionnelle
- if
- if elif else
- opérateurs de comparaison
- booléens
- opérateurs logiques and, or, not
## Les boucles
- while
- for
- break + continue

View file

@ -7,10 +7,11 @@
6*7
9/2
4.2+1.5
13%7
5%2
2**10
37*(13+24) #1369
~~~
3. Le résultat semble faux : la dernière décimale affichée est 5 au lieu de 3 (qui devrait se poursuivre à l'infini). C'est une approximation erronée due à la manière dont les nombres sont codés en informatique.
```
```admonish success title="Module math"
@ -25,15 +26,6 @@ math.floor(3.56)
2.
- math.ceil() est arrondi à l'entier supérieur
- math.floor() prend la partie entière
3.
~~~python
2*math.pi*math.sqrt(
((6.378*10**6)+100000)**3
/
((6.67*10**-11)*(5.98*10**24))
)
~~~
- math.ceil() est arrondi à l'entier supérieur (ou au nombre lui même si c'est un entier)
- math.floor() prend la partie entière, c'est à dire le nombre entier situé avant la virgule. C'est un arrondi à l'entier inférieur.
```