Utiliser les boucles

gueustou -  
 gueustou -
Bonjour,
Je souhaite que mon programme python recommence, tant que l'utilisateur tape une chose différente de "km" et "mile". Mais, je n'y arrive pas. je vous mets, mes codes et les erreurs générés.
Je vous remercie d'avance, pour votre aide.
/////////////////////////////////////
def convert():
 unite=input("choisir une unité entre km et mile\n")
 dist=input("donner la valeur à convertir\n")
 dist = float(dist)
 while unite !=("km") & ("mile"):
       unite=input("choisir une unité entre km et mile\n")
 if unite=="km":
  result = dist*0.621371
  print(dist, "km = ", result, "miles\n")
 elif unite=="mile":
  result = dist/0.621371
  print(dist, "miles = ", result, "km\n")

  
>>> convert()
choisir une unité entre km et mile
mile
donner la valeur à convertir
20
Traceback (most recent call last):
  File "<pyshell#56>", line 1, in <module>
    convert()
  File "<pyshell#55>", line 5, in convert
    while unite !=("km") & ("mile"):
TypeError: unsupported operand type(s) for &: 'str' and 'str'
//////////////////////////////////////////////////////////////////////////////////////////////////////

>>> def convert():
 unite=input("choisir une unité entre km et mile\n")
 dist=input("donner la valeur à convertir\n")
 dist = float(dist)
 while unite != "km" and "mile":
       unite=input("choisir une unité entre km et mile\n")
 if unite=="km":
  result = dist*0.621371
  print(dist, "km = ", result, "miles\n")
 elif unite=="mile":
  result = dist/0.621371
  print(dist, "miles = ", result, "km\n")
  
>>> convert()

choisir une unité entre km et mile
mile // ça ne marche pas quand l'utilisateur tape mile
donner la valeur à convertir
45
choisir une unité entre km et mile
mile
choisir une unité entre km et mile
km
45.0 km = 27.961695 miles

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

4 réponses

Utilisateur anonyme
 
Et si tu essaie avec :
while unite != "km" or unite != "mile" :


Bonne fin de week-end !
0
gueustou
 
Merci, pour ta réponse. j'ai essayé cette écriture et ça donne:
////////////////////////
def convert():
unite=input("choisir une unité entre km et mile\n")
dist=input("donner la valeur à convertir\n")
dist = float(dist)
while unite !="km" or unite !="mile":
unite=input("choisir une unité entre km et mile\n")
if unite=="km":
result = dist*0.621371
print(dist, "km = ", result, "miles\n")
elif unite=="mile":
result = dist/0.621371
print(dist, "miles = ", result, "km\n")


>>> convert()
choisir une unité entre km et mile
mile
donner la valeur à convertir
35
choisir une unité entre km et mile
mile
choisir une unité entre km et mile
mile
choisir une unité entre km et mile
km
choisir une unité entre km et mile
km
choisir une unité entre km et mile
0
Utilisateur anonyme
 
Ah... j'ai pas fais attention... Il y aurait du avoir une erreur !
Pour l'entrée d'une chaine de caractère il faut utiliser : raw_input()
Dans ton cas :
unite = raw_input("choisir une unité entre km et mile\n")

Avec ça sa devrait marcher !
A plus tard !
0
Utilisateur anonyme
 
Bonjour

while unite !="km" or unite !="mile": 


La condition est toujours vraie :
si unité == "km" alors la partie unite != "mile" est vraie
si unité == "mile" alors la partie unite != "km" est vraie

Dans les autres cas, les deux parties sont vraies.

Il aurait fallu un "and".
0
gueustou
 
oui, effectivement! Le code ci-dessous marche:
def convert():
unite=input("choisir une unité entre km et mile\n")
dist=input("donner la valeur à convertir\n")
dist = float(dist)
while unite != "km" and unite != "mile":
unite=input("choisir une unité entre km et mile\n")
if unite=="km":
result = dist*0.621371
print(dist, "km = ", result, "miles\n")
elif unite=="mile":
result = dist/0.621371
print(dist, "miles = ", result, "km\n")
0
gueustou
 
Merci, pour ta réponse. Du coup, j'insère cette ligne, dans quelle partie, de mon code?
0