2016-10-12 1 views
0

Ich schreibe ein einfaches wärmer/kälter Anzahl Ratespiel in Python.Python Warm/Kalt Deklarieren Variable außerhalb while-Schleife

Ich habe es funktioniert, aber ich habe einige duplizierten Codes, die ein paar Probleme verursacht, und ich bin nicht sicher, wie es zu beheben.

from __future__ import print_function 
import random 

secretAnswer = random.randint(1, 10) 

gameOver = False 
attempts = 0 
currentGuess = int(input("Please enter a guess between 1 and 10: ")) 
originalGuess = currentGuess 

while gameOver == False and attempts <= 6: 
    currentGuess = int(input("Please enter a guess between 1 and 10: ")) 
    attempts += 1 

originalDistance = abs(originalGuess - secretAnswer) 
currentDistance = abs(currentGuess - secretAnswer) 

if currentDistance < originalDistance and currentGuess != secretAnswer: 
    print("Getting warmer") 

elif currentDistance > originalDistance: 
    print("Getting colder") 

if currentDistance == originalDistance: 
    print("You were wrong, try again") 

if currentGuess == secretAnswer or originalGuess == secretAnswer: 
    print("Congratulations! You are a winner!") 
    gameOver = True 

if attempts >= 6 and currentGuess != secretAnswer: 
    print("You lose, you have ran out of attempts.") 
    gameOver = True 

print("Secret Answer: ", secretAnswer) 
print("Original Dist: ", originalDistance) 
print("Current Dist: ", currentDistance) 

Sie fragt nach Eingabe, bevor ich die Schleife eingeben, die mir zu erlauben, ist eine ursprüngliche Vermutung Variable zu setzen hilft mir den Abstand von meiner geheimen Antwort zu erarbeiten.

Da jedoch dieser Eingang vor der Schleife erfordert Hohlräume es jede Validierung/Logik, die ich dort habe wie die if-Anweisungen erfordert dann Eingang direkt nach dieser Vermutung, jetzt innerhalb der Schleife.

Gibt es eine Möglichkeit für mich, originalGuess innerhalb der Schleife zu deklarieren, ohne dass es auf die Benutzereingabe aktualisiert wird, rate jede Iteration oder umgekehrt, ohne currentGuess zu duplizieren?

Dank

Antwort

1

Es scheint keine Notwendigkeit, den Benutzer zu fragen, bevor Sie die Schleife eingeben ... können Sie prüfen, nur wenn Vermutungen = 1 für die erste Vermutung ...

gameOver=False 
guesses = 0 
while not gameOver: 
    guesses += 1 
    getUserInput 
    if guesses = 1 and userInput != correctAnswer: 
     print "try again!" 
    checkUserInput 
print "good job!, it took you {} guesses!".format(guesses) 
+0

Wenn ich das zwar tun, wie ich bin der Lage, die originalDistance und currentDistance zu unterscheiden, da sie auf die Speicherung der originalGuess verlassen? Was, wenn ich innerhalb der Schleife deklariere, wird mit jeder Iteration der Benutzereingabe aktualisiert – FrasKyl

Verwandte Themen