2017-05-05 9 views
0

私はCasio CFX-9850Gでgotoのように機能するかどうか疑問に思ったので、私は乱数推測ゲームをコードしようとしました。 私は入力をサニタイズし、エラーメッセージを生成するようにはなっていません(例えば、maxを低く設定したり、数字の代わりに文字を入力したり、max以上を推測するなど)。私の最初の問題は、私のコードはエラーを生成していないが、最大値を3に設定して0,1,2,3,4,5を試しても、数字を推測することができないということです。私はループを作ったようですが、どこにあるのか分かりません。 は、ここに私のコードです:なぜ私はループで立ち往生しているようですか?

import random 

print "GUESS MY NUMBER" 

max=int(raw_input("Guess number between 1 and what?")) 

randomnumber = random.randint(1,max) 


def make_guess(guess): 
    if guess == randomnumber: 
    print "Congratulations, you guessed my number!" 
    else: 
    guess=raw_input("Guess again?") 
    make_guess(guess) 

guess=int(raw_input("What is your best guess?")) 
make_guess(guess) 


print "My number was" ,randomnumber 

、それが生成されます。

GUESS MY NUMBER Guess number between 1 and what? 3 What is your best guess? 0 Guess again? 1 Guess again? 2 Guess again? 3 Guess again? 4

今、私は正しい推測されるまでループするコードを望んでいたが、私は正しい推測がifコードを誘発すると期待されます。

+0

関数定義をコードの先頭に移動するか、メイン関数を定義します。トップレベルのコードと機能を混同しないでください。 –

+0

@VaibhavAggarwal私は理解していません。私の 'def make_guess'を' print "GUESS MY NUMBER"の上に移動することを意味しますか?私はそれを試み、それは私の問題を解決しませんでした。 – toonarmycaptain

答えて

3

あなたは入力をelse節の中の整数に変換するのを忘れました。あなたが他者の外で変換を行うので、最初の試行で推測すれば実際に動作します。

の変更、他の最初の行:

guess=int(raw_input("Guess again?")) 

guess=raw_input("Guess again?") 

、あなたが行くように良いことがあります。

関連する問題