2017-09-08 1 views
-1

J'utilise la méthode de la bissection pour trouver un nombre. La première partie de mon code est:Les résultats d'erreur mènent en mélangeant ou/et en Python

print("Please think of a number between 0 and 100!") 
     low = 0 
     high = 100 
     guess = int(0.5*(low + high)) 
     print("Is your secret number", guess,"?") 
     ans = input("Enter 'h' to indicate the guess is too high. Enter 'l' to indicate 
    the guess is too low. Enter 'c' to indicate I guessed correctly.") 
     while ans != 'h' or ans != 'l' or ans != 'c': 
      print("Sorry, I did not understand your input.") 
      print("Is your secret number", guess,"?") 
      print(ans) 
      ans = input("Enter 'h' to indicate the guess is too high. Enter 'l' to 
indicate the guess is too low. Enter 'c' to indicate I guessed correctly.") 

Lorsque j'exécute le code, peu importe ce que je mets dans le clavier, puis en boucle revient sans cesse: « Désolé, je ne comprends pas votre entrée. » puis demandez-moi d'entrer à nouveau.

Quelqu'un pourrait-il me dire pourquoi cela se produit?

Merci!

+1

Vous devriez utiliser 'and' au lieu de' or' dans while loop – SkrewEverything

Répondre

2

laisse supposer que vous avez saisi h

h!=h (False) 
h!=l(True) 
h!=c(True) 

Faux ou Vrai ou Vrai = True il continuera

Ce que vous devez faire est de changer les "ou de" sur votre code à et. En faisant cela, si l'un d'entre eux est False alors l'expression entière sera False alors il ne recommencera pas la boucle :)

0

while ans != 'h' or ans != 'l' or ans != 'c': devrait être while ans != 'h' and ans != 'l' and ans != 'c':

+1

Expliquer pourquoi ** est plus important pour un débutant que la fixation de leur code. – SkrewEverything

+1

Oh, je comprends soudainement. Merci. –