2016-11-02 21 views
0

"あなたは数値を考え、コンピュータはそれを推測する必要があります"というプログラムを書いています。私のコードはここにあります:http://pastebin.com/6Ny01PJV、そしてそれが別の関数から関数を呼び出すときはいつでも、プログラムを終了するか、エラーを出力します。関数内で関数を呼び出すとエラーがスローされる

def guess(): 
    global guess 
    guess = choice(list) 
    if guess in cache: 
     guess() 
else: 
    pass 
    print (guess) 
    cache.append(guess) 

def check(guess): 
    global check 
    check = input("Was " + str(guess) + " the number? (y, n) ").lower() 
    if check == "n": 
     global wrong 
     wrong = input("Lower or higher? ").lower 

elif check == "y": 
    playAgain = input ("I guessed the number! Play again? (y, n)") 
    if playAgain == "y": 
#Right here it will error out with a TypeError 
      main() 
    if playAgain == "n": 
      exit() 
    else: 
     print("Please answer in the format 'y' or 'n'" 

def reguess(): 
    if wrong == "lower": 
     reguess = choice(list < guess) 
#Here it will end the program, no crash, just no error given 
     check(reguess) 
    elif wrong == "higher": 
#The same happens here 
     check(reguess) 
     reguess = choice(list > guess) 

「上」または「下」のいずれかを入力すると、プログラムを終了します。

私は間違っているのですか、私のコードに私が見ていないエラーがありますか?

+1

PasteBinは使用しないでください。あなたのコードを[mcve]として質問に追加してください。 –

+1

また、トレースバックを追加してください... 'list'関数を上書きして、' global'がどのように動作しているのか分かりません。 –

+0

Pythonはパスカルではありません関数名を関数に戻すには、関数名に値を代入します。 – furas

答えて

0

同じエラーを何度も繰り返し続けます。私は説明しようとします。

global list # already is globally defined on next line 
list = list(range(0,11)) # list() is a function, you overwrite it here 
print (list) 

global cache # not necessary, again already global 
cache = [] 

print ("Write down a number anywhere from 1-10.\nThe computer will try to guess your number.") 

def guess(): # this defines a global function 'guess' 
    global guess # probably gets resolved to the function 
    guess = choice(list) # you overwrite the 'guess' function 

今、私が言ったように、あなたは同じ問題を抱えています。変数が関数を上書きするようにしています。あたかもあなたが何かを上書きしなかったかのように、それらの変数を関数として呼び出すことになります。

したがって、TypeError: 'int' object is not callable.または何かは呼び出し可能ではありません。

提案:ないあなたはそれが何を期待... list < guessはブール明らかであるreturnの賛成で各機能

私は

reguess = choice(list < guess) 

を参照してください別の問題から値を globalを削除し、次のことができます't random.choiceです。

+0

この問題が修正されました。私はまだ "下位"または "上位"と入力することでプログラムが終了するという問題を抱えています。 – Ryan

0

TypeError: 'int' object is not callableは、あなたがこの同等のやったことを意味します、私たちは、その後、再定義「」「」int型であることを名前の関数を定義した。ここ

def a(x): 
    return x+1 
a = 1 
a(2) 

を、その後、試してみました私たちの機能を呼び出す。名前 'a'はもはや関数を参照していないので、整数1を参照しているので、これは機能しません。

あなたのコードを見れば、

関連する問題