2016-09-11 19 views
1

私は前もってお詫び申し上げます。私はこの質問がおそらく前にスタック交換で尋ねられていることを知っていますし、いくつかの関連記事を見ていますが、私はその回答を解釈する際に問題があります。Python 3.5 WhileループでIf文が入力されない

私はあなたの選択した番号を推測するために「二分検索」を使用する推測プログラムを作成するように求められました。

私はinput()をraw_input()に変更すると、Python 2のインタプリタで動作するプログラムを持っています。私のプログラムはPython 3インタプリタ(Python Tutor)でも動作します。しかし、scipython、pycharm、またはコマンドラインからプログラムを実行すると、私が期待している応答が表示されません。 whileループの下でifステートメントを移動する代わりに、プログラムはwhileステートメントの先頭を繰り返しループしているようです。私は私のコードを貼り付けていただければ幸いです。

low = 0 
high = 100 
flag = True 

print("Please think of a number between 0 and 100!") 
while flag: 
    ans = (high + low) // 2 
    print("Is your secret number " + str(ans)) 
    question = input(
    "Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. ") 
    if question == 'l': 
     low = ans 
    elif question == 'h': 
     high = ans 
    elif question == 'c': 
     flag = False 
     print("Game over. Your secret number was: " + str(ans)) 
    else: 
     print('invalid response, please choose again.') 

EDIT: これはコンソールへの出力です。失敗はありませんが、プログラムがif条件に入っていないことがわかります。私は各条件に応答を入力し、同じ推測を返します。私は答えに変更を加えないか、または私が間違った文字を打つとif文に入りません。私はelse:printにアクセスしません。

Is your secret number 50 
Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. l 
Is your secret number 50 
Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. h 
Is your secret number 50 
Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. c 
Is your secret number 50 
Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. 

EDIT#2: 私はちょうどそれがいくつかのランダム不明な理由で動作するようになりました。 scipythonはコードを正しく実行しませんが、私にマークした格付けプログラムは正しいです。だからイライラする!

+0

へのpython 2からメソッドの変更としてPyCharmの端末だけでシステムの端末である

あなたは(raw_input使用したいと思うだけのpython 2と覚え)の代わりに、入力の()... – Li357

+1

あなたのコードの作品私のために良い? – TheLazyScripter

+0

質問を編集して、scipythonからの失敗した出力を含めることはできますか? –

答えて

1

私のコードが適切に段階的に調整された後、わかりました。私はコードを評価するためにscipython IDEで間違ったコンソールを使用していました。

とにかくwhileループ内でinput()を使用し、if/elsif/elseを使用して条件を満たしたコードが良い例です。 3

関連する問題