2016-11-09 1 views
-2

Ich habe derzeit einen Code, mit dem der Computer die Nummer in meinem Kopf erraten kann. Ich bekomme immer einen Fehler, weil ich eine Variable mehrmals in einer Zeile verwende.Wie kann ich vermeiden, "UnboundLocalError: lokale Variable 'usedrandomnumber' referenzierte vor der Zuweisung" in meinem Code?

import random 

N = int(input()) 

Low = 0 
High = N 

p=False 

guess = random.randint(Low, High) 
print(guess) 

def get_response(): 
    response = input() 
    global p 
    if response == 'l': 
     high = guess - 1 
     guess = random.randint(Low, high) 
     print(guess) 

    elif response == 'h': 
     low = guess + 1 
     guess = random.randint(low, High) 
     print(guess) 

    elif response == 'c': 
     print("He got it") 
     p=True 

Wie könnte ich dieses Problem lösen und wie könnte ich das loopen? Vielen Dank im Voraus!

+2

Dieser Code sollte nicht den Fehler, den Sie bekommen; Sie verwenden im Beispiel nicht einmal die Variable 'usedrandomnumber', obwohl das die Ursache ist. – Aurora0001

+2

Diese Fehlermeldung zeigt Ihnen, was falsch ist: Sie haben versucht, diese Variable zu verwenden, bevor Sie einen Wert angegeben haben. Da der von Ihnen gepostete Code das Problem nicht veranschaulicht, können wir Ihnen nicht helfen. – Prune

Antwort

0

Sie die Funktion nicht nennen es nichts

p Dosis tun wird nicht global sein müssen, da es keine lokal ist es zu Schatten

auch p wie eine Fahne sieht Iterieren zu stoppen, aber das ist nicht benötigt als Bruch

Anweisung eine Weile anhalten kann (True)

kein usedrandomnumber ist und so kein UnboundLocalError

print('think of a integer in the range [0,100]') 
low, high = 0, 100 
while(True): 
    guess = (low + high)//2 # // int div 
    cmd = input('is it %d [Yes(y), higher(h), lower(l)]\n>>> ' % guess) 
    if cmd[0].lower()=='y': 
     break 
    elif cmd[0].lower()=='l': 
     high = guess - 1 
    elif cmd[0].lower()=='h': 
     low = guess + 1 
    else: 
     print('please answer with "y", "h", or "l" ') 
print("I win! your number is %d"%guess) 

kurz benötigen Sie eine Schleife für die Nummer suchen

drucken Anweisungen zu geben

Eingang den Befehl bildet die Benutzer cmd [0] bekommen Sie die ersten Buchstaben des Befehls erhalten, zu unterscheiden sie .lower() wird Kleinbuchstaben zu den Befehlen sind nicht Groß-und Kleinschreibung

Verwandte Themen