Ajoute TP1 Python CIEL2

This commit is contained in:
Alexis Fourmaux 2025-08-07 13:08:35 +02:00
parent 840b8d5fa4
commit afecc46ce3
15 changed files with 496 additions and 95 deletions

View file

@ -89,7 +89,7 @@ En utilisant la [documentation du module `math`](https://docs.python.org/3/libra
1. Donnez les expressions qui permettront de calculer :
- la racine carrée de 81
- la valeur absolue de -12
- la valeur absolue de -12 (celle-ci n'est pas dans `math` mais existe par défaut)
- la valeur de $\pi$
- le cosinus de $\pi$
- la partie entière de 3.56
@ -168,7 +168,7 @@ Les variables peuvent contenir differents types de données. Nous avons surtout
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` ?
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` ?
```
@ -182,7 +182,7 @@ Voici un tableau recensant les principaux types de base de Python
| 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>).
Les chaînes de caractères peuvent s'écrire avec des guillemets simples `'` (touche <kbd>4</kbd>) (qui est aussi utilisé en apostrophe 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"`
@ -338,7 +338,7 @@ Dans un nouveau fichier que vous appellerez `tp-01-conditions.py`
4. **Bonus :** Imaginons maintenant que l'on ait une autre variable, `annees_de_cotisation`. À partir de 60 ans, si on a 40 années de cotisation, on peut prendre la retraite. Sinon, il faut atteindre 40 années de cotisation.
Nous allons donc devoir rajouter une condition supplémentaire pour les personnes ayant plus de 60 ans, en fonction de la variable `annee_cotisation`. Rajoutez cette variable, et rajoutez une **condition imbriquée** dans la branche qui concerne les plus de 60 ans.
Nous allons donc devoir rajouter une condition supplémentaire pour les personnes ayant plus de 60 ans, en fonction de la variable `annee_cotisation`. Rajoutez cette variable, et rajoutez une **condition imbriquée** dans la branche qui concerne les plus de 60 ans.
```
```admonish success title='À retenir'
@ -357,7 +357,7 @@ else:
- Le mot-clé `elif` permet de rajouter des conditions. On peut en mettre autant que l'on veut. Il est optionnel.
- Le mot-clé `else` permet de gérer tous les cas qui n'entrent pas dans les précédentes conditions. Il est forcément en dernier et est optionnel.
- Il est important de ne pas oublier
- Le symbole `:` à la fin de chaque ligne
- Le symbole `:` à la fin de chaque ligne commençant par `if`, `elif` ou `else`
- D'indenter votre code, pour indiquer à python ce qui est concerné par une condition.
- Ne pas indenter correctement un code python est une **erreur de syntaxe**, c'est à dire que le code n'est pas valide et ne pourra pas s'exécuter
```

View file

@ -213,25 +213,10 @@ Si on reprend le code de la partie précédente, on voit qu'il permet d'afficher
~~~
Que fait l'instruction `return` selon vous ? N'hésitez pas à expérimenter
2. Donnez le code permettant d'affecter le résultat de la fonction à une variable pour ensuite l'afficher. Vous pourrez calculer l'aire d'un carré de côté 3m pour cet exemple.
3. Modifiez la fonction comme suit :
~~~python
def aire_carre(cote):
aire = cote * cote
print("Avant return")
return aire
print("Après return")
~~~
Exécutez la fonction. Que se passe-t-il ? Pourquoi à votre avis ?
Vous pouvez retirer les deux lignes `print` pour la suite.
4. Modifiez la fonction comme suit:
~~~python
def aire_carre(cote):
aire = cote * cote
return
~~~
1. Affectez le résultat de la fonction à une variable, puis affichez cette variable. Quelle valeur a la variable ? pourquoi ?
1. Retirez la ligne return et recommencez. Est-ce que cela change quelque chose ?
1. Expérimentez pour répondre aux questions suivantes. Donnez le code utilisé à chaque fois.
a. Que retourne une fonction qui utilise l'instruction `return` sans préciser de valeur ?
b. Que se passe-t-il si une instruction se trouve après l'instruction `return` dans votre fonction ?
c. Que retourne une fonction qui n'a pas d'instruction `return` ?
1. Nous voulons maintenant que notre fonction renvoie l'aire **et** le périmètre d'un carré. Pour cela, modifions la fonction comme suit.
~~~python
def carre(cote):

View file

@ -1,70 +0,0 @@
from random import randint
from math import ceil
def miser(argent_restant):
numero = choisir_nombre()
mise = miser_argent(argent_restant)
return numero, mise
def choisir_nombre():
nombre = -1
while not (0 <= nombre <= 49):
nombre = int(input("Choisissez un nombre (0-49) : "))
if not (0 <= nombre <= 49):
print("Erreur : le nombre doit être compris entre 0 et 49")
return nombre
def miser_argent(argent_restant):
mise = -1
while not (0 < mise <= argent_restant):
mise = int(input(f"Choisissez votre mise (argent disponible : {argent_restant}) : "))
if not (0 < mise <= 49):
print(f"Erreur : la mise doit être comprise entre 1 et {argent_restant}")
return mise
def tourner_la_roulette():
numero = randint(0, 49)
print(f"Le croupier tourne la roulette. Le numéro {numero} est le numéro gagnant !")
return numero
def calculer_gains_couleur(mise):
return ceil(mise*0.5)
def calculer_gains_numero(mise):
return mise * 3
def continuer_de_jouer(argent):
if argent <= 0:
print("Vous êtes ruiné.e. C'est la fin de la partie.")
return False
else:
print(f"Il vous reste {argent}")
rejouer = input("Souhaitez-vous continuer ? (o/n)")
if rejouer == "o" or rejouer == "O":
return True
else:
print(f"Vous quittez le jeu avec {argent}")
return False
argent = 100
continuer = True
while continuer:
gains = 0
numero_misé, mise = miser(argent)
numero_gagnant = tourner_la_roulette()
if numero_misé == numero_gagnant:
gains = calculer_gains_numero(mise)
print(f"Bravo, vous avez misé sur le numéro gagnant. Vous gagnez {gains}")
elif numero_misé % 2 == numero_gagnant % 2:
gains = calculer_gains_couleur(mise)
print(f"Bravo, vous avez misé sur la bonne couleur. Vous gagnez {gains}")
else:
gains = -mise
print(f"Dommage, vous avez perdu votre mise : {mise}")
argent += gains
continuer = continuer_de_jouer(argent)

View file

@ -1,6 +1,5 @@
from math import ceil
from random import randint
#TODO
def miser(jetons_restants):
nombre = choisir_nombre()