Re: [HS] Python

Page principale

Répondre à ce message
Auteur: Jonathan Ballet
Date:  
À: Heurtaux Vincent
CC: liste Guilde
Sujet: Re: [HS] Python
Heurtaux Vincent a écrit :
> Bonjour à tous,


Salut !

> 1) Comment apprendre le python (livres préférés, sites) ?


Personnellement, j'ai appris avec le tutorial officiel du site (tu
devrais pouvoir trouver des versions françaises si l'anglais te rebute).
J'avais ensuite trouvé très intéressant le livre "Dive into Python",
disponible librement sur http://diveintopython.org

Au boulot, on a acheté le livre "Programmation Python", de Tarek Ziadé,
qui est pas mal.

> 2) Quels éditeurs utiliser ( edit est pas mal, mais pas de débugger) ?


J'utilise gvim quotidiennement, mais pas de débuggeur (à ma connaissance ?).
J'ai eu utilisé d'autres éditeurs, mais j'ai jamais cherché de
fonctionnalité de type débuggeur dedans :/
Parmi les plus complets, tu peux trouver Eric, Pida et SPE, peut-être te
conviendront-ils ...

> 3) Liste débutants en Python ?


La mailing list de l'AFPY ? (ça convient aussi pour d'autres ressources
qui concerne Python) :
http://lists.afpy.org/mailman/listinfo/afpy-membres


> 4) Je souffre depuis plusieurs heures :
>
> un programme demande d'entrer un entier (pour faire une multiplication).
> Comment tester si la chaîne entrée est un entier, et boucler sur la demande
> de cet entier tant qu'elle n'est pas assouvie ?
>
> ------------Solution qui ne marche pas :--------
> #!/usr/bin/env python
> #coding=<utf8>
> # Demande un entier et vérifie la validité du type.
> # Envoie un message d'erreur tant que l'entrée n'est pas un entier.
> a=input( 'Entrez un nombre entier:' )
> while not isinstance(a,(int)):
> print 'condition while=', not isinstance(a,(int))
> print "Ceci n'est pas un nombre entier ! Recommencez :"
> a=raw_input( 'Entrez un nombre entier:' )
> else:
> a=int(a)
> print 'a=',a
> -------------------------------------------------------------
>
> Le problème vient de "input" à la place de raw_input, mais si :
> a=raw_input( 'Entrez un nombre entier:' ), a sera de type str même pour "5" 
> ou "23"...
>  Je ne trouve pas :-(    Merci de m'éclairer de vos lumières :-))


Les objets de type 'string' on une méthode isdigit, qui permet de savoir
si la valeur de la chaine est un nombre :

>>> value = "7897"
>>> value.isdigit()

True
>>> value = "qskjdlqsd"
>>> value.isdigit()
>>> value.isdigit()

False

Tu peux aussi essayer de convertir ta variable en int, et de récupérer
l'exception lancer par la fonction int() :

while True:
     a = raw_input('Entrez un nombre entier:' )
     try:
         a = int(a)
         break
     except ValueError:
         print "Ceci n'est pas un nombre entier ! Recommencez :"
print 'a = %d' % a


Et voilà !

- Jonathan