1

1 つの数値パラメーターを受け取る、guess_number という名前の関数を作成します。ユーザーがパラメーターの数字を推測するまで、1 から 10 までの数字をユーザーに尋ねます。ユーザーが推測した回数を返します。

これまでのコードは次のとおりですが、何が欠けているのかわかりません。入力段でストールします。

def guess_number(x):
    count = 0
    a = input('Guess my number between 1 and 10')
    while a!= x:
        count += 1
    else:
        count += 1
        return count
4

6 に答える 6

0

作業コードは次のとおりです。

def guess_number(x):
    count = 1
    a = input('Guess my number between 1 and 10')
    while a != x:
        count += 1
        a = input('Guess my number between 1 and 10')
    return count
于 2013-04-03T19:28:35.233 に答える
0

あなたのプログラムはこの時点で動かなくなります:

while a!= x:
        count += 1

x が 5 で a が 3 だとします。この場合、a!=x は True と評価され、ループに入り、カウントがインクリメントされますが、a は常に x とは異なるため、while ループから抜け出すことはありません。 .

このコードはそれを行う必要があります:

def guess_number(x):
    count = 1
    while True:
        a = input('Guess my number between 1 and 10')
        if a != x:
            count += 1
        else:
            return count
于 2013-04-03T19:28:36.420 に答える
0

inputをループ内に移動するだけでなく、文字列としてwhile渡すつもりでない限り、比較を行う前にxに変換する必要があります。aint

def guess_number(x):
    count = 0
    while int(input('Guess a number.')) != x:
        count += 1
    return count

スタイル上の注意として、関数が実際に選択できる数値の範囲を制限しない限り、プロンプトで範囲 (1 から 10) を焼き付けるべきではありません。x何でもかまいません。質問が特定の要件を示していることは知っていますが、設計に悪影響を与える要件について質問する必要があります。

于 2013-04-03T19:28:54.940 に答える
0

いくつか問題があります。まずinput、ループ内にいる必要があります。そうしないと、一度だけ尋ねられます。だからあなたはこれが欲しい:

def guess_number(x):
    count = 0
    while int(raw_input('Guess my number between 1 and 10')) != x:
        count += 1
    else:
        count += 1
        return count

(非常に重要です!) の代わりに ! を使用していることに注意してくださいint(raw_input(...))inputユーザーが関数内で任意のコードを実行できるようにすることは、ひどい考えです。そのためinput、Python 3 で の動作を Python 2 と同じように変更raw_inputしました。

于 2013-04-03T19:32:49.817 に答える
0

ユーザーに入力を求めるのは 1 回だけです。

while ループに入ると、ユーザーは新しい推測を入力するように求められることはありません。これは、値がa決して変わらないことを意味するため、永遠にループに陥ります。

input追加のステートメントを含めてみてください:

def guess_number(x):
    count = 0
    a = input('Guess my number between 1 and 10')
    while a != x:
        count += 1
        a = input('Guess again!')
    else:
        count += 1
        return count
于 2013-04-03T19:27:12.440 に答える