« [devtodo] - Gérer sa todo list en ligne de commande | Page d'accueil | [pygtk] - Python débutant rajouter une interface avec Glade »
11.10.2008
[python] - Programmation débutante sous linux
Nous allons nous lancer dans une série qui va apprendre à faire des petits programmes en Python.
Pré-requis - Créons notre fichier :
Grâce à cette série sur la programmation, nous allons également aborder la "console"... sous kde vous pouvez lancez konsole et sous gnome gnome-terminal
Vous vous trouvez devant un terminal qui va nous permettre de donner des ordres à l'ordinateur.
Ce que nous voulons faire :
1- créer un dossier, pour cela vous devez taper mkdir python et valider avec la touche entrée, vous venez de créer un dossier python dans votre dossier utilisateur (qui est l'emplacement par défaut du terminal) mkdir signifie make directory (créer un répertoire), vous pouvez allez voir dans gestionnaire de fichiers graphique il est bien là.
2- nous déplacer dedans, tapez cd python ce qui signifie que vous êtes dans le répertoire python (Change Directory).
3- créer un fichier,nous allons maintenant lancer notre éditeur de texte pour taper le programme. Sous kde, tapez kate bonjour et sous gnome gedit bonjour (vous l'aurez compris bonjour sera le nom de notre programme) une fois cela fait tapez :
#!/usr/bin/python
print "Bonjour"
C'est tout simple, la première ligne indique où se trouve python, elle sera systématiquement présente dans tous vos programmes, et la deuxième indique qu'il faut afficher le mot bonjour.Enregistrez votre programme.
4- le rendre exécutable, de retour dans notre terminal nous allons rendre notre programme exécutable : chmod +x bonjour voilà il ne nous reste plus qu'à lancer notre joli programme ./bonjour (le ./au début indique qu'il faut lancer le fichier bonjour dans le répertoire dans lequel on se trouve)
5- voir le rendu :

Notre programme nous dit bonjour, vous avez crée votre premier programme,.Nous allons maintenant rendre le programme plus évolué et plus poli, nous allons faire en sorte qu'il nous demande notre nom, et qu'il nous réponde bonjour "votre nom".
Réeditez votre programme (inutile de tout retaper, utilisez les flèches du clavier vers le haut pour revenir au moment ou vous avez tapé kate bonjour ou gedit bonjour) et rajoutez les éléments en vert
#!/usr/bin/python
nom = raw_input('Votre nom : ')
print "Bonjour" + nom
lancez votre programme en tapant ./bonjour et voyez la différence.....

#!/usr/bin/python
from string import atoi
valeur = raw_input('Montant : ')
combien = atoi(valeur)
multiplication = combien * 6.55957
print valeur + " en francs fait " + str(multiplication) + " Francs"
Automatiquement votre programme vous converti votre valeur en francs. Analysons un peu le code. une nouveauté la deuxième ligne : nous avons besoins de convertir ce que vous allez rentré en chiffre (sinon cela s'appelle un string : autrement dit du texte) il est donc nécessaire d'appeler en renfort des modules qui vont nous permettre de faire cela automatiquement en l'occurrence atoi d'ou le "from string import atoi".
la 3eme ligne vous demande le champs comme nous l'avons vu. et la quatrième permet de convertir votre texte (string) en chiffre (ici un int c'est à dire un chiffre sans virgule, si vous tapez 15.2 vous aurez une erreur). la variable combien converti donc votre texte (string) en chiffre entier (int). la variable multiplication elle, permet de multiplier "combien" par 6.55957... et la vous me direz mais y'a une virgule là?
Et oui effectivement, 6.55957 est un flottant (float), mais python fait le nécessaire pour vous et converti automatiquement votre "combien" (qui est un int) en float. d'où le résultat que vous obtenez avec le print.
Un programme plus probant serait d'autoriser la saisie de variable avec virgule(en fait des points), pour cela il suffit de remplacer à la ligne 2 et 5 les atoi en atof pour convertir notre texte (string) en flottant (float).
Pour réaliser des opérations de calcul, vous avez à votre disposition : + pour les additions, - pour les soustractions, * pour les multiplications et / pour les divisions.
from string import atof
combien_sur_vous = atof(raw_input('Combien avez vous : '))
objet_desire = atof(raw_input('Montant de votre achat : '))
if combien_sur_vous < objet_desire:
Petite nouveauté vous constatez que l'on a placé atof et raw_input sur la même ligne, on gagne de la place en en-capsulant les variables, atof converti directement le retour de raw_input. On prends donc les deux variables (combien_sur_vous et objet_desire)
09:07 Publié dans informatique | Lien permanent | Commentaires (9) | Envoyer cette note | Tags : linux, python, ubuntu, planet-libre




Commentaires
Salut,
if combien_sur_vous < objet_desire:
print "Rentrez a la maison"
else:
print "ok vous pouvez achetez"
Il manque les indentations (en général on les fixes à 4 espaces) pour éviter les erreurs :
if combien_sur_vous < objet_desire:
print "Rentrez a la maison"
else:
print "ok vous pouvez achetez"
Sinon ce blog est pas mal :)
Ecrit par : reeth | 11.10.2008
Arrrg! Le blog ne prend pas en compte la mise en page avec les espaces!
Désolé pour "l'erreur" qui n'en était pas une :/
Ecrit par : reeth | 11.10.2008
^^ Pas de quoi reeth. Merci en tout cas.
Ecrit par : Stephane | 11.10.2008
@reeth-> j'ai bricolé une truc en css avec un padding-left pour que ca indente, mais c'est pas du tout pratique, je vais me pencher sur la question pour ne plus avoir ce genre d'ennuie à l'avenir.
j'ai testé PRE mais c'est pareil ils ne le prennent pas en compte.
Ecrit par : Stephane | 11.10.2008
Ok , c'est bon pour moi mais un total débutant se serai posé des questions :)
Sinon une petite question en passant : pourquoi utiliser l'import des fonctions atoi et atof sachant qu'il existe dans la librairie standard les fonctions int() et float(). Ces fonctions atoi et atof ont-elles un intérêt? (à part de montrer la parenté avec le C) Y a-t-il une façon de faire préférable?? (personnellement j'utilise int(), mais si les autres fonctions sont préférables, je changerai ^^)
Ecrit par : reeth | 11.10.2008
tu as raison, cela aurait dérouté un débutant. ce qui est bizarre c'est que quand j'ai fait la note ça sortait bien. en tout cas merci de la remoté.
int() de __bulitin__ et atoi() de string sont identique, à ma connaissance, en tout point... juste une question d'habitude ;-)
Ecrit par : Stephane | 11.10.2008
Ok merci pour l'explication, je me demandais juste si cela avait un impact sur la conversion et/ou sur la quantité de mémoire nécessaire (chargement d'une librairie supplémentaire). Si les fonctions sont équivalentes, alors tant mieux :)
Ecrit par : reeth | 12.10.2008
Merci pour l'excellente idée de former les débutants à la programmation...
Jonclode
Ecrit par : Jonclode | 21.10.2008
@Jonclode -> merci, à suivre demain une notre sur les fonctions et les boulces
Ecrit par : Stephane | 21.10.2008
Ecrire un commentaire