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
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)
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)
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)