-2

有効なエントリのみを返す関数。

コード:

def test():
    x = input('1' or '0')
    if x == '1'
        x = 'yes'
    elif x == '0'
        x = 'no'
    else:
        print('Error!')
        test()
    return x

x = test()
print(x)

x を返すと有効なエントリ (1 または 0) のみが返されるようにするにはどうすればよいですか?

現時点では、1 または 0 以外の数値を入力すると、テスト関数がそれ自体を呼び出し、これは、この時点以降の入力に関係なく返される値になります...

これはなぜ発生し、関数の呼び出し元に「はい」または「いいえ」になる 1 のみを返すように修正するにはどうすればよいですか?

乾杯

4

2 に答える 2

3

再帰呼び出しの結果をどこにも保存していません。変更する必要があります:

else:
    print('Error!')
    test()
return x

に:

else:
    print('Error!')
    x = test()
return x
于 2012-08-24T05:40:34.693 に答える
2

これは、ループを使用してはるかに簡単に記述され、ボーナスとして、ユーザーが 1000 を超える間違いを犯しても失敗しませんが、あなたが尋ねているので: への再帰呼び出しtest()は、再帰呼び出しの戻り値を捨てています。あなたがすべきですx = test()

于 2012-08-24T05:42:05.207 に答える