2017-04-21 1 views
0

Also ich erstelle dieses Spiel, wo der Computer eine Zahl schätzt, und auf der Grundlage der Antwort teilt es und wählt erneut eine Nummer. Ich hatte bisher wenig Probleme, aber jetzt bin ich ziemlich auf der Schleife. Ich weiß, was ich zu tun habe, ich kann einfach nicht herausfinden, wie ich es richtig machen soll und wie es funktioniert.Wie implementiert man ein numerisches Ratespiel mit Loops in Python

lowest = int(input("What is the lowest number you will think of?: ")) 
highest = int(input("What is the highest number you will think of?: ")) 
print("So you're thinking of a number between",lowest,"and",highest) 
x=[] 
for number in range(lowest,highest): 
    x.append(number) 
middleIndex = (len(x))//2     
print ("is it "+str(x[middleIndex])+"?")  
answer = input("") 
if answer == "lower": 
     x = (x[:len(x)//2]) 
else: 
     x = (x[len(x)//2:]) 

Ich weiß, dass es nach dem

x.append(number) 

gehen, aber ich kann es nicht für oder While-Schleifen mit zu arbeiten.

+0

check this out http://stackoverflow.com/questions/23451688/guessing-game-python-binary-search –

Antwort

1

Die gesamte for Schleife ist eine Art von sinnlos, mit der x.append Linie besonders so. range() gibt Ihnen trotzdem eine Liste (in Python 3 gibt es Ihnen ein Bereichsobjekt, das mit der Funktion list in eine Liste konvertiert werden kann).

könnten Sie ersetzen, dass mit:

x=list(range(lowest, highest)) 

Auch diese Konvention ist als alles, was technisch nicht korrekt, aber in Python Ich denke, Kamel Fall in der Regel für Klassennamen reserviert ist; Aus diesem Grund würde ich middleIndex zu middle_index umbenennen.

Und schließlich haben Sie nichts für den Fall, wenn der Computer die richtige Zahl rät!

1

Was Sie suchen, ist im Grunde eine interaktive binary search algorithm, die über eine Reihe von Zahlen läuft. Sie müssen range oder list nicht wirklich verwenden, da Sie den Durchschnitt Ihrer Werte min und max berechnen können, anstatt die middle_index zu finden. Hier

ist eine Beispielimplementierung:

def main(): 
    print("What range will your guessed number fall within?") 
    min = int(input("Min: ")) 
    max = int(input("Max: ")) 

    print("Ok; think of a number between {0} and {1}.".format(min, max)) 

    while min <= max: 
     mid = (min + max) // 2 
     if input("Is it {0}? (Y/N) ".format(mid)) == "Y": 
      print("It is!? Well, that was fun.") 
      return 
     elif input("Darn. Is it higher than {0}? (Y/N) ".format(mid)) == "Y": 
      min = mid + 1 
     else: 
      max = mid - 1 

    print("Well, it looks like you were dishonest somewhere along the line.") 
    print("I've exhausted every possibility!") 

main() 
Verwandte Themen