私は前もってお詫び申し上げます。私はこの質問がおそらく前にスタック交換で尋ねられていることを知っていますし、いくつかの関連記事を見ていますが、私はその回答を解釈する際に問題があります。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はコードを正しく実行しませんが、私にマークした格付けプログラムは正しいです。だからイライラする!
へのpython 2からメソッドの変更としてPyCharmの端末だけでシステムの端末である
あなたは(raw_input使用したいと思うだけのpython 2と覚え)の代わりに、入力の()... – Li357
あなたのコードの作品私のために良い? – TheLazyScripter
質問を編集して、scipythonからの失敗した出力を含めることはできますか? –