Ajoute TP1 Python CIEL2
This commit is contained in:
		
							parent
							
								
									840b8d5fa4
								
							
						
					
					
						commit
						afecc46ce3
					
				
					 15 changed files with 496 additions and 95 deletions
				
			
		|  | @ -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 | ||||
| ``` | ||||
|  |  | |||
|  | @ -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): | ||||
|  |  | |||
|  | @ -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) | ||||
| 
 | ||||
| 
 | ||||
|  | @ -1,6 +1,5 @@ | |||
| from math import ceil | ||||
| from random import randint | ||||
| #TODO | ||||
| 
 | ||||
| def miser(jetons_restants): | ||||
|     nombre = choisir_nombre() | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue