2017-11-23 16 views
0

私は最近、Pythonでプログラミングを始めました。今、数々の推測ゲームに取り組んでいます。私は、乱数の格納方法はどうなっているのかを理解しているプロンプトを持っています。私はここを見回して答えを見つけましたが、それを動作させることはできませんでした。コードは正常に動作しますが、私の答え(乱数)は常に異なっているので、推測するのは不可能です。 誰かが私を助けたり、自分のコードを改善したら、私はうれしいでしょう。バック関数の先頭に実行フローをもたらし、新しい番号を毎回生成文の場合は、それぞれの内部self.game()を呼び出しているためだランダムな整数を格納する

def game(self): 
    import random 
    answer = random.randint(0, 1000) 
    guess = int(input("Your tip is:")) 
    while True: 
     if guess < answer: 
      print ("Your tip is lower, than the answer! Try again.") 
      self.game() 
     elif guess > answer: 
      print ("Your tip is bigger than the answer! Try again.") 
      self.game() 
     elif guess == answer: 
      print ("Good job! You have found the answer!") 
      self.replay() 
+3

'while'ループの中で' self.game() 'を呼び出さず、ループさせてください。 'guess ='行をループに移動します。 –

+0

'while'ループの始めに' input'を含む行を移動し、 'self.game()'を呼び出す代わりに 'continue'を使用し、' self.replay() 'の後に' break'を使用します。 – CristiFati

+0

そして、 'import'ステートメントを関数内に置かないでください(あなたがそれを必要とすることが確実でない限り)。彼らが所属するスクリプトの最初に置いてください。 –

答えて

2

、:ここ は、私はそれを持っているコードの一部ですanswer = random.randint(0, 1000)

だから、単にself.game()を削除して、関数が最後に到達してみましょう:

import random 

def game(self): 
    answer = random.randint(0, 1000) 
    while True: 
     guess = int(input("Your tip is:")) 
     if guess < answer: 
      print ("Your tip is lower, than the answer! Try again.") 
     elif guess > answer: 
      print ("Your tip is bigger than the answer! Try again.") 
     elif guess == answer: 
      print ("Good job! You have found the answer!") 
      self.replay() 
      break 

は、EDIT 1:

あなたはまた、ユーザーように、ユーザーがwhileループ内で彼の推測を入力行を移動する必要があります彼が正しい答えを得るまで推測することができます。私もbreakステートメントを追加して、ステートメントを印刷するのではなく正しい答えを得たときにループを終了します。あなたは、Pythonに新しいしているので、もう一つの小さなディテール

:あなたのpythonモジュールの上部にあるすべてのimportステートメントを配置する必要がありますあなたはEDIT 2

(今更新上記の解答コード) here breakについての詳細を読むことができますそれは、あなたのコードをより明確にするために従わなければならないPythonコードガイドラインです。あなたはもっと読むことができます here

関連する問題