<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 TD 1 
Step1:  Partie 1
Un langage de programmation permet de décrire avec précision des opérations très simples sur des données. Comme tout langage, il a une grammaire et des mot-clés. La complexité d'un programme vient de ce qu'il faut beaucoup d'opérations simples pour arriver à ses fins. Voyons cela quelques usages simples. Il vous suffit d'exécuter chaque petit extrait en appuyant sur le triangle pointant vers la droite ci-dessus. N'hésitez pas à modifier les extraits pour mieux comprendre ce que le programme fait.
La calculatrice
Step2:  On programme sert souvent à automatiser un calcul comme le calcul mensuel du taux de chômage, le taux d'inflation, le temps qu'il fera demain... Pour pouvoir répéter ce même calcul sur des valeurs différentes, il faut pouvoir décrire ce calcul sans savoir ce que sont ces valeurs. Un moyen simple est de les nommer 
Step3:  Lorsqu'on programme, on passe son temps à écrire des calculs à partir de variables pour les stocker dans d'autres variables voire dans les mêmes variables. Lorsqu'on écrit y=x+5, cela veut dire qu'on doit ajouter 5 à x et qu'on stocke le résultat dans y. Lorsqu'on écrit x += 5, cela veut dire qu'on doit ajouter 5 à x et qu'on n'a plus besoin de la valeur que x contenait avant l'opération.
La répétition ou les boucles
Step4:  Le mot-clé print n'a pas d'incidence sur le programme. En revanche, il permet d'afficher l'état d'une variable au moment où on exécute l'instruction print.
L'aiguillage ou les tests
Step5:  Les chaînes de caractères
Step6:  Toute valeur a un type et cela détermine les opérations qu'on peut faire dessus. 2 + 2 fait 4 pour tout le monde. 2 + "2" fait quatre pour un humain, mais est incompréhensible pour l'ordinateur car on ajoute deux choses différentes (torchon + serviette).
Step7:  Partie 2
Dans cette seconde série, partie, il s'agit d'interpréter pourquoi un programme ne fait pas ce qu'il est censé faire ou pourquoi il provoque une erreur, et si possible, de corriger cette erreur.
Un oubli
Step8:  Une erreur de syntaxe
Step9:  Une autre erreur de syntaxe
Step10:  Une opération interdite
Step11:  Un nombre impair de...
Step12:  Partie 3
Il faut maintenant écrire trois programmes qui 
Step13:  Tutor Magic
Cet outil permet de visualiser le déroulement des programmes (pas trop grand, site original pythontutor.com).
<ASSISTANT_TASK:>
Python Code:
from jyquickhelper import add_notebook_menu
add_notebook_menu()
Explanation: TD 1 : Premiers pas en Python
End of explanation
x = 5
y = 10
z = x + y
print (z)    # affiche z
Explanation: Partie 1
Un langage de programmation permet de décrire avec précision des opérations très simples sur des données. Comme tout langage, il a une grammaire et des mot-clés. La complexité d'un programme vient de ce qu'il faut beaucoup d'opérations simples pour arriver à ses fins. Voyons cela quelques usages simples. Il vous suffit d'exécuter chaque petit extrait en appuyant sur le triangle pointant vers la droite ci-dessus. N'hésitez pas à modifier les extraits pour mieux comprendre ce que le programme fait.
La calculatrice
End of explanation
x = 2
y = x + 1
print (y)
x += 5
print (x)
Explanation: On programme sert souvent à automatiser un calcul comme le calcul mensuel du taux de chômage, le taux d'inflation, le temps qu'il fera demain... Pour pouvoir répéter ce même calcul sur des valeurs différentes, il faut pouvoir décrire ce calcul sans savoir ce que sont ces valeurs. Un moyen simple est de les nommer : on utilise des variables. Une variable désigne des données. x=5 signifie que la variable xcontient 5. x+3 signifie qu'on ajoute 3 à x sans avoir besoin de savoir ce que x désigne.
L'addition, l'incrémentation
End of explanation
a = 0
for i in range (0, 10) :
  a = a + i             # répète dix fois cette ligne
print (a)   
Explanation: Lorsqu'on programme, on passe son temps à écrire des calculs à partir de variables pour les stocker dans d'autres variables voire dans les mêmes variables. Lorsqu'on écrit y=x+5, cela veut dire qu'on doit ajouter 5 à x et qu'on stocke le résultat dans y. Lorsqu'on écrit x += 5, cela veut dire qu'on doit ajouter 5 à x et qu'on n'a plus besoin de la valeur que x contenait avant l'opération.
La répétition ou les boucles
End of explanation
a = 10
if a > 0 :
      print(a)     # un seul des deux blocs est pris en considération
else :
      a -=  1
      print (a)
Explanation: Le mot-clé print n'a pas d'incidence sur le programme. En revanche, il permet d'afficher l'état d'une variable au moment où on exécute l'instruction print.
L'aiguillage ou les tests
End of explanation
a = 10
print  (a)     # quelle est la différence
print ("a")   # entre les deux lignes
s = "texte"
s += "c"
print (s)   
Explanation: Les chaînes de caractères
End of explanation
print("2" + "3")
print(2+3)
Explanation: Toute valeur a un type et cela détermine les opérations qu'on peut faire dessus. 2 + 2 fait 4 pour tout le monde. 2 + "2" fait quatre pour un humain, mais est incompréhensible pour l'ordinateur car on ajoute deux choses différentes (torchon + serviette).
End of explanation
a = 5
a + 4
print   (a)   # ou voudrait voir 9 mais c'est 5 qui apparaît
Explanation: Partie 2
Dans cette seconde série, partie, il s'agit d'interpréter pourquoi un programme ne fait pas ce qu'il est censé faire ou pourquoi il provoque une erreur, et si possible, de corriger cette erreur.
Un oubli
End of explanation
a = 0
for i in range (0, 10) 
    a = a + i
print    (a)
Explanation: Une erreur de syntaxe
End of explanation
a = 0
for i in range (0, 10):
    a = a + i
  print         (a)   
Explanation: Une autre erreur de syntaxe
End of explanation
a = 0
s = "e"
print (a + s)
Explanation: Une opération interdite
End of explanation
a = 0
for i in range (0, 10) :
      a = (a + (i+2)*3
print                                  (a)   
Explanation: Un nombre impair de...
End of explanation
14%2, 233%2
Explanation: Partie 3
Il faut maintenant écrire trois programmes qui :
Ecrire un programme qui calcule la somme des 10 premiers entiers au carré.
Ecrire un programme qui calcule la somme des 5 premiers entiers impairs au carré.
Ecrire un programme qui calcule la somme des qui 10 premières factorielles : $\sum_{i=1}^{10} i!$.
A propos de la parité :
End of explanation
%load_ext tutormagic
%%tutor --lang python3
a = 0
for i in range (0, 10):
    a = a + i
Explanation: Tutor Magic
Cet outil permet de visualiser le déroulement des programmes (pas trop grand, site original pythontutor.com).
End of explanation
<END_TASK>