# Programmation Python/Programmer en deux minutes/une messagerie instantanée
## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp

## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp
[ Modifier le sommaire ]
Nous allons écrire deux scripts en Python et les exécuter chacun dans une console. Les deux programmes vont communiquer afin d'envoyer un message et d'attendre la réponse.

## Écoute

1). Ouvrir un éditeur de texte, et coller le script suivant (sans caractère spéciaux comme "é")...
* ecoute.py
* #!/usr/bin/python
* # -*- coding: latin-1 -*-
* import socket # importe un ensemble d'instructions pour connecter les programmes.
* # Cet ensemble est disponible a l'installation de Python, dans la bibliotheque de base.
* # Creation du connecteur d'ecoute par l'instruction 'socket'
* # de la bibliotheque socket precedemment importee.
* Connecteur = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
* Hote = '127.0.0.1' # Adresse locale de l'ordinateur.
* Port = 80 # Choix d'un port d'ecoute.
* Connecteur.bind((Hote,Port)) # instruction 'bind' de la bibliotheque du connecteur
* print "Le programme est a l'ecoute d'une eventuelle discussion, vous en serez averti." # Rajoutez des parentheses pour Python 3 !
* Connecteur.listen(1) # ecoute...
* client, adresse = Connecteur.accept # accepte...
* print "L'ordinateur",adresse," veut discuter ! J'attends son message." # Rajoutez des parentheses pour Python 3 !
* # Creation du connecteur de reponse
* Reponse = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
* Portreponse = 234
* Reponse.connect((Hote,Portreponse ))
* print "Note : je me suis connecte a",adresse," pour lui repondre" # Rajoutez des parentheses pour Python 3 !
* while 1:
* Message = client.recv(255) # reception de la reponse, 255 caracteres max ; Python 3 : Message = str(client.recv(255),'mac_roman')
* if not Message:
* break
* print "\nMessage : ",Message,"\a" + "\n\nVotre reponse :" # Rajoutez des parentheses pour Python 3 !
* msgR = raw_input('>> ') # votre message ? Python 3 : msgR = bytes(input('>> '), 'mac_roman')
* Reponse.send(msgR) # envoi.
* client.close # ferme la connexion lorsque le client est parti : [ctrl+C] pour abandonner l'execution du programme.
...enregistrez ce script (par exemple ecoute.py) et exécutez-le.

## Discussion

2. Ouvrir l'éditeur de texte, écrire le script de discussion...
* discussion.py
* #!/usr/bin/python
* # -*- coding: latin-1 -*-
* import socket
* Discuter = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
* Hote = '127.0.0.1'
* Port = 80
* Port_de_reponse = 234
* Discuter.connect((Hote,Port)) # Se connecte au programme ecoute.py
* Reponse = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
* Reponse.bind((Hote,Port_de_reponse))
* Reponse.listen(1)
* client, adresse = Reponse.accept # Creation du connecteur pour la reponse de ecoute.py
* print "L'adresse",adresse," vous a entendu et attend votre message." # Rajoutez des parentheses pour Python 3 !
* while 1:
* msg = raw_input('>> ') # votre message ? Python 3 : msg = bytes(input('>> '), 'mac_roman')
* Discuter.send(msg) # envoi.
* print "Attente de la reponse..." # Rajoutez des parentheses pour Python 3 !
* reponseaumessage = client.recv(255) # reception de la reponse, 255 caracteres max ; Python 3 : reponseaumessage = str(client.recv(255),'mac_roman')
* if not reponseaumessage:
* break
* print "\n",adresse,":",reponseaumessage,"\a\n" # affiche la reponse # Rajoutez des parentheses pour Python 3 !
* client.close # ferme la connexion lorsque le client quitte.
...enregistrez ce script (par exemple discussion.py) et exécutez-le dans une nouvelle console.
Félicitation, vos deux consoles communiquent !
       Pour aller plus loin : Catégorie:Programmation.
          ... en deux minutes avec Python :
         * une messagerie instantanée,
         * un programme en interface avec Wikipédia,
         * un serveur Web pour partager des fichiers et mettre en ligne un site statique en HTML.
       Voir aussi le livre : Programmer en deux minutes