2016-07-23 6 views
0

Dies ist mein Code für ein Spiel, in dem der Computer eine benutzerdefinierte Zahl innerhalb eines bestimmten Bereichs erraten muss. Dies ist eine Herausforderung von einem Anfängerkurs/Buch.Computer rät eine vom Benutzer gewählte Nummer innerhalb eines definierten Bereichs

Ich möchte Sie auf die Funktion "computerGuess()" aufmerksam machen. Ich denke, dass es einen eloquenteren Weg geben muss, um das gleiche Ergebnis zu erzielen? Was ich habe, sieht für mich wie ein Pfuschjob aus!

Der Zweck der Funktion besteht darin, das mittlere Element in der Liste zurückzugeben (daher die mittlere Nummer im Zahlenbereich, aus dem der Computer auswählt). Die 0.5 in der 'Index'-Variablengleichung, die ich hinzufüge, da sonst die Umwandlung von float-int auftritt, würde die Zahl abrunden.

Danke.

Code:

# Computer Number Guesser 
# By Dave 
# The user must pick a number (1-100) and the computer attempts to guess 
# it in as few attempts as possible 


print("Welcome to the guessing game, where I, the computer, must guess your\ 
number!\n") 
print("You must select a number between 1 and 100.") 

number = 0 
while number not in range(1, 101): 
    number = int(input("\nChoose your number: ")) 

computerNumber = 0 
computerGuesses = 0 
higherOrLower = "" 
lowerNumber = 1 
higherNumber = 101 

def computerGuess(lowerNumber, higherNumber): 
    numberList = [] 
    for i in range(lowerNumber, higherNumber): 
     numberList.append(i) 
    index = int((len(numberList)/2 + 0.5) -1) 
    middleValue = numberList[index] 
    return middleValue 


while higherOrLower != "c": 
    if computerGuesses == 0: 
     computerNumber = computerGuess(lowerNumber, higherNumber) 
    elif higherOrLower == "l": 
     higherNumber = computerNumber 
     computerNumber = computerGuess(lowerNumber, higherNumber) 
    elif higherOrLower == "h": 
     lowerNumber = computerNumber + 1 
     computerNumber = computerGuess(lowerNumber, higherNumber) 


    print("\nThankyou. My guess is {}.".format(computerNumber)) 
    computerGuesses += 1 
    higherOrLower = input("\nHow did I do? If this is correct, enter\ 
'c'. If your number is higher, enter 'h'. If it is lower, enter 'l': ") 

print("\nHaha! I got it in {} attempt(s)! How great am I?".format\ 
     (computerGuesses)) 

input("\n\nPress the enter key to exit.") 
+1

Da Sie nach einem eleganteren Weg zur Erreichung Ihres Ziels fragen, wäre diese Frage eher für die Code-Review-Site geeignet, nicht für diese. –

+0

Dies gehört wahrscheinlich auf die [code review] (http://codereview.stackexchange.com/) Website. –

+0

Dies kann am Thema für Code Review Stack Exchange sein, unter der Annahme, ** A) ** der Code funktioniert ** und B) ** es ist nicht hypothetisch oder unvollständig in irgendeiner Weise – Quill

Antwort

0

Wie das?

+0

Worauf kommt es an, eine vollständige Zahlenliste zu erstellen? Der Median kann nur aus dem Minimum und Maximum des Bereichs berechnet werden. – ChrisP

+0

richtig :) mein Fehler :) Ich habe nur seinen Code minimiert, ohne nach dem Zweck der Funktion zu suchen :) –