Problème de débutant

Le
alem4
Bonjour à tous


j'espere que c'est clair ? .Merci d'avance


s = raw_input( "Rentrée ")
ss = raw_input( "Sorti ")


if s.upper() == ss: print "upper()"
if s.lower() == ss: print "lower()"
if s.swapcase() == ss: print "swapcase()"
if s.capitalize() == ss: print "capitalyze()"
if len(s)== int(ss): print "len(s)"


Rentrée AZERTY
Sorti 6
len(s)

Rentrée AZERTY
Sorti 7
Pas de reponse


Rentrée azerty
Sorti Azerty
capitalyze()

Traceback (most recent call last):
File "C:Python24RECHERCHE.py", line 34, in -toplevel-
if len(s)== int(ss): print "len(s)"
ValueError: invalid literal for int(): Azerty
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
hg
Le #594010
wrote:


Bonjour à tous


j'espere que c'est clair ? .Merci d'avance


s = raw_input( "Rentrée ")
ss = raw_input( "Sorti ")


if s.upper() == ss: print "upper()"
if s.lower() == ss: print "lower()"
if s.swapcase() == ss: print "swapcase()"
if s.capitalize() == ss: print "capitalyze()"
if len(s)== int(ss): print "len(s)"


Rentrée AZERTY
Sorti 6
len(s)

Rentrée AZERTY
Sorti 7
Pas de reponse


Rentrée azerty
Sorti Azerty
capitalyze()

Traceback (most recent call last):
File "C:Python24RECHERCHE.py", line 34, in -toplevel-
if len(s)== int(ss): print "len(s)"
ValueError: invalid literal for int(): Azerty


Tu mets "Azerty" dans ss puis essayes de le transformer en int ... pas
possible

hg

Bruno Desthuilliers
Le #594008
Bonjour à tous


j'espere que c'est clair ?


Tout à fait.

.Merci d'avance


De rien. Reviens quand tu veux.



Heu... c'était quoi, la question ?-)


s = raw_input( "Rentrée ")
ss = raw_input( "Sorti ")


if s.upper() == ss: print "upper()"
if s.lower() == ss: print "lower()"
if s.swapcase() == ss: print "swapcase()"
if s.capitalize() == ss: print "capitalyze()"
if len(s)== int(ss): print "len(s)"


Rentrée AZERTY
Sorti 6
len(s)

Rentrée AZERTY
Sorti 7
Pas de reponse


Rentrée azerty
Sorti Azerty
capitalyze()

Traceback (most recent call last):
File "C:Python24RECHERCHE.py", line 34, in -toplevel-
if len(s)== int(ss): print "len(s)"
ValueError: invalid literal for int(): Azerty



Ca me parait tout à fait normal. La chaine "Azerty" est effectivement
difficile à interpréter comme une valeur numérique entière !-)

Qu'est-ce qui te pose problème, au juste ? Le fait que cette branche
soit exécutée ? Là aussi, pourtant, c'est normal. Avec le code que tu a
écris, tous les tests sont effectués - le fait d'être déjà passé dans
une des branches précédentes n'y change rien. Essaye ça pour mieux
comprendre le déroulement:

print "testing if s.upper() == ss"
if s.upper() == ss:
print "upper()"

print "testing if s.lower() == ss"
if s.lower() == ss:
print "lower()"

print "testing if s.swapcase() == ss"
if s.swapcase() == ss:
print "swapcase()"

print "testing if s.capitalize() == ss"
if s.capitalize() == ss:
print "capitalyze()"

print "testing if len(s)== int(ss)"
if len(s)== int(ss):
print "len(s)"



J'espère que c'est clair ?-)


Bon, maintenant, comment éviter ça:

# 1/ déjà, protéger la tentative de conversion
# en int par un try/except:
try:
intss = int(ss)
except ValueError:
# la longueur d'une chaine est rarement négative...
intss = -1

# 2/ utiliser if/elif pour ne pas passer partout:
# (nb : elif => else if)

if s.upper() == ss:
print "upper()"
elif s.lower() == ss:
print "lower()"
elif s.swapcase() == ss:
print "swapcase()"
elif s.capitalize() == ss:
print "capitalyze()"
elif len(s) == intss:
print "len(s)"
else:
# rien trouvé...
print "???"


HTH

Publicité
Poster une réponse
Anonyme