2016-04-02 4 views
-2

私のコードについて2つの質問があります。なぜプログラムは2番目のifステートメントには入っていません。どのようにループを終了できますか?初心者のコードをデバッグする方法

from random import * 

SecretNumber=randint(1,5) 
Guess=int(input("Please enter Guess: ")) 
NumberofGuesses=1 
SecretNumber=0 

while Guess != SecretNumber: 
    NumberofGuesses=NumberofGuesses+1 
    if Guess>SecretNumber: 
     print("Please insert a smaller number") 
    else: 
     print("Please insert a bigger number") 

    if Guess==SecretNumber: 
     print("Number of Guesses: {0}".format(NumberofGuesses)) 
+0

はあなたのような何かを必要としています。 – snakecharmerb

+0

あなたのタイトル質問に答えるには:初心者のコードをデバッグする方法:手でコードを歩いてください。必要に応じて、printを入力します(または、import pdb; pdb.set_trace()を実行して、コードをステップバイステップで実行し、期待どおりの値をチェックします)。とりわけ、推測を変えるのはループの外で一度だけ変わってくるのが分かるはずです – Foon

+0

[小さなプログラムをデバッグする方法](http://ericlippert.com/2014/03/05/how-to-debug-small-programs /)。 –

答えて

1

SecretNumberを0に設定しているからです。削除すると問題なく動作します。

4

あなたの2番目のifwhileループの外側にあるため、秘密の番号を推測するまでヒットすることはありません。あなたは決して別の推測を読んでいないので、ループは終了しません。

ランダムな秘密番号をゼロで上書きしてしまうという問題もあります。正しくコードをフォーマットしてください

import random 
SecretNumber=random.randint(1,5) 

NumberofGuesses=0 

while true: 
    Guess=int(input("Please enter Guess: ")) 
    NumberofGuesses += 1 

    if Guess == SecretNumber: 
     break # Got it! 
    elif Guess>SecretNumber: 
     print("Please insert a smaller number") 
    else: 
     print("Please insert a bigger number") 

print("Number of Guesses: {0}".format(NumberofGuesses))