Skip to content
Snippets Groups Projects
Commit 8d53438d authored by mathieu.schiess@edu.ge.ch's avatar mathieu.schiess@edu.ge.ch
Browse files

Ajout d'une vidéo au NB variables2

parent 6f8e7864
Branches
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
<div style="padding:20px;background-color:papayawhip;" >
<h3 style="color:chocolate"> <i class="fa fa-info" aria-hidden="true"> </i> &nbsp; Remarque introductive &nbsp; <i class="fa fa-info" aria-hidden="true"></h3>
<p> Ce fichier est fait pour être lu sur le site <a href="https://notebook.basthon.fr/"><img src='https://notebook.basthon.fr/assets/efede5218c9087496f16.png' style="border: 0; display:inline; margin: 0 5px; height:30px" alt="Basthon"/></a>. <br>
Si vous l'avez ouvert avec un autre programme, comme Jupyter notebook, vous riquez de rencontrer quelques bugs. <br>
Veuillez cliquez sur <a href="https://notebook.basthon.fr/">ce lien</a> et y charger ce fichier à l'aide du bouton "Ouvrir" &nbsp; <i class="fa fa-folder" aria-hidden="true"> </i>
</p>
</div>
%% Cell type:markdown id: tags:
# 5. Les variables 2 (entrée-sortie, type)
%% Cell type:markdown id: tags:
## Types de Données
Python est un langage à typage dynamique, ce qui signifie que vous n'avez pas besoin de spécifier le type de données d'une variable lorsque vous la créez.
<blockquote class="alert alert-info" style="background-color:rgb(220,240,255); margin:10px 10%;">
<p><span style="font-size:1.5em"></span> C'est quoi le type d'une variable ? Exécutez la cellule ci-dessous pour voir une petite introduction sur la notion de type d'une variable</p>
</blockquote>
%% Cell type:code id: tags:
``` python
from IPython.display import HTML
HTML("""<iframe width="560" height="315" src="https://www.youtube.com/embed/5zA8_3YDXb4?si=3V95fi6wa24ddwW_" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>""")
```
%% Cell type:markdown id: tags:
### Principaux types de données en Python
- `int` : pour les nombres entiers
- `float` : pour les nombres à virgule flottante
- `str` : pour les chaînes de caractères
- `bool` : pour les valeurs booléennes (True ou False)
```python
# Exemple de différents types de données
entier = 10
chaine = "Bonjour"
flottant = 12.85
booleen = True
%% Cell type:markdown id: tags:
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Quizz </h3>
Que stocke la variable `pi` dans le code suivant ?
```python
pi = 3.14159
```
<ol style="list-style-type: upper-alpha">
<li>Une chaîne de caractères</li>
<li>Un entier</li>
<li>Un nombre à virgule flottante</li>
<li>Une valeur booléenne</li>
</ol>
%% Cell type:raw id: tags:
Ma réponse:
%% Cell type:markdown id: tags:
<details>
<summary style="border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8">
Solution
</summary>
<div style="border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8">
C. Un nombre à virgule flottante
</div>
</details>
%% Cell type:markdown id: tags:
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Question </h3>
```
En informatique, `int` est l'abréviation pour
A) international
B) entier
C) interne
D) intelligent
```
</div>
%% Cell type:raw id: tags:
Ma réponse:
%% Cell type:markdown id: tags:
<details>
<summary style="border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8">
Solution
</summary>
<div style="border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8">
B) entier
</div>
</details>
%% Cell type:markdown id: tags:
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Question </h3>
Indiquez le type des variables (entier, flottant ou chaîne de caractères) permettant de stocker sur votre smartphone les informations suivantes :
- le nom d’un contact
- le numéro de téléphone d’un contact
- un SMS
- le prix d'un croissant
- le code de votre partage de connexion Wi-Fi
- le pourcentage _affiché_ de batterie restante
- ma note à la dernière épreuves de Mathématiques
</div>
%% Cell type:raw id: tags:
Mes réponses :
- le nom d’un contact :
- le numéro de téléphone d’un contact :
- un SMS :
- le prix d'un croissant :
- le code de votre partage de connexion Wi-Fi :
- le pourcentage affiché de batterie restante :
- ma note à la dernière épreuves de Mathématiques :
%% Cell type:markdown id: tags:
<details>
<summary style="border-left:3px solid #3c763d; border-radius:2pt; width:100%; color:#3c763d; padding:6px; background-color: #dff0d8">
Solutions
</summary>
<div style="border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8">
- le nom d’un contact : Une chaîne de caractères
- le numéro de téléphone d’un contact : Une entier
- un SMS : Une chaîne de caractères
- le prix d'un croissant : Un nombre à virgule flottante
- le code de votre partage de connexion Wi-Fi : Une chaîne de caractères
- le pourcentage affiché de batterie restante : Une entier
- ma note à la dernière épreuves de Mathématiques : Un nombre à virgule flottante
</div>
</details>
%% Cell type:markdown id: tags:
## Demander à l'utilisateur d'entrer une valeur : `input`
La fonction `input('question')` permet de demander une entrée (input) à l'utilisateur.
L'utilisateur voit le texte `question` affiché à la console et doit répondre à cette question. Il termine son entrée avec la touche Enter.
La réponse de l'utilisateur est ensuite mémorisée dans une variable que nous appelons `x` dans cet exemple.
Ensuite, nous pouvons utiliser cette variable `x` dans la suite du programme, par exemple comme argument dans une fonction `print()`.
%% Cell type:code id: tags:
``` python
x = input('Entrez votre nom: ')
print('Bonjour', x)
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 1 </h3>
Ajoutez une troisième question et utilisez la réponse dans un `print()`.
%% Cell type:code id: tags:
``` python
nom = input('Entrez votre nom: ')
print('Bonjour', nom)
age = input('Entrez votre âge: ')
print('Très bien', nom, 'vous avez', age, 'ans')
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 2 </h3>
Ecrire un code qui demande à l’utilisateur son prénom dans une première question puis qui demande dans une deuxième question son nom de famille et qui écrit ensuite:<br>
`"Bienvenu Prénom Nom"`
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
## Demander un nombre
La fonction `input()` permet d'obtenir une entrée de l'utilisateur. Mais attention !
La valeur retournée est une chaine de caractères (de type string `str`). Nous pouvons le prouver avec la fonction `type()`.
%% Cell type:code id: tags:
``` python
x = input('Entrez un nombre: ')
print(type(x))
```
%% Cell type:markdown id: tags:
<div class="alert alert-block alert-info">
<b>&#9889; A retenir : </b> <br>
Une variable entrée au clavier par un <i>input</i> est toujours du type <i>str</i> c'est à dire considéré comme une chaine de caractères.
</ul>
</div>
%% Cell type:markdown id: tags:
Pour pouvoir utiliser cette valeur dans un calcul, nous devons la transformer en nombre. Pour convertir une chaine de caractères en un nombre à virgule flottante nous utilisons la fonction de conversion `float()`.
%% Cell type:code id: tags:
``` python
x = '1.5'
print(type(x)) # la variable x contient une chaîne
print(type(float(x))) # la fonction float(x) renvoie un nombre
```
%% Cell type:markdown id: tags:
### Exemple
On souhaite avoir un programme qui permet de calculer la moyenne de deux nombres qui sont fournis par l'utilisateur. Tester la proposition de programme suivante:
%% Cell type:code id: tags:
``` python
#Demande à l'utilisateur deux nombres puis calcule et affiche leur somme
nombre1 = input("Taper un premier nombre : ")
nombre2 = input("Taper un deuxième nombre : ")
moyenne = (nombre1 + nombre2)/2
print("La somme de ces deux nombres est ",moyenne)
```
%% Cell type:markdown id: tags:
On comprend le problème : pour python `nombre1` et `nombre2` sont en fait des chaines de caractères par conséquent, calculer leur moyenne n'a pas de sens !
Pour résoudre ce problème nous devons convertir `nombre1` et `nombre2` en nombre à virgule, cela se fait grâce à l'instruction `float`. Voici le programme corrigé :
%% Cell type:code id: tags:
``` python
#Demande à l'utilisateur deux nombres puis calcule et affiche leur somme
nombre1 = float(input("Taper un premier nombre : ")) #float() permet de convertir la valeur entrée en flottant
nombre2 = float(input("Taper un deuxième nombre : "))
moyenne = (nombre1 + nombre2)/2
print("La moyenne de ces deux nombres est ",moyenne)
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 3</h3>Complétez le programme pour afficher la surface du cercle.
%% Cell type:code id: tags:
``` python
print('Circle')
r = float(input('Entrez le rayon: '))
pi = 3.14
print()
print('rayon =', r)
print('diamètre =', 2 * r)
print('circonférence =', pi * 2 * r)
print('surface =', ...)
```
%% Cell type:markdown id: tags:
Nous pouvons également créer des programmes où nous demandons plusieurs valeurs à l'utilisateur. Cette fois, nous permettons seulement l'utilisation de nombres entiers, et donc transformons la chaine obtenue avec `int()` en nombre entier.
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 4 </h3>Complétez le programme pour afficher le périmètre et la diagonale.
%% Cell type:code id: tags:
``` python
print('Rectangle')
a = float(input('Entrez la largeur: '))
b = float(input('Entrez la longueur: '))
print('surface =', a * b)
print('périmètre =', ...)
print('diagonale =', ...)
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 5 </h3>
Chacun des programmes suivants devrait demander à l’utilisateur deux nombres, et écrire le produit de ces deux nombres mais il contient au moins une erreur. Corrigez chacun des programmes puis testez les
**Programme A**
%% Cell type:code id: tags:
``` python
int(input("premier nombre: "))
int(input("deuxième nombre: "))
print(premier*deuxième)
```
%% Cell type:markdown id: tags:
**Programme B**
%% Cell type:code id: tags:
``` python
x=input("premier nombre: ")
y=input("deuxième nombre: ")
x*y
```
%% Cell type:markdown id: tags:
**Programme C**
%% Cell type:code id: tags:
``` python
x=int("premier nombre : ")
y=int("deuxième nombre: ")
z=x*y
print(“z”)
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 6 </h3>
Complétez le programme Python ci-dessous qui calcule la surface d'un rectangle après avoir demandé sa largeur et sa longueur.
%% Cell type:code id: tags:
``` python
# Programme pour calculer la surface d'un rectangle à partir de sa longueur et de sa largeur
longueur = _____(input("Entrer la longueur du rectangle : ")) #longueur doit être un flottant utiliser la conversion !
largeur = _____(_____("Entrer la largeur du rectangle : "))
surface = _______*_________
_____("La surface du rectangle est :",___________)
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 7 </h3>
Chacun des programmes devrait demander à l’utilisateur deux nombres n, et écrire les n premiers multiples de 100. Corriger les erreurs de chaque programme afin qu’il fonctionne.
**Programme A**
%% Cell type:code id: tags:
``` python
n = int(input(“Nombre de multiples: ”))
for _ in range(n):
print(x)
x+100
```
%% Cell type:markdown id: tags:
**Programme B**
%% Cell type:code id: tags:
``` python
x = int(input(“Nombre de multiples: “))
n = 100
for _ in range(x):
print(x)
x = x+100
```
%% Cell type:markdown id: tags:
**Programme C**
%% Cell type:code id: tags:
``` python
x = int(input(“Nombre de multiples: “))
n = 100
for _ in range(x):
print(n)
n = n+n
```
%% Cell type:markdown id: tags:
**Programme D**
%% Cell type:code id: tags:
``` python
x = int(input(“Nombre de multiples:”))
for _ in range(x):
n = 100
print(n)
n = n+100
```
%% Cell type:markdown id: tags:
**Programme E**
%% Cell type:code id: tags:
``` python
x=int(input(“Nombre de multiples:”))
n = 100
for _ in range (x):
n = n + 100
print(n)
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 8 </h3>
Cpméàtez le programme Python qui demande à l’utilisateur un mot, et un nombre n et qui écrit n fois de suite le mot donné par l’utilisateur.
%% Cell type:code id: tags:
``` python
n = input(...)
mot = input(...)
for #à compléter
#à compléter
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 9 </h3>
On considère le programme suivant:
```python
from turtle import *
n = 10
angle = int(360 / n)
for k in range(n):
forward(100)
right(angle)
done()
```
1. Tester le programme ci-dessus, puis modifiez le en définissant une fonction `polygone(lg, n)` qui permet de tracer des polygones avec `n` côtés et de longueur `lg`. Le programme doit produire la même figure mais en utilisant la fonction `polygone(lg, n)`.
%% Cell type:code id: tags:
``` python
from turtle import *
n = 10
angle = int(360 / n)
for k in range(n):
forward(100)
right(angle)
done()
```
%% Cell type:markdown id: tags:
2. Modifiez le programme précédant afin d’obtenir un programme qui demande à l’utilisateur⋅trice la taille et le nombre de côtés du polygone puis trace ce polygone.
Exemple d’exécution du programme:
```
Quel est la nombre de côtés de votre polygone : 8
Quel est la taille de votre polygone : 100
```
qui devrait générer un hexagone de côté 100:
%% Cell type:code id: tags:
``` python
# votre programme complet...
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 10 </h3>
Compléter le programme pour avoir un programme qui demande un nombre à l’utilisateur et qui dessine un carré ayant cette longueur comme côté.
%% Cell type:code id: tags:
``` python
from turtle import *
n = 10
angle = int(360 / n)
for k in range(n):
forward(100)
right(angle)
done()
```
%% Cell type:markdown id: tags:
# 🟥 Fin
<div class="alert alert-danger" style="border-left:5px solid #a94442;border-radius: 5px;">
- **Ne pas Oublier de sauvegarder son travail.**
- **Pour effectuer** une sauvegarde personnelle du document obtenu :
- utilisez le menu `Fichier / Enregistrer sous…`.
- nomez le fichier `variables1.ipynb`
- choisissez de sauver votre fichier dans `Documents/1IN/Programmation/Les_variables`.
</div>
---
#### Remarque générale
Ce document c'est inspiré des notebook trouvé sur
- Les ressources pédagogiques du catalogue modulo https://modulo-info.ch/.
- Les ressources pédagogiques du [Lycée Mounier](https://info-mounier.fr/snt/python/)
Le notebook est sous license Creative Commons [BY-NC-SA](https://creativecommons.org/licenses/?lang=fr)
![Licence Creative Commons](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)
%% Cell type:code id: tags:
``` python
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment