Utiliser les boucles

Fermé
gueustou - Modifié le 16 sept. 2018 à 17:08
 gueustou - 16 sept. 2018 à 21:08
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

Breizhux Messages postés 368 Date d'inscription vendredi 1 septembre 2017 Statut Membre Dernière intervention 17 novembre 2020 139
16 sept. 2018 à 18:34
Et si tu essaie avec :
while unite != "km" or unite != "mile" :


Bonne fin de week-end !
0
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
Breizhux Messages postés 368 Date d'inscription vendredi 1 septembre 2017 Statut Membre Dernière intervention 17 novembre 2020 139
16 sept. 2018 à 19:49
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
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
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
Merci, pour ta réponse. Du coup, j'insère cette ligne, dans quelle partie, de mon code?
0