# Informatique et sciences du numérique/Le langage Python
## Présentation

Le langage Python est un langage développé depuis 1990 par Guido van Rossum, aidé de nombreux contributeurs. Ce langage est disponible gratuitement, et est fourni avec de nombreuses extensions très utiles :
* la bibliothèque graphique Tkinter
* l'environnement de développement IDLE simple et efficace pour des projets pas trop ambitieux
* des bibliothèques de fonctions comme math, random, time, turtle, matplotlib...
* enfin la documentation de Python est très complète, et il existe de nombreux tutoriaux disponibles gratuitement
Contrairement à de nombreux langages comme le C, le C++ ou Java, le langage Python n'utilise pas d'accolades pour délimiter la structure du code. À la place, Python utilise l'indentation, c'est-à-dire le décalage du début d'une ligne par rapport au début de la ligne précédente. Il faut être attentif à la signification de ce décalage.
Le but de cette page est de proposer une approche très rapide de Python, et de proposer quelques ressources.
Pour installer Python et IDLE (il s'agit de la version 3.2.3).

## Premiers pas
### Python comme calculatrice : entiers, réels

À retenir
* Python peut calculer sur des nombres entiers (de taille quelconque) ou bien sur des valeurs approchées de nombres réels.
* Les parenthèses jouent le même rôle qu'en mathématiques : donner l’ordre dans lequel on doit faire les opérations, ou bien donner l'argument d'une fonction.
* Avec le mot clé import on peut utiliser des fonctions déjà construites ; par exemple ici on dit qu'on a importé le module math.
* La fonction help permet d'obtenir de l'aide sur un module, elle prend en argument une chaîne de caractères ; Python est capable de travailler avec d'autres types d'objets que les nombres.

### Types de données : listes et chaînes

À retenir
* Une liste est un ensemble ordonné d'éléments, séparés par des virgules, et placés entre crochets.
* Chaque élément de la liste peut être un nombre, une chaîne, ou même une liste (qui elle-même peut contenir des éléments qui sont des listes...)
* Le mot range permet de construire des listes de nombres (en progression arithmétique).
* Les crochets permettent de découper une partie liste ou d'une chaîne
* Le mot len permet d'obtenir la longueur d'une liste ou d'une chaîne.
* À chaque classe d'objet sont associées des méthodes, ce sont des fonctions qui sont appelées en utilisant notation .méthode comme par exemple sort pour trier une liste.
* Une méthode peut avoir des arguments, en plus de l’objet auquel elle s'applique.
* Le mot in permet de tester l'appartenance d'un objet à une liste.
* Des valeurs séparées par des virgules forment un tuple, qui est affiché entouré de parenthèses. Ce n’est pas le même type d'objet qu'une liste.
* On ne peut pas modifier individuellement les caractères d'une chaîne (on dit qu'une chaîne n’est pas mutable)

### Boucle for

À retenir
* La boucle for est une construction fondamentale, car elle permet de répéter des instructions plusieurs fois.
* Le : annonce une indentation ; toutes les lignes qui ont cette même indentation seront répétées.
* La fonction str transforme n’importe quel type d'objet en chaîne de caractères, ord renvoie le code numérique d'un caractère, chr transforme un nombre en caractère de façon réciproque.
* Quelques façons amusantes de définir une liste, penser à noter dans le grimoire ces puissantes invocations.

### La méthode d'Euler version graphique
## Le Grimoire

Il est conseillé à toute personne se lançant dans la programmation de noter des fragments de code "qui marchent" sur un cahier spécial : Le Grimoire. Il est difficile de se rappeler de toutes les fonctions, méthodes et autres constructions dont on peut avoir besoin pour écrire un programme, sauf si on programme tous les jours. Noter sur ce Grimoire les fragments de code dont on a déjà eu besoin est une façon efficace pour progresser en programmation sans avoir besoin de se poser encore et encore les mêmes questions techniques.

## Des fiches d'exercice

Ces exercices permettent d'approfondir certains aspects du langage Python ou de certaines de ses bibliothèques. Ils sont construits sur le principe suivant :
* on tape le code
* on observe le résultat
* on modifie un peu le code
* on prend des notes dans son grimoire !

### Threads et sockets

* ↑ http://fr.wikipedia.org/wiki/Python_(langage)
* ↑ http://fr.wikipedia.org/wiki/Python_(langage)
* ↑ http://fr.wikibooks.org/wiki/Programmation_Python/Tkinter
* ↑ http://fr.wikipedia.org/wiki/IDLE_(Python)
* ↑ python.org/ftp/python/3.2.3/python-3.2.3.msi
| Le projet | Le langage Java |