0
def complex():
    answer = raw_input("Would you like to run this program?")

    answer = answer.lower()

    money = 5

    if "yes" in answer:
        print money
        money = money - 1
        complex()

    else:
        quit()

complex()

何らかの理由で、raw_inputに「yes」と入力するたびに5が吐き出されます。しかし、5を吐き出したいので、もう一度yesと入力すると、4を吐き出します。次に、yesともう一度入力すると、吐き出したい3...。

Globalステートメントを使用してこれを修正しました。

money = 5
def complex():
answer = raw_input("Would you like to run this program?")
answer = answer.lower()


    if "yes" in answer:
        global money
        print money
        money = money - 1
        complex()

    else:
        quit()

complex()
4

5 に答える 5

1

money関数のローカル変数ですcomplex

関数を呼び出すたびcomplexに、変数が作成されます。

メソッドの前に変数を作成してみてください。

于 2012-08-20T18:06:28.170 に答える
1

これはあなたの手順が行っていることです:

  1. ユーザー入力を取得する
  2. 変数moneyを5に設定します
  3. ユーザー入力値が「yes」であるかどうかを検証し、そうである場合は、変数moneyが5の場合に値を出力します。
  4. 変数moneyを5-1=4に設定します
  5. 手順を実行するcomplex()
  6. ユーザー入力を取得する
  7. 変数moneyを5に設定します
  8. ユーザー入力値が「yes」であるかどうかを検証し、そうである場合は、変数moneyが5の場合に値を出力します。
  9. 変数moneyを5-1=4に設定します
  10. 手順を実行するcomplex()

...など。

ご覧のとおり、手順は反復ごとに目的の値(4)を値5で上書きしているため、目的どおりに機能していません。

あなたができることは、money5に設定された後にx回実行するためのループを作ることです。

于 2012-08-20T18:26:43.607 に答える
0

「複雑な」関数内で、money変数を5にリセットし続けます。

于 2012-08-20T18:06:23.493 に答える
0

complex()を呼び出すので、行money=5が呼び出され続けます。これを回避するには、再帰呼び出しにこの設定を含めないでください。または、反復を使用します。

于 2012-08-20T18:07:33.520 に答える
0

お金を変える=お金-何度も使用している別の変数に1つを変更すると、5としてお金がかかります

print dollars 
dollars = money - 1
于 2012-08-20T18:08:18.843 に答える