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

Ajout d'une vidéo en introduction du NB variables1

parents d6c9d7df 14b7d234
No related branches found
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:
# 4. Les fonctions avec paramètres
Dans cette leçon, nous allons approfondir le concept de la fonction. Dans la leçon 3 sur les fonctions simples, nous avons vu la fonction comme une façon de donner un nom à une séquence d'instructions. Ici nous allons voir comment nous pouvons ajouter un ou plusieurs paramètres à une fonction. Nous allons voir que :
- l'expression `def rect(d, e):` permet de définir une fonction avec deux paramètres,
- les paramètres `d` et `e` sont des variables locales valides uniquement à l'intérieur de la définition de fonction,
- ces paramètres prennent une valeur au moment de l'appel de la fonction avec `rect(50, 30)`.
%% Cell type:markdown id: tags:
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Quizz </h3>
```
En Python, `def` est un raccourci pour
A) défoncé
B) défilé
C) définition
D) défavorisé
```
%% 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"> <i class="fa fa-angle-right" aria-hidden="true">
Réponse
</summary>
<div style="border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8">
C) définition
</div>
</details>
%% Cell type:markdown id: tags:
## Paramétrer une fonction
Jusqu'à maintenant, notre rectangle était d'une taille fixe. La fonction `rectangle()` de la leçon 3 sur les fonctions simples
```python
def rectangle():
forward(160)
left(90)
forward(100)
left(90)
forward(160)
left(90)
forward(100)
left(90)
```
dessine toujours un rectangle de 160 x 100 pixels. Il faudrait faire une nouvelle fonction `rectangle2()` si on voulait dessiner une taille différente.
Il serait très utile de disposer d'une fonction de la forme `rectangle(d, e)` qui puisse dessiner des rectangles de largeur et hauteur variable.
C'est possible en spécifiant des **paramètres** pour la fonction.
Un paramètre de fonction est une **variable locale** qui peut être utilisée dans sa définition.
Lors de l'appel de la fonction, nous donnons des valeurs à la fonction.
Ces valeurs sont les **arguments** de la fonction.
%% 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>
Complétez le programme ci-dessous afin de dessiner un deuxième rectangle avec d'autres dimensions.
%% Cell type:code id: tags:
``` python
from turtle import *
def rectangle(d, e): # paramètres (d, e)
for i in range(2):
forward(d)
left(90)
forward(e)
left(90)
rectangle(160, 100) # largeur=160, hauteur=100
# à compléter
done()
```
%% Cell type:markdown id: tags:
### Exemples de fonctions avec des paramètres
%% Cell type:markdown id: tags:
**Exemple 1 : Le Losange**
Essayez de comprendre le programme ci-dessous, puis exécutez le...
%% Cell type:code id: tags:
``` python
from turtle import *
def losange(d, a): # paramètres (d=distance, a=angle)
for i in range(2):
forward(d)
left(a)
forward(d)
left(180-a)
losange(100, 60) # distance=100, angle=60
losange(140, 100) # distance=140, angle=100
done()
```
%% Cell type:markdown id: tags:
On remarque que la fonction `losange(a, angle)`, définie ci-dessus, a comme paramètre la longueur et le premier angle.
Remarque: Le deuxième angle du losange est calculé.
%% Cell type:markdown id: tags:
## Retour à la maison...
Revenons à l'exemple d'une fonction qui dessine une maison.
%% 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>
Complétez le programme afin qu'il dessine une troisième maison de taille 100.
%% Cell type:code id: tags:
``` python
from turtle import *
def maison(d):
dot()
forward (1.41*d) # sol
left(90)
forward(d) # mur droit
left(45)
forward(d) # toit droit
left(90)
forward(d) # toit gauche
left(45)
forward(d) # mur gauche
left(90)
backward(200)
maison(50) # maison de taille 50
forward(100)
maison(70) # maison de taille 70
# à compléter
done()
```
%% Cell type:markdown id: tags:
## Colorier la maison
Maintenant nous modifions la fonction pour inclure non seulement la position, la taille, mais également la couleur de la maison comme paramètres. Les arguments de la fonction sont :
- `p` -- position de la maison
- `d` -- dimension de la maison
- `c` -- couleur de la maison
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 4 </h3>Aujoutez deux autres maisons de taille et couleur différente.
%% Cell type:code id: tags:
``` python
from turtle import *
up()
def maison(d, c):
dot()
down()
fillcolor(c)
begin_fill()
forward (1.41*d) # sol
left(90)
forward(d) # mur droit
left(45)
forward(d) # toit droit
left(90)
forward(d) # toit gauche
left(45)
forward(d) # mur gauche
left(90)
end_fill()
up()
goto(0,0)
maison(70, 'lightblue')
goto(150, 30)
maison(50, 'yellow')
done()
```
%% Cell type:markdown id: tags:
## Drapeau tricolore
%% 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>
1. Modifiez les couleurs pour afficher le drapeau de l'irlande (ou d'un autre pays de votre choix).
2. Créez une deuxième fonction `drapeau2(d, c, c2, c3)` qui crée un drapeau avec des barres horizontales et utilisez là pour dessiner le drapeau des pays bas (ou d'un autre pays de votre choix).
%% Cell type:code id: tags:
``` python
from turtle import *
def rectangle(d, e, c):
fillcolor(c)
begin_fill()
for i in range(2):
forward(d)
left(90)
forward(e)
left(90)
end_fill()
def drapeau(d, c1, c2, c3):
rectangle(d, 2*d, c1)
forward(d)
rectangle(d, 2*d, c2)
forward(d)
rectangle(d, 2*d, c3)
drapeau(50, 'blue', 'white', 'red')
done()
```
%% Cell type:markdown id: tags:
## Arbre
Pour dessiner un arbre simple, nous utilisons un segment droit pour le tronc et un disque (dot) pour le feuillage.
C'est une fonction qui a 3 paramètres
- `d` -- longueur du tronc
- `c` -- couleur du tronc
- `c2` -- couleur du feuillage
%% 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>
Définissez et utilisez une fonction `foret(n)` qui dessine `n` arbres.
%% Cell type:code id: tags:
``` python
from turtle import *
def arbre(d, c, c2):
down()
left(90)
width(d/6) # tronc
pencolor(c)
forward(d)
dot(d, c2) # feuillage
up()
backward(d) # retourner à la position de départ
right(90)
arbre(100, 'brown', 'lime')
forward(70)
arbre(90, 'brown', 'green')
done()
```
%% Cell type:markdown id: tags:
## Coeur
%% 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>
Ajoutez deux paramètres: `w` pour l'épaisseur de la ligne (width), et `c2` pour la couleur de ligne.
La fonction aura la forme `coeur(r, w, c, c2)`.
%% Cell type:code id: tags:
``` python
from turtle import *
def coeur(r, c):
down()
fillcolor(c)
begin_fill()
left(90)
circle(r, 225)
forward(2.4*r)
left(90)
forward(2.4*r)
circle(r, 225)
left(90)
end_fill()
up()
coeur(50, 'darkviolet')
forward(130)
coeur(40, 'tomato')
done()
```
%% Cell type:markdown id: tags:
## Exercices d'entraînement
%% 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>
Corrigez le programme ci-dessous afin qu'il affiche un triangle rouge
%% Cell type:code id: tags:
``` python
from turtle import *
def triangle_couleur(d, c):
pencolor(c)
for i in range(3):
forward(d)
left(120)
triangle_couleur("red", 100)
done()
```
%% 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>
1. Testez le programme suivant ci-dessous.
2. Définissez une fonction `triangle(l)`, qui permet de tracer des triangles équilatéraux de longueur lg, 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.
%% Cell type:code id: tags:
``` python
from turtle import *
# pour être à gauche du canevas
backward(250)
# Code à factoriser
for k in range(3):
forward(30)
right(120)
forward(30)
for k in range(3):
forward(60)
right(120)
forward(60)
for k in range(3):
forward(90)
right(120)
forward(90)
for k in range(3):
forward(120)
right(120)
forward(120)
for k in range(3):
forward(150)
right(120)
done()
```
%% 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>
Définir une fonction `carre_couleur(d,c )` qui demande à la tortue de
dessiner des carrés colorés de longueur variés. Elle doit dessiner trois triangles comme sur la figure ci-dessous.
dessiner des carrés colorés de longueur variés. Elle doit dessiner trois carrés comme sur la figure ci-dessous.
![Image carres colorés](https://githepia.hesge.ch/info_sismondi/exercices-1ere/-/raw/main/Notebooks/imgs_chap4/ex_carres_couleur.png)
%% Cell type:code id: tags:
``` python
from turtle import *
# a compléter
done()
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 11 </h3>
Définissez une commande `rangee_triangles(nombre, cote)` qui dessine une rangée de pyramides selon l’illustration. Chaque triangle a des côtés de longueur `cote`.
Le paramètre `nombre` indique le nombre de triangles dans la rangée. Utilisez ensuite
cette commande pour dessiner une rangée de 13 triangles de côtés 31, centrée au
milieu de la fenêtre.
![Image rangee de triangle](https://githepia.hesge.ch/info_sismondi/exercices-1ere/-/raw/main/Notebooks/imgs_chap4/ex_triangles.png)
%% Cell type:code id: tags:
``` python
from turtle import *
def rangee_triangles(nombre, cote):
# a compléter
# a compléter
done()
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 12 </h3>
Définissez une fonction `maison(h, c)` qui dessine une maison avec une porte de hauteur `h` et de vouleur `c`.
Les autres dimensions de la maison sont représentées sur l'image ci-dessous.
![Image rangee de triangle](https://githepia.hesge.ch/info_sismondi/exercices-1ere/-/raw/main/Notebooks/imgs_chap4/maison_dim.svg)
Écrire un programme qui utilise la fonction `maison(h, c)` pour reproduire la figure suivante:
![Image rangee de triangle](https://githepia.hesge.ch/info_sismondi/exercices-1ere/-/raw/main/Notebooks/imgs_chap4/village.svg)
%% Cell type:code id: tags:
``` python
from turtle import *
def maison(h, c):
# a compléter
speed(9) # pour dessiner vite
# dessiner le village (a compléter)
# a compléter
done()
```
%% Cell type:markdown id: tags:
# Complément sur les valeurs par défaut *
Quand une fonction possède beaucoup d'arguments, nous pouvons spécifier des valeurs par défaut. Pour ceci nous ajoutons la valeur par défaut dans la liste de paramètres avec le symbole `=`.
La fonction `rectangle(p, d, e, w=1, pen='black', fill='white')` dessine un rectangle aux dimensions `d` x `e` à la position `p`.
Cette fonction possède 3 paramètres optionnels (valeur par défaut en parenthèse):
- `w` -- épaisseur de ligne (`1`)
- `pen` -- couleur de ligne (`'black'`)
- `fill` -- couleur de remplissage (`'white'`)
Il a maintenant différentes façons à appeler la fonction. Tous les paramètres qui ont une valeur par défaut sont optionnels. Au minimum nous devons spécifier les paramètres sans valeur par défaut.
```
rectangle((40, 0), 80, 40)
```
Le rectangle est dessiné dans la direction actuelle de la tortue. Cette orientation peut être changée avec `seth()`. La tortue se positionne de l'autre côté du point de départ. Ceci permet d'enchainer à dessiner des rectangles.
%% Cell type:code id: tags:
``` python
from turtle import *
penup()
def rectangle(p, d, e, w=1, pen='black', fill='white'):
goto(p)
pendown()
width(w)
pencolor(pen)
fillcolor(fill)
begin_fill()
for i in range(2):
forward(d)
left(90)
forward(e)
left(90)
end_fill()
penup()
rectangle([-200, 30], 40, 30)
rectangle([-100, -20], 40, 30, 1, 'orange', 'orange')
rectangle([100, -40], 30, 80, fill='yellow')
rectangle([200, 100], 80, 40, 1, 'red', 'pink')
done()
```
%% Cell type:markdown id: tags:
## Polygone régulier
_Rappel: Un polygone est une figure géométrique plane fermée, formée par une suite de segments de droite qui se rejoignent en leurs extrémités._
La fonction `polygone()` dessine un polygone régulier avec n sommets. Les arguments de la fonction sont :
- `d` -- distance du segment
- `n` -- nombre de segments
%% Cell type:code id: tags:
``` python
from turtle import *
def polygon(d, n, w=1, pen='black', fill='white'):
down()
pencolor(pen)
width(w)
fillcolor(fill)
begin_fill()
for i in range(n):
forward(d)
left(360/n)
end_fill()
up()
up()
backward(280)
for n in range(3, 9):
polygon(40, n, fill='lime')
color('black')
forward(100)
done()
```
%% Cell type:markdown id: tags:
## Polygone étoilé
En ajoutant un paramètre supplémentaire `m`, la fonction `polygone()` permet également de dessiner un polygone étoilé. Ce paramètre signifie le nombre de pics sauté pour aller au prochain des `n` points répartis dans un cercle. Pour `m=1` un polygone régulier est dessiné.
es arguments de la fonction sont :
- `d` -- distance du segment
- `n` -- nombre de segments
- `m` -- paramètre pour polygone étoilé (nombre de pics sautés)
%% Cell type:code id: tags:
``` python
from turtle import *
def polygon(d, n, m=1, w=1, pen='black', fill='white'):
down()
pencolor(pen)
width(w)
fillcolor(fill)
begin_fill()
for i in range(n):
forward(d)
left(m*360/n)
end_fill()
up()
up()
speed(0)
backward(250)
for m in range(2, 6):
polygon(80, 11, m, fill='yellow')
color('black')
forward(140)
done()
```
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 12 </h3>
Utilisez la fonction `rectangle(p, d, e, w, pen, fill)` pour dessiner une copie de ce tableau de Mondrian.
%% Cell type:markdown id: tags:
![mondrian](https://raw.githubusercontent.com/edunumsec2/book/master/src/appr/prog1/media/mondrian.jpg)
%% Cell type:markdown id: tags:
---
#### Remarque générale
Ce document est une adaptation d'un ressource pédagogique tiré du catalogue modulo https://modulo-info.ch/. Il 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: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 1, premières notions
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,
- 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 ?
<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 une variable ? Exécutez la cellule ci-dessous pour voir une petite introduction à la notion de 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/ckP-MPyGhow?si=aJMea7YJIl_i_8Rq" 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:
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.
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Quizz </h3>
```
✍️ Qu'est-ce qu'une variable en Python ?
A) Un type de données
B) Un opérateur de mathématiques
C) Un espace réservé pour stocker des valeurs
D) Une fonction
```
%% Cell type:raw id: tags:
Votre 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">
La solution
</summary>
<div style="border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8">
C) Un espace réservé pour stocker des valeurs
</div>
</details>
%% Cell type:markdown id: tags:
## Règles de Nommage
1. Le nom d'une variable doit commencer par une lettre ou un underscore (_).
2. Le nom ne peut pas commencer par un chiffre.
3. Le nom peut contenir uniquement des lettres, des chiffres et des underscores.
4. Les noms de variables sont sensibles à la casse (age, Age et AGE sont différents).
<h3 style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-question" aria-hidden="true"> </i> &nbsp; Quizz </h3>
```
✍️ Quel nom de variable est invalide en Python ?
A) nom
B) _var3
C) 3variable
D) variableNom
```
%% Cell type:raw id: tags:
Votre 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">
La solution
</summary>
<div style="border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8">
C) 3variable
</div>
</details>
%% Cell type:markdown id: tags:
## Création et Affectation de Variables
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 _ in range(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
from turtle import *
x = 20
for _ in range(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:
%% Cell type:code id: tags:
``` python
from turtle import *
def triangle(l):
for _ in range(3):
forward(l)
left(120)
x = 20
for _ in range(4):
triangle(x)
forward(x + 10)
x = x + 20
done()
```
%% Cell type:markdown id: tags:
## Exercices
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 1 </h3>
On considère le programme Python suivant :
```python
a = 4
b = 5
c = a + b
d = c / 2
```
✍️ **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 <button class='fa'>Forward ></button> et <button class='fa'>&lt; 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
from tutor import tutor # on importe la fonction tutor de la bibliothèque tutor
a = 4
b = 5
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).
%% Cell type:code id: tags:
``` python
# recopiez votre programme ici
```
%% 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>
On considère le programme Python suivant :
```python
a = 10
b = 3
a = a - 4
b = 2 * b
a = a + b
print(a)
```
✍️ **Question 1** : Combien de variables sont utilisées ? Donnez leurs noms.
%% Cell type:raw id: tags:
Votre 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">
La solution
</summary>
<div style="border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8">
Il y a deux variable `a` et `b`
</div>
</details>
%% Cell type:markdown id: tags:
✍️ **Question 2** : Déterminez mentalement la valeur finale de la variable `a` ?
%% Cell type:raw id: tags:
Votre réponse :
%% Cell type:markdown id: tags:
🐍 **Question 3** : Vérifiez votre réponse en recopiant le programme dans la cellule ci-dessous puis en exécutant ce programme.
%% Cell type:code id: tags:
``` python
# recopiez votre programme ici
```
%% 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>
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.
!!!
%% Cell type:markdown id: tags:
<h3 style="color:teal;background-color:azure;" > <i class="fa fa-pencil" aria-hidden="true"> </i> &nbsp; Exercice 4 </h3>
Complétez les programme ci-dessous (remplacez les `...`) afin qu’ils effectuent la bonne tâche.
**Programme A** <br>
Le programme A doit afficher les nombre des 10 à 60, de 10 en 10
%% Cell type:code id: tags:
``` python
x = ...
for _ in range(...):
print(x)
x = ...
```
%% Cell type:markdown id: tags:
**Programme B** <br>
Le programme B doit faire un compte-à-rebours de 10 à 0:
%% Cell type:code id: tags:
``` python
...
for _ in range(...):
print(...)
...
```
%% Cell type:markdown id: tags:
**Programme C** <br>
Le programme C écrit les 8 premiers multiples de 7:
%% Cell type:code id: tags:
``` python
...
for _ in range(...):
print()
...
```
%% 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>
Inspirez vous de l'exemple 2 ci-dessus pour compléter le programme Python ci-dessous afin qu'il trace la figure suivante.
![Image carres colorés](https://githepia.hesge.ch/info_sismondi/exercices-1ere/-/raw/main/Notebooks/imgs_chap5/img_exo_spirale.png)
*Indications:*
- *On supposera que le côté d’un carré est 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 spirale.*
- **Vous ne devez par rajouter plus de 5 lignes de code**
%% Cell type:code id: tags:
``` python
from turtle import *
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(5)
color("red")
# à compléter avec maximum 5 lignes
done()
```
%% 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>
Inspirer de l'exemple 2 ci-dessus pour compléter le programme Python ci-dessous afin qu'il trace la figure suivante.
![Image carres colorés](https://githepia.hesge.ch/info_sismondi/exercices-1ere/-/raw/main/Notebooks/imgs_chap5/img_exo_2spirales.png)
*Indications:*
- *On supposera que le côté d’un carré est 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 13 lignes de code**
%% Cell type:code id: tags:
``` python
from turtle import *
speed(9) # pour dessiner plus vite
# pour positionner le curseur en bas à gauche
penup()
goto(0, -100)
pendown()
width(5) # trait épais
# à compléter avec maximum 13 lignes
done()
```
%% 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>
1. Testez le programme suivant (voir plus bas pour tester) :
```Python
from turtle import *
# pour être à gauche du canevas
backward(250)
# Code à factoriser
for k in range(3):
forward(30)
right(120)
forward(30)
for k in range(3):
forward(60)
right(120)
forward(60)
for k in range(3):
forward(90)
right(120)
forward(90)
for k in range(3):
forward(120)
right(120)
forward(120)
for k in range(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.
%% Cell type:code id: tags:
``` python
from turtle import *
# pour être à gauche du canevas
backward(250)
# Code à factoriser
for _ in range(3):
forward(30)
right(120)
forward(30)
for _ in range(3):
forward(60)
right(120)
forward(60)
for _ in range(3):
forward(90)
right(120)
forward(90)
for _ in range(3):
forward(120)
right(120)
forward(120)
for _ in range(3):
forward(150)
right(120)
done()
```
%% 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>
Inspirez vous de l'exemple 3 ci-dessus pour écrire un programme Python ci-dessous afin qu'il trace la figure suivante.
![Image carres colorés](https://githepia.hesge.ch/info_sismondi/exercices-1ere/-/raw/main/Notebooks/imgs_chap5/img_exo_carres.png)
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**
%% Cell type:code id: tags:
``` python
from turtle import *
def carre(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(5)
color("red")
# à compléter avec une boucle
done()
```
%% 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>
Inspirez vous de l'exemple 3 ci-dessus pour écrire un programme Python ci-dessous afin qu'il trace la figure suivante.
![Image carres colorés](https://githepia.hesge.ch/info_sismondi/exercices-1ere/-/raw/main/Notebooks/imgs_chap5/img_exo_triangles.png)
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
from turtle import *
def triangle(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
```python
k = 0
for _ in range(10):
print(k)
k = k + 1
```
est équivalent au programme suivant:
```python
for k in range(10):
print(k)
```
%% 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>
Récrire l'exemple 2 de la table de mutliplication de 7 en utilisant un indice de boucle `for`.
```python
n = 1
for _ in range(10):
print(n, " x 7 =", n*7)
n = n + 1
```
*Indication:*
- **Votre programme dois contenir seulement 2 lignes**
%% Cell type:code id: tags:
``` python
# votre programme
```
%% 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 [Lycée Levavasseur](https://www.levavasseur.xyz/NSI_P/Python/Python.html)
- 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