Utiliser les boucles

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.

4 réponses

  1. Et si tu essaie avec :
    while unite != "km" or unite != "mile" :


    Bonne fin de week-end !
    0
    1. 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
      1. 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
    2. 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
      1. 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
    3. Merci, pour ta réponse. Du coup, j'insère cette ligne, dans quelle partie, de mon code?
      0