2

ポイントは、整数の間隔から選択された乱数を推測し、一定の試行回数内でそれを行うことです。

このmain関数は、間隔の上限と、ユーザーが与えることができる推測の数を尋ねます。次に、コア関数は推測された値を返す必要があるため、数値が正しい場合、関数はすぐに終了する必要があります。

デバッグ中にいくつかのprintステートメントを入れましたが、関数からステートメントyに値が返されないことがわかりました。whilecore

# -*- coding: utf-8 -*-
def main():
    from random import choice
    p = input("choose upper limit: ")
    t = input("how many attempts: ")
    pool = range(p+1)
    x = choice(pool)
    i = 1
    while ((x != y) and (i < t)):
        core(x,y)
        i += 1

def core(x,y):
    y = input("choose a number: ")
    if y == x:
        print("You gussed the right number!")
        return y
    elif y > x:
        print("The number is lower, try again")
        return y
    else:
        print("The number is higher, try again")
        return y
4

2 に答える 2

0

backの戻り値をcoreローカル変数に割り当てたいのですyが、参照によって渡されません。

y = core(x)

yまた、ループに入る前に設定する必要があります。関数のローカル変数は、他の関数では使用できません。

結果として、あなたはまったく渡す必要はありませycore(x)

def core(x):
    y = input("choose a number: ")
    if y == x:
        print("You gussed the right number!")
        return y
    elif y > x:
        print("The number is lower, try again")
        return y
    else:
        print("The number is higher, try again")
        return y

ループは次のようになります。

y = None
while (x != y) and (i < t):
    y = core(x)
    i += 1

ユーザーが推測する前にそれが等しくなることは決してない限り、最初に関数でを設定yするかはそれほど重要ではありません。main()x

于 2013-02-11T14:59:23.253 に答える
0
y = -1
while ((x != y) and (i < t)):
    y = core(x,y)
    i += 1

ループの前にyを「初期化」します。ループ内で、yをcore()関数の結果と等しく設定します。

于 2013-02-11T15:00:10.640 に答える