None a la fin d'un prog en python

Fermé
stéphane70 - 20 févr. 2008 à 14:54
 Stephane70 - 22 févr. 2008 à 16:55
Bonjour,

Voila, je suis les cours de Gerard Swinnen et a l'exercice 7.13, on me demande de créer une fonction qui inverse une chaine de caractère et qui renvoie cette chaine au programme appelant.

Jusqu' ici pas de problème, si ce n'est que le programme me rajoute 'none' automatiquement a la fin de la chaine.

j'ai essayé dans tous les sens sans résultats pour comprendre ou était cette erreur (qui doit etre vraiment toute petite)

Je vous demande donc un coup de main pour comprendre ou j'ai planté

Merci d'avance

Le programme de definition :
def inverse(ch):
	a=len(ch)
	while a>0:
		a=a-1
		print ch[a],


Le programme appelant :
from inverse import *
c=raw_input('Entrez une chaine de caractere a inverser : ')
print 'La chaine inversee est : ',inverse(c),
raw_input()


le resultat :
Entrez une chaine de caractere a inverser : coucou
La chaine inversee est :  u o c u o c None

4 réponses

Merci beaucoup Kilian,

Ces infos me sont précieuses et instructives.

je vais me pencher dessus avec attention

Merci encore

Stéphane70
1
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
20 févr. 2008 à 16:38
A cause de cette ligne:
print 'La chaine inversee est : ',inverse(c),


Tu demandes d'afficher 'La chaine inversee est : ' puis inverse(c). Mais le problème c'est que inverse(c) ne retourne aucune valeur. Effectivement inverse(c) affiche des caractères mais il ne retourne aucune valeur. Et une fonction qui ne retourne aucune valeur, c'est comme si elle retournait None. C'est à dire rien.

Tu saisis?
0
Il aurait donc fallu que j'utilise un return dans mon fichier de définition plutot qu'un print ?

C'est ca ?

Merci de ton aide Kilian

Stéphane70
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
21 févr. 2008 à 18:21
Oui, disons qu'il eut été plus correct d'écrire ça:
def inverse(ch):
	a=len(ch)
        ret = ""
	while a>0:
		a=a-1
		ret += ch[a]
        return ret

Et le programme appelant:
from inverse import *
c=raw_input('Entrez une chaine de caractere a inverser : ')
print 'La chaine inversee est : ',inverse(c)
raw_input()


Sinon pour inverser une chaine, tu peux utiliser les slice en python. Si tu as une chaine qui s'appelle varchaine, tu peux l'afficher à l'envers comme ça:
print varchaine[::-1]

Mais bon je te dis ça juste à titre d'info, je pense que tu n'as pas encore vu ça en python, mais tu croiseras sûrement cette notion un jour où l'autre :-)
0