Passer par un logiciel Windows alors que jupyter et jupyterhub existent me semble une grossière erreur d'aiguillage.
Je vais tenter de démontrer mon point de vue à partir de ce Notebook. Les librairies utilisées par le module lycee sont instalées en python3 sur la raspberryPi du projet Tremplin.
Il va de soi que ce cahier peut s'exécuter en local sur toute machine disposant d'une instalation de jupyter notebook.
La position du premier caractère d'une ligne de code obéit à une règle simple :
Une ligne de code commence au début d'une ligne sauf si ":" terminent la ligne précédente. Dans ce cas un décalage est nécessaire, il s'agit d'une indentation.
Le nombre d'espaces est paramétrable dans les éditeurs de code python mais généralement il s'agit d'une tabulation.
Les commentaires sont insérés à la suite d'un #
Les codes des champs suivants illustrent ce propos.
remarque : L'invite de saisie input() est utilisée dans sa version "importer un entier" int(input()).
In [1]:
#solution de l'équation ax = b pour a = 2 et b = 6
a=2
b=6
print("la solution solution de ",a,"* x = ",b,"est :")
print("x =",b/a)
In [2]:
#résoudre l'équation ax=b pour a≠0
a = int(input("entrez une valeur pour a ≠ 0 : "))
#on s'assure que a est bien différent de 0
if a==0:
#on redemande la saisie de a
a = int(input("Attention entrez une valeur pour a ≠ 0 : "))
#tant que a vaut 0
while a==0:
#on demande une valuer différente de 0
a = int(input("Attention entrez une valeur pour a ≠ 0 : "))
#dès que a est différent de 0
else:
#on demande la saisie de b
b = int(input("entrez une valeur pour b : "))
# on affiche le résultat
print("la solution solution de ",a,"* x = ",b,"est :")
print("x =",b/a)
else:
#quand a est différent de 0 on demande la saisie de b
b = int(input("entrez une valeur pour b : "))
print("la solution solution de ",a,"* x = ",b,"est :")
print("x =",b/a)
In [ ]:
# Pensez à faire une copie de ce Cahier avant de rédiger "File …… "Make a Copy" "
# Renommez le cahier avec votre nom.
# Utilisez ce champ de saisie pour rédiger votre programme puis le tester.
Il est important de se souvenir que les instruction en python s'écrivent en minuscule.
Lorsque une variable contient des Majuscules il faut dans tout le programme conserver ces majuscules.
Les champs de code suivants montrent ce qui se produit quand on suit la règle puis lorsqu'on ne la suit pas.
In [26]:
# utilisation de la casse dans les variables
CoefficientDirecteur=2
ordonneeAlOrigine=6
print ("y =",CoefficientDirecteur,"x +", ordonneeAlOrigine)
In [17]:
# non respect de la casse dans un nom de variable
CoefficientDirecteur=2
ordonneeAlOrigine=6
print ("y=",Coefficientdirecteur,"x +", ordonneeAlorigine)
In [19]:
# affectation d'une chaine de caractère
a="ceci est une chaîne de caractères"
print(a)
b='ceci est une chaîne de caractères'
print(b)
c="l'idée est de ne pas mélanger les guillemets et les apostrophes"
print(c)
d='"Bien mal acqui de profite jamais"'
print(d)
e=3.8
print(e)
Les variables peuvent être affectées par lot. On peut réaffecter les variables en même temps ou successivement.
In [24]:
#affection de a et b
a,b=" ceci est une chaîne de caractères ",' ceci est une chaîne de caractères '
print(a,b)
f=a+b
print(f)
e,g=3,4
print(e," : ",g)
h,i=e+g,e-g
print(h," : ",i)
Le projet Pythonedu semble considérer qu'il faut mettre à disposition des élèves un module qui masque les fonctionnalités de python ... Il me semble en tant que prof validé ISN que cette démarche est contre productive.
Que fait lycee ?
Il est lié à des librairies python qui doivent être installées pour qu'il puisse fonctionner.
Puis il crée des fonctions qui sont pour le moins peu utiles ou en tout cas pas nécessaires pour un élève même débutant. Voyons deux exemples, avec lycee et sans lycee, qui pourraient être utilisés.
Pour les besoins de la démonstration lycee.py est placé dans le même dossier que ce notebook sur la raspberryPi de Tremplin.
In [25]:
from lycee import *
In [2]:
# version utilisant lycee
from lycee import *
x=demande('Entrez une valeur pour x = ')
y=demande('Entrez une valeur pour y = ')
x,y=x+y,x-y
print("x = ",x,"y = ",y)
x,y=x+y,x-y
print ("maintenant , x =",x,"et y =",y)
In [4]:
# version utilisant python
x = int(input("Entrez un entier x : "))
y = int(input("Entrez un entier y : "))
print("réaffectation de x ET y avec x,y = x+y,x-y ")
x,y=x+y,x-y
print("nouvelle valeur de x = ",x,"nouvelle valeur de y = ",y)
print("réaffectation de x ET y avec x,y = x+y,x-y")
x,y=x+y,x-y
print("Maintenant la valeur de x = ",x," et la valeur de y = ",y)
On constate donc dans le premier cas que la démarche masque ce que fait le programme en privant l'élève d'un commentaire intermédiaire expliquant les réaffectation, et que la commande python est remplacée par une fonction qui au final n'a aucune utilité pour comprendre comment le programme fonctionne.
En ajoutant l'importation de time on peut même marquer des pauses qui permettent à l'élève de comprendre la séquence qui se produit dans le programme.
In [8]:
# version utilisant python
import time
x = int(input("Entrez un entier x : "))
y = int(input("Entrez un entier y : "))
print("réaffectation de x ET y avec x,y = x+y,x-y ")
x,y=x+y,x-y
print("Calculez les valeurs attendue de x et y")
time.sleep(10)
print("nouvelle valeur de x = ",x,"nouvelle valeur de y = ",y)
time.sleep(10)
print("réaffectation de x ET y avec x,y = x+y,x-y")
x,y=x+y,x-y
print("Calculez les valeurs attendue de x et y")
time.sleep(10)
print("Maintenant la valeur de x = ",x," et la valeur de y = ",y)
In [ ]: