"source": "r = 2\npi = 3.14159\nA = pi*r**2\nprint(\"L'aire d'un disque de rayon \",r,\" vaut \", A)"
...
...
@@ -59,7 +59,7 @@
"execution_count": null,
"metadata": {
"scrolled": true,
"trusted": true
"trusted": false
},
"outputs": [],
"source": "n = 1\nfor _ in range(10):\n print(n, \" x 7 =\", n*7)\n n = n + 1"
...
...
@@ -74,7 +74,7 @@
"execution_count": null,
"metadata": {
"scrolled": true,
"trusted": true
"trusted": false
},
"outputs": [],
"source": "from turtle import *\n \nx = 20\nfor _ in range(30):\n forward(x)\n left(90)\n x = x + 10\n \ndone()"
...
...
@@ -88,7 +88,7 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": true
"trusted": false
},
"outputs": [],
"source": "from turtle import *\n\ndef triangle(l):\n for _ in range(3):\n forward(l)\n left(120)\n \nx = 20\nfor _ in range(4):\n triangle(x)\n forward(x + 10)\n x = x + 20\n \ndone()"
...
...
@@ -112,7 +112,7 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": true
"trusted": false
},
"outputs": [],
"source": "# recopiez votre programme ici"
...
...
@@ -126,7 +126,7 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": true
"trusted": false
},
"outputs": [],
"source": "from tutor import tutor # on importe la fonction tutor de la bibliothèque tutor\n\na = 15\nb = 10\nc = a + b\nd = c / 2\n\ntutor() # on utilise cette fonction pour visualiser le programme ligne par ligne"
...
...
@@ -140,7 +140,7 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": true
"trusted": false
},
"outputs": [],
"source": "# recopiez votre programme ici"
...
...
@@ -179,7 +179,7 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": true
"trusted": false
},
"outputs": [],
"source": "# recopiez votre programme ici"
...
...
@@ -193,7 +193,7 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": true
"trusted": false
},
"outputs": [],
"source": "# recopiez votre programme ici"
...
...
@@ -212,7 +212,7 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": true
"trusted": false
},
"outputs": [],
"source": "x = ...\nfor _ in range(...):\n print(x)\n x = ..."
...
...
@@ -226,7 +226,7 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": true
"trusted": false
},
"outputs": [],
"source": "...\nfor _ in range(...):\n print(...)\n ...\n"
...
...
@@ -240,7 +240,7 @@
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": true
"trusted": false
},
"outputs": [],
"source": "...\nfor _ in range(...):\n print()\n ..."
...
...
@@ -255,7 +255,7 @@
"execution_count": null,
"metadata": {
"scrolled": false,
"trusted": true
"trusted": false
},
"outputs": [],
"source": "from turtle import *\n\nspeed(9) # pour dessiner plus vite\n\n# pour positionner le curseur en bas à gauche\npenup()\ngoto(-200, -200)\npendown()\n\n# mettre le bon style de trait\nwidth(5)\ncolor(\"red\")\n\n# à compléter avec maximum 5 lignes\n\ndone()"
...
...
@@ -270,7 +270,7 @@
"execution_count": null,
"metadata": {
"scrolled": false,
"trusted": true
"trusted": false
},
"outputs": [],
"source": "from turtle import *\n\nspeed(9) # pour dessiner plus vite\n\n# pour positionner le curseur en bas à gauche\npenup()\ngoto(0, -100)\npendown()\n\n\nwidth(5) # trait épais\n\n# à compléter avec maximum 13 lignes\n\ndone()"
...
...
@@ -278,13 +278,13 @@
{
"cell_type": "markdown",
"metadata": {},
"source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 7 </h3>\n\n1. Testez le programme suivant (voir plus bas pour tester) :\n\n```Python\nfrom turtle import *\n\n# pour être à gauche du canevas\nbackward(250)\n\n# Code à factoriser\nfor k in range(3):\n forward(30)\n right(120)\nforward(30)\nfor k in range(3):\n forward(60)\n right(120)\nforward(60)\nfor k in range(3):\n forward(90)\n right(120)\nforward(90)\nfor k in range(3):\n forward(120)\n right(120)\nforward(120)\nfor k in range(3):\n forward(150)\n right(120)\n\ndone()\n```\n2. Définissez une fonction `triangle(l)`, qui permet de tracer des triangles équilatéraux de longueur `l`, et utilisez-là pour réduire le nombre d’instructions du programme.\n\n**NB**: Le nombre d'instructions du programme doit être au moins divisé par 2."
"source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 7 </h3>\n\n1. Testez le programme suivant (voir plus bas pour tester) :\n\n```python\nfrom turtle import *\n\n# pour être à gauche du canevas\nbackward(250)\n\n# Code à factoriser\nfor k in range(3):\n forward(30)\n right(120)\nforward(30)\nfor k in range(3):\n forward(60)\n right(120)\nforward(60)\nfor k in range(3):\n forward(90)\n right(120)\nforward(90)\nfor k in range(3):\n forward(120)\n right(120)\nforward(120)\nfor k in range(3):\n forward(150)\n right(120)\n\ndone()\n```\n2. Définissez une fonction `triangle(l)`, qui permet de tracer des triangles équilatéraux de longueur `l`, et utilisez-là pour réduire le nombre d’instructions du programme.\n\n**NB**: Le nombre d'instructions du programme doit être au moins divisé par 2."
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": true
"trusted": false
},
"outputs": [],
"source": "from turtle import *\n\n# pour être à gauche du canevas\nbackward(250)\n\n# Code à factoriser\nfor _ in range(3):\n forward(30)\n right(120)\nforward(30)\nfor _ in range(3):\n forward(60)\n right(120)\nforward(60)\nfor _ in range(3):\n forward(90)\n right(120)\nforward(90)\nfor _ in range(3):\n forward(120)\n right(120)\nforward(120)\nfor _ in range(3):\n forward(150)\n right(120)\n\ndone()\n"
...
...
@@ -299,7 +299,7 @@
"execution_count": null,
"metadata": {
"scrolled": false,
"trusted": true
"trusted": false
},
"outputs": [],
"source": "from turtle import *\n\ndef carre(longueur):\n # code de la fonction à compléter\n\nspeed(9) # pour dessiner plus vite\n\n# pour positionner le curseur en bas à gauche\npenup()\ngoto(-200, -200)\npendown()\n\n# mettre le bon style de trait\nwidth(5)\ncolor(\"red\")\n\n# à compléter avec une boucle\n\n\ndone()"
...
...
@@ -314,7 +314,7 @@
"execution_count": null,
"metadata": {
"scrolled": false,
"trusted": true
"trusted": false
},
"outputs": [],
"source": "from turtle import *\n\ndef triangle(longueur):\n # code de la fonction à compléter\n\nspeed(9) # pour dessiner plus vite\n\n# pour positionner le curseur en bas à gauche\npenup()\ngoto(-200, -200)\npendown()\n\n# mettre le bon style de trait\nwidth(3)\ncolor(\"red\")\n\n# à compléter avec une boucle\n\n\ndone()"
...
...
@@ -327,13 +327,13 @@
{
"cell_type": "markdown",
"metadata": {},
"source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 6 </h3>\n\nRécrire l'exemple 2 de la table de mutliplication de 7 en utilisant un indice de boucle `for`.\n\n```python\nn = 1\nfor _ in range(10):\n print(n, \" x 7 =\", n*7)\n n = n + 1\n```\n\n*Indication:*\n- **Votre programme dois contenir seulement 2 lignes**"
"source": "<h3 style=\"color:teal;background-color:azure;\" > <i class=\"fa fa-pencil\" aria-hidden=\"true\"> </i> Exercice 10 </h3>\n\nRécrire l'exemple 2 de la table de mutliplication de 7 en utilisant un indice de boucle `for`.\n\n```python\nn = 1\nfor _ in range(10):\n print(n, \" x 7 =\", n*7)\n n = n + 1\n```\n\n*Indication:*\n- **Votre programme dois contenir seulement 2 lignes**"
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"trusted": true
"trusted": false
},
"outputs": [],
"source": "# votre programme"
...
...
@@ -344,15 +344,6 @@
"trusted": true
},
"source": "# 🟥 Fin\n\n<div class=\"alert alert-danger\" style=\"border-left:5px solid #a94442;border-radius: 5px;\">\n \n- **Ne pas Oublier de sauvegarder son travail.**\n \n- **Pour effectuer** une sauvegarde personnelle du document obtenu :\n - utilisez le menu `Fichier / Enregistrer sous…`.\n - nomez le fichier `variables1.ipynb`\n - choisissez de sauver votre fichier dans `Documents/1IN/Programmation/Les_variables`.\n\n </div>\n\n---\n\n#### Remarque générale\n\nCe document c'est inspiré des notebook trouvé sur\n- Les ressources pédagogiques du [Lycée Levavasseur](https://www.levavasseur.xyz/NSI_P/Python/Python.html) \n- Les ressources pédagogiques du [Lycée Mounier](https://info-mounier.fr/snt/python/) \n\nLe notebook est sous license Creative Commons [BY-NC-SA](https://creativecommons.org/licenses/?lang=fr)\n"
<p> Ce fichier est fait pour être lu sur le site <ahref="https://notebook.basthon.fr/"><imgsrc='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 <ahref="https://notebook.basthon.fr/">ce lien</a> et y charger ce fichier à l'aide du bouton "Ouvrir" <iclass="fa fa-folder"aria-hidden="true"></i>
</p>
</div>
%% Cell type:markdown id: tags:
# 5. Les variables
Dans cette leçon, nous allons étudier le concept de variables. Dans la leçon 4 sur les fonctions avec paramètres, nous avons vu qui'il était possible de paramètrer les fonctions afin que leur comportement varient. Ces paramètres permettent d'indiquer, par exemple, que
- qu'une fonction `rect(d, e)` trace un rectangle où les paramètres `d, e` donnent les dimensions du rectangle.
- qu'une fonction `maison(c)` dessine une maison où `c` permet de spécifier la couleur du rectangle.
## Qu'est-ce qu'une variable ?
En programmation, une variable est un espace réservé en mémoire pour stocker des valeurs qui peuvent être utilisées et modifiées dans vos programmes. Pensez-y comme une boîte avec un nom que vous pouvez utiliser pour stocker et récupérer des informations.
Pour créer une variable en Python, il vous suffit de choisir un nom et de lui affecter une valeur à l'aide du signe égal `=`.
```python
# Exemple de création de variables
age=17
nom="Alice"
pi=3.14159
```
## Exemples d'utilisation de variables
### Exemple 1 : Faire des calculs
Les variables permettent de stocker des données et de les faire évoluer. Lorsque les variables contiennent des données numériques, il est possible de faire des caculs en tutilisant les opérateurs `+`, `-`, `*`, `/` et `**`ainis que `%` et `//` si ce sont des valeurs entières. Par exemple, si on teste le programme suivant
%% Cell type:code id: tags:
``` python
r=2
pi=3.14159
A=pi*r**2
print("L'aire d'un disque de rayon ",r," vaut ",A)
```
%% Cell type:markdown id: tags:
On obtient un programme qui affiche l'aire d'un disque de rayon 2.
### Exemple 2 : Apporter des variations à des répétitions
On peut modifier une variable à chaque itération d'une boucle `for`. On peut, par exemple, utiliser une variable pour afficher une table de mutiliplication. Vérifier que le programme suivant affiche bien la table de multiplication de 7:
%% Cell type:code id: tags:
``` python
n=1
for_inrange(10):
print(n," x 7 =",n*7)
n=n+1
```
%% Cell type:markdown id: tags:
Pour ajouter 1 à la variable `n`, on écrit `n = n + 1` qui consiste à remplacer la valeur de `n` par son ancienne valeur plus 1.
On peut utiliser un procéder similaire pour tracer une spirales, comme le fait le programme suivant:
%% Cell type:code id: tags:
``` python
fromturtleimport*
x=20
for_inrange(30):
forward(x)
left(90)
x=x+10
done()
```
%% Cell type:markdown id: tags:
### Exemple 3 : Variables avec une fonction avec paramètre.
On peut utiliser la valeur d'une variable comme argument d'une fonction. Le programme suivant va permettre de dessiner des triangles de plus en plus grands:
✍️ **Question 1** : Déterminez mentalement la valeur de la variable `d` à l'issue de ce programme ?
%% Cell type:raw id: tags:
Votre réponse :
%% Cell type:markdown id: tags:
🐍 **Question 2** : Recopiez ce programme dans la cellule ci-dessous, puis ajouter un dernière ligne où vous utilisez la fonction `print` pour afficher la valeur de la variable `d` et ainsi valider votre réponse.
%% Cell type:code id: tags:
``` python
# recopiez votre programme ici
```
%% Cell type:markdown id: tags:
🐍 **Question 3** : Exécutez la cellule ci-dessous puis exécutez le programme ligne par ligne avec les boutons <buttonclass='fa'>Forward ></button> et <buttonclass='fa'>< Back</button> pour bien comprendre son fonctionnement.
> On utilise ici les fonctionnalités de la bibliothèque `tutor` qui permet d'exécuter un programme ligne par ligne.
%% Cell type:code id: tags:
``` python
fromtutorimporttutor# on importe la fonction tutor de la bibliothèque tutor
a=15
b=10
c=a+b
d=c/2
tutor()# on utilise cette fonction pour visualiser le programme ligne par ligne
```
%% Cell type:markdown id: tags:
🐍 **Question 4** : On considère maintenant que `a` et `b` correspondent à des notes. Réécrivez le programme en utilisant des noms de variables plus représentatifs (pour les 4 variables).
On doit écrire un programme Python qui effectue le opérations suivantes.
- Créer une variables `A` qui prend la valeur 5
- Multiplier A par 3
- Soustraire 4 au résultat
- Elever le résultat au carré
- Afficher le résultat
Chaque ligne correspond à une ligne de code Python.
🐍 **Question** : Écrivez un programme Python permettant de coder ce programme. Vérifiez ensuite en l'exécutant. **Le programme doit faire 5 lignes de code et afficher 121**
%% Cell type:code id: tags:
``` python
# recopiez votre programme ici
```
%% Cell type:markdown id: tags:
!!! info Nom des variables
Il n'y avait pas de contexte particulier dans les deux dernier exercices, c’est pourquoi on a utilisé des noms de variables peu représentatifs. Le but principal de ces exercces était de faire ancrer les notions étudiées plus haut dans le document.
1. Testez le programme suivant (voir plus bas pour tester) :
```Python
```python
fromturtleimport*
# pour être à gauche du canevas
backward(250)
# Code à factoriser
forkinrange(3):
forward(30)
right(120)
forward(30)
forkinrange(3):
forward(60)
right(120)
forward(60)
forkinrange(3):
forward(90)
right(120)
forward(90)
forkinrange(3):
forward(120)
right(120)
forward(120)
forkinrange(3):
forward(150)
right(120)
done()
```
2. Définissez une fonction `triangle(l)`, qui permet de tracer des triangles équilatéraux de longueur `l`, et utilisez-là pour réduire le nombre d’instructions du programme.
**NB**: Le nombre d'instructions du programme doit être au moins divisé par 2.
Votre programme définira une fonction `carre(longueur)` où le paramètre longueur représente la longueur du carré. Puis, le programme utilisera cette fonction dans une boucle.
*Indications:*
-*On supposera que le côté d’un carré est de 50 pixels.*
-*La flèche représente la position initiale de la tortue.*
-*Le quadrillage ne doit pas être tracé il est là seulement pour connaître les dimensions de la figure.*
-**Vous ne devez par rajouter plus de 8 lignes de code**
Votre programme définira une fonction `triangles(longueur)` où le paramètre longueur représente la longueur du carré. Puis, le programme utilisera cette fonction dans une boucle.
*Indications:*
-*On supposera que le côté d’un carré est de 25 pixels.*
-*La flèche représente la position initiale de la tortue.*
-*Le quadrillage ne doit pas être tracé il est là seulement pour connaître les dimensions de la figure.*
-*La taille des triangles diminue de 25 pixels entre chaque triangle.*
-**Vous ne devez par rajouter plus de 9 lignes de code**
%% Cell type:code id: tags:
``` python
fromturtleimport*
deftriangle(longueur):
# code de la fonction à compléter
speed(9)# pour dessiner plus vite
# pour positionner le curseur en bas à gauche
penup()
goto(-200,-200)
pendown()
# mettre le bon style de trait
width(3)
color("red")
# à compléter avec une boucle
done()
```
%% Cell type:markdown id: tags:
## L'indice d'un boucle `for`, une variable gratuite
Il est possible de remplacer le symbole `_` dans une boucle `for` par le nom d'une variable qu'on appelle l'indice de la boucle. Cette variable sera intitialisée à `0` puis sera incrémenté de `1` après chaque itération. Par exemple le programme