TD 2 python + fix TD1
This commit is contained in:
parent
3b880e11ae
commit
ec32a52865
7 changed files with 348 additions and 25 deletions
|
|
@ -1,4 +1,4 @@
|
|||
# TD - Représentation des nombres et Python
|
||||
# TD1 - Bases de Python
|
||||
|
||||
1. Écrire un programme qui demande à l’utilisateurice d’entrer le nom et l’âge.
|
||||
Il affichera ensuite la phrase `"Bonjour <nom>, vous aurez 30 ans en <année>"`
|
||||
|
|
@ -147,4 +147,22 @@ for i in range(1, nombre + 1):
|
|||
resultat = resultat * i
|
||||
|
||||
print(f"{nombre}! = {resultat}")
|
||||
```
|
||||
|
||||
12. Écrire un script python permettant de convertir en binaire un nombre entier écrit en base 10. Vous demanderez à l'utilisateur ou l'utilisatrice le nombre à convertir, et vous afficherez le résultat.
|
||||
|
||||
```python
|
||||
nombre_decimal = input("Saisissez le nombre à convertir : ")
|
||||
nombre_binaire = ""
|
||||
|
||||
quotient = int(nombre_decimal)
|
||||
resultat = ""
|
||||
|
||||
while quotient != 0:
|
||||
reste = quotient % 2
|
||||
quotient = quotient // 2
|
||||
|
||||
resultat = str(reste) + resultat
|
||||
|
||||
print(resultat)
|
||||
```
|
||||
107
src/cours/CIEL1/01-bases-python/td/_td02-correction.md
Normal file
107
src/cours/CIEL1/01-bases-python/td/_td02-correction.md
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
# TD2 - Fonctions
|
||||
|
||||
1. Donner une fonction qui renvoie `True` si un nombre est pair et `False` sinon.
|
||||
```python
|
||||
# Solution naïve :
|
||||
def est_pair(nb):
|
||||
if nb % 2 == 0:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
```
|
||||
|
||||
```python
|
||||
# Meilleure façon de faire
|
||||
def est_pair(nb):
|
||||
return nb % 2 == 0
|
||||
```
|
||||
|
||||
1. Donner une fonction qui compte et affiche le nombre de voyelles d'une chaîne de caractères. Les voyelles sont `a e i o u y`. Attention aux majuscules. La méthode `lower` permet de mettre une chaîne de caractères en minuscules (lowercase). On l'appelle comme suit : `chaine.lower()`
|
||||
```python
|
||||
def nombre_voyelles(chaine):
|
||||
nb_voyelles = 0
|
||||
for lettre in chaine.lower():
|
||||
if lettre in "aeiouy":
|
||||
nb_voyelles += 1
|
||||
print(f"Il y a {nb_voyelles} voyelles dans {chaine}")
|
||||
```
|
||||
|
||||
1. Donner une fonction qui renvoie l'aire d'un cercle à partir de son rayon. Pour rappel, l'aire d'un cercle est définie par la formule suivante : $\pi*R^2$ où $R$ est le rayon du cercle
|
||||
```python
|
||||
import math
|
||||
|
||||
def aire(rayon):
|
||||
return math.pi * rayon ** 2
|
||||
```
|
||||
|
||||
1. Donner une fonction qui renvoie le maximum parmi les trois nombres passés en paramètre
|
||||
```python
|
||||
def maximum(a, b, c):
|
||||
if a >= b and a >= c:
|
||||
return a
|
||||
elif b >= a and b >= c:
|
||||
return b
|
||||
else:
|
||||
return c
|
||||
```
|
||||
|
||||
1. Donner une fonction qui prendra comme paramètre une chaîne de caractères. Il faudra renvoyer cette chaîne de caractères en remplaçant tous les espaces par des étoiles `*`
|
||||
```python
|
||||
def remplace(chaine):
|
||||
nouvelle_chaine = ""
|
||||
for caractere in chaine:
|
||||
if caractere == " ":
|
||||
nouvelle_chaine += "*"
|
||||
else:
|
||||
nouvelle_chaine += caractere
|
||||
return nouvelle_chaine
|
||||
```
|
||||
|
||||
1. Modifier la fonction précédente de façon à pouvoir passer en paramètre le caractère qu'on veut modifier et celui par lequel on veut le remplacer. Si on ne passe pas les paramètres, la fonction devra continuer de remplacer les espaces par des étoiles.
|
||||
|
||||
```python
|
||||
def remplace(chaine, a_remplacer=" ", remplacement="*"):
|
||||
nouvelle_chaine = ""
|
||||
for caractere in chaine:
|
||||
if caractere == a_remplacer:
|
||||
nouvelle_chaine += remplacement
|
||||
else:
|
||||
nouvelle_chaine += caractere
|
||||
return nouvelle_chaine
|
||||
```
|
||||
|
||||
1. Un gardien de phare va aux toilettes cinq fois par jour. Or les WC sont au rez-de-chaussée. Écrire une procédure (fonction qui ne renvoie rien) qui reçoit deux paramètres : la hauteur d'une marche et le nombre de marches. Cette fonction devra afficher le nombre de mètres en hauteur parcourus chaque semaine par le gardien. La phrase affichée sera de la forme : `Pour x marches de y centimètres il parcourt z mètres par semaine`
|
||||
|
||||
Attention :
|
||||
- Une semaine comporte 7 jours (pas de repos pour les gardiens de phare...)
|
||||
- Une fois en bas le gardien doit remonter
|
||||
- Les hauteurs de marches sont en centimètres, mais le résultat est à exprimer en mètres
|
||||
|
||||
```python
|
||||
def hauteur_totale(hauteur_marche, nb_marches):
|
||||
hauteur = hauteur_marche * nb_marches * 2 * 7 * 5 / 100
|
||||
print(f"Pour {nb_marches} marches de {hauteur_marche} centimètres, il parcourt {hauteur} mètres par semaine")
|
||||
```
|
||||
|
||||
## Exercices avancés :
|
||||
|
||||
1.
|
||||
a. Donner une fonction permettant de calculer la factorielle d'un nombre (entier supérieur à 1) en utilisant une boucle. Pour rappel, factorielle de $n$ s'écrit $n!$ et vaut le produit de tous les nombres entiers de 1 à n.
|
||||
Par exemple : $5! = 1\times2\times3\times4\times5 = 120$
|
||||
|
||||
```python
|
||||
def factorielle(n):
|
||||
resultat = 1
|
||||
for i in range (1, n+1):
|
||||
resultat = resultat * i
|
||||
return resultat
|
||||
|
||||
```
|
||||
|
||||
b. Donner une fonction permettant de calculer la factorielle d'un nombre en utilisant une fonction récursive. Une fonction récursive est une fonction qui s'appelle elle-même.
|
||||
```python
|
||||
def factorielle(n):
|
||||
if n != 1:
|
||||
return n * factorielle(n-1)
|
||||
return 1
|
||||
```
|
||||
|
|
@ -29,11 +29,10 @@ Il affichera ensuite la phrase `"Bonjour <nom>, vous aurez 30 ans en <année>"`
|
|||
|
||||
7. Faire le même exercice mais avec une boucle `while` cette fois.
|
||||
|
||||
|
||||
10. Écrire un script python permettant de convertir en base 10 (décimal) un nombre écrit en binaire sous forme d'une chaîne de caractères. Vous demanderez à l'utilisateur ou l'utilisatrice le nombre à convertir, et vous afficherez le résultat.
|
||||
|
||||
10. Écrire un programme permettant d'afficher les 15 premiers termes de la suite de Fibonacci. Pour rappel, la suite de Fibonacci est une suite de nombres dont chaque nombre est la somme des deux précédents. Elle commence par 0 et 1.
|
||||
|
||||
11. Écrire un programme qui permet d'afficher le résultat de l'opération factorielle d'un nombre. Pour rappel, factorielle de $n$ s'écrit $n!$ et vaut le produit de tous les nombres entiers de 1 à n.
|
||||
|
||||
Par exemple : $5! = 1\times2\times3\times4\times5 = 120$
|
||||
Par exemple : $5! = 1\times2\times3\times4\times5 = 120$
|
||||
|
|
|
|||
30
src/cours/CIEL1/01-bases-python/td/td02-fonctions.md
Normal file
30
src/cours/CIEL1/01-bases-python/td/td02-fonctions.md
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# TD2 - Fonctions
|
||||
|
||||
1. Donner une fonction qui renvoie `True` si un nombre est pair et `False` sinon.
|
||||
|
||||
|
||||
1. Donner une fonction qui compte et affiche le nombre de voyelles d'une chaîne de caractères. Les voyelles sont `a e i o u y`. Attention aux majuscules. La méthode `lower` permet de mettre une chaîne de caractères en minuscules (lowercase). On l'appelle comme suit : `chaine.lower()`
|
||||
|
||||
1. Donner une fonction qui renvoie l'aire d'un cercle à partir de son rayon. Pour rappel, l'aire d'un cercle est définie par la formule suivante : $\pi*R^2$ où $R$ est le rayon du cercle
|
||||
|
||||
1. Donner une fonction qui renvoie le maximum parmi les trois nombres passés en paramètre
|
||||
|
||||
1. Donner une fonction qui prendra comme paramètre une chaîne de caractères. Il faudra renvoyer cette chaîne de caractères en remplaçant tous les espaces par des étoiles `*`
|
||||
|
||||
1. Modifier la fonction précédente de façon à pouvoir passer en paramètre le caractère qu'on veut modifier et celui par lequel on veut le remplacer. Si on ne passe pas les paramètres, la fonction devra continuer de remplacer les espaces par des étoiles.
|
||||
|
||||
1. Un gardien de phare va aux toilettes cinq fois par jour. Or les WC sont au rez-de-chaussée. Écrire une procédure (fonction qui ne renvoie rien) qui reçoit deux paramètres : la hauteur d'une marche et le nombre de marches. Cette fonction devra afficher le nombre de mètres en hauteur parcourus chaque semaine par le gardien. La phrase affichée sera de la forme : `Pour x marches de y centimètres il parcourt z mètres par semaine`
|
||||
|
||||
Attention :
|
||||
- Une semaine comporte 7 jours (pas de repos pour les gardiens de phare...)
|
||||
- Une fois en bas le gardien doit remonter
|
||||
- Les hauteurs de marches sont en centimètres, mais le résultat est à exprimer en mètres
|
||||
|
||||
|
||||
## Exercices avancés :
|
||||
|
||||
1.
|
||||
a. Donner une fonction permettant de calculer la factorielle d'un nombre (entier supérieur à 1) en utilisant une boucle. Pour rappel, factorielle de $n$ s'écrit $n!$ et vaut le produit de tous les nombres entiers de 1 à n.
|
||||
Par exemple : $5! = 1\times2\times3\times4\times5 = 120$
|
||||
|
||||
b. Donner une fonction permettant de calculer la factorielle d'un nombre en utilisant une fonction récursive. Une fonction récursive est une fonction qui s'appelle elle-même.
|
||||
|
|
@ -1,22 +1 @@
|
|||
# TD Python
|
||||
|
||||
|
||||
Ecrire un script python permettant de convertir en binaire un nombre entier écrit en base 10. Vous demanderez à l'utilisateur ou l'utilisatrice le nombre à convertir, et vous afficherez le résultat.
|
||||
|
||||
```python
|
||||
nombre_decimal = input("Saisissez le nombre à convertir : ")
|
||||
nombre_binaire = ""
|
||||
|
||||
quotient = int(nombre_decimal)
|
||||
resultat = ""
|
||||
|
||||
while quotient != 0:
|
||||
reste = quotient % 2
|
||||
quotient = quotient // 2
|
||||
|
||||
resultat += str(reste)
|
||||
|
||||
resultat = resultat[::-1]
|
||||
|
||||
print(resultat)
|
||||
```
|
||||
# TD2 - Python
|
||||
|
|
|
|||
|
|
@ -277,4 +277,26 @@ for i in range(1, nombre + 1):
|
|||
resultat = resultat * i
|
||||
|
||||
print(f"{nombre}! = {resultat}")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
12. Écrire un script python permettant de convertir en binaire un nombre entier écrit en base 10. Vous demanderez à l'utilisateur ou l'utilisatrice le nombre à convertir, et vous afficherez le résultat.
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
nombre_decimal = input("Saisissez le nombre à convertir : ")
|
||||
nombre_binaire = ""
|
||||
|
||||
quotient = int(nombre_decimal)
|
||||
resultat = ""
|
||||
|
||||
while quotient != 0:
|
||||
reste = quotient % 2
|
||||
quotient = quotient // 2
|
||||
|
||||
resultat = str(reste) + resultat
|
||||
|
||||
print(resultat)
|
||||
```
|
||||
168
src/slides/td02-python-fonctions.md
Normal file
168
src/slides/td02-python-fonctions.md
Normal file
|
|
@ -0,0 +1,168 @@
|
|||
---
|
||||
marp: true
|
||||
theme: catppuccin
|
||||
paginate: true
|
||||
size: 4:3
|
||||
transition: coverflow
|
||||
footer: ''
|
||||
math: katex
|
||||
---
|
||||
<style>
|
||||
section {
|
||||
font-size: 28px;
|
||||
}
|
||||
</style>
|
||||
|
||||
---
|
||||
|
||||
# TD2 - Fonctions
|
||||
|
||||
---
|
||||
|
||||
1. Donner une fonction qui renvoie `True` si un nombre est pair et `False` sinon.
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
# Solution naïve :
|
||||
def est_pair(nb):
|
||||
if nb % 2 == 0:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
# Meilleure façon de faire
|
||||
def est_pair(nb):
|
||||
return nb % 2 == 0
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
1. Donner une fonction qui compte et affiche le nombre de voyelles d'une chaîne de caractères. Les voyelles sont `a e i o u y`. Attention aux majuscules. La méthode `lower` permet de mettre une chaîne de caractères en minuscules (lowercase). On l'appelle comme suit : `chaine.lower()`
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
def nombre_voyelles(chaine):
|
||||
nb_voyelles = 0
|
||||
for lettre in chaine.lower():
|
||||
if lettre in "aeiouy":
|
||||
nb_voyelles += 1
|
||||
print(f"Il y a {nb_voyelles} voyelles dans {chaine}")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
1. Donner une fonction qui renvoie l'aire d'un cercle à partir de son rayon. Pour rappel, l'aire d'un cercle est définie par la formule suivante : $\pi*R^2$ où $R$ est le rayon du cercle
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
import math
|
||||
|
||||
def aire(rayon):
|
||||
return math.pi * rayon ** 2
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
1. Donner une fonction qui renvoie le maximum parmi les trois nombres passés en paramètre
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
def maximum(a, b, c):
|
||||
if a >= b and a >= c:
|
||||
return a
|
||||
elif b >= a and b >= c:
|
||||
return b
|
||||
else:
|
||||
return c
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
1. Donner une fonction qui prendra comme paramètre une chaîne de caractères. Il faudra renvoyer cette chaîne de caractères en remplaçant tous les espaces par des étoiles `*`
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
def remplace(chaine):
|
||||
nouvelle_chaine = ""
|
||||
for caractere in chaine:
|
||||
if caractere == " ":
|
||||
nouvelle_chaine += "*"
|
||||
else:
|
||||
nouvelle_chaine += caractere
|
||||
return nouvelle_chaine
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
1. Modifier la fonction précédente de façon à pouvoir passer en paramètre le caractère qu'on veut modifier et celui par lequel on veut le remplacer. Si on ne passe pas les paramètres, la fonction devra continuer de remplacer les espaces par des étoiles.
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
def remplace(chaine, a_remplacer=" ", remplacement="*"):
|
||||
nouvelle_chaine = ""
|
||||
for caractere in chaine:
|
||||
if caractere == a_remplacer:
|
||||
nouvelle_chaine += remplacement
|
||||
else:
|
||||
nouvelle_chaine += caractere
|
||||
return nouvelle_chaine
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
1. Un gardien de phare va aux toilettes cinq fois par jour. Or les WC sont au rez-de-chaussée. Écrire une procédure (fonction qui ne renvoie rien) qui reçoit deux paramètres : la hauteur d'une marche et le nombre de marches. Cette fonction devra afficher le nombre de mètres en hauteur parcourus chaque semaine par le gardien. La phrase affichée sera de la forme : `Pour x marches de y centimètres il parcourt z mètres par semaine`
|
||||
|
||||
Attention :
|
||||
- Une semaine comporte 7 jours (pas de repos pour les gardiens de phare...)
|
||||
- Une fois en bas le gardien doit remonter
|
||||
- Les hauteurs de marches sont en centimètres, mais le résultat est à exprimer en mètres
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
def hauteur_totale(hauteur_marche, nb_marches):
|
||||
hauteur = hauteur_marche * nb_marches * 2 * 7 * 5 / 100
|
||||
print(f"Pour {nb_marches} marches de {hauteur_marche} centimètres, il parcourt {hauteur} mètres par semaine")
|
||||
```
|
||||
|
||||
---
|
||||
## Exercices avancés
|
||||
|
||||
---
|
||||
|
||||
Donner une fonction permettant de calculer la factorielle d'un nombre (entier supérieur à 1) en utilisant une boucle. Pour rappel, factorielle de $n$ s'écrit $n!$ et vaut le produit de tous les nombres entiers de 1 à n.
|
||||
Par exemple : $5! = 1\times2\times3\times4\times5 = 120$
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
def factorielle(n):
|
||||
resultat = 1
|
||||
for i in range (1, n+1):
|
||||
resultat = resultat * i
|
||||
return resultat
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
b. Donner une fonction permettant de calculer la factorielle d'un nombre en utilisant une fonction récursive. Une fonction récursive est une fonction qui s'appelle elle-même.
|
||||
|
||||
---
|
||||
|
||||
```python
|
||||
def factorielle(n):
|
||||
if n != 1:
|
||||
return n * factorielle(n-1)
|
||||
return 1
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue