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.

4 réponses

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


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