2016-11-09 7 views
-2

私は現在、コンピュータに自分の頭の中の数字を推測させるためのコードを持っています。 1行に複数回変数を使用しているので、エラーが発生しています。"UnboundLocalError:ローカル変数 'usedrandomnumber'が割り当て前に参照されています"をコード内で回避するにはどうすればよいですか?

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 

私はこの問題をどのように解決できますか?これをどのようにループすることができますか? ありがとうございます!

+2

そのコードではエラーは発生しません。この例では、原因であるにもかかわらず変数 'usedrandomnumber'を使用することさえありません。 – Aurora0001

+2

このエラーメッセージは、何が間違っているかを示しています。値を与える前にその変数を使用しようとしました。投稿したコードには問題が示されていないため、お手伝いできません。 – Prune

答えて

0

あなたはそれが

P線量はそれを

をシャドウするローカルがないとしてグローバルである必要があり、また、pは繰り返しを停止するには旗のように見えませんが、これではない何もしないする関数を呼び出すことはありませんブレークとして必要

文は(true)をしばらく停止することができます

そこにはusedrandomnumberはありませんので、ノー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) 

要するに、あなたは[0]コマンドの最初の文字を区別するために取得するユーザー cmdのフォームのコマンドを取得するための指示に

入力を与えるために多数のため

プリントを見てループを必要としますそれらは 。lowerer()は大文字と小文字の区別がないので、コマンドは小文字になります

関連する問題