Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de débutant

2 réponses
Avatar
alem4
Bonjour =E0 tous


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


s =3D raw_input( "Rentr=E9e ")
ss =3D raw_input( "Sorti ")


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


Rentr=E9e AZERTY
Sorti 6
len(s)

Rentr=E9e AZERTY
Sorti 7
Pas de reponse


Rentr=E9e azerty
Sorti Azerty
capitalyze()

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

2 réponses

Avatar
hg
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

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

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