-3

毎日の利息のために銀行の特定の元本に到達するのにかかる日数を把握するための短いコードをスクリプト化しようとしています。以下のコードを使用すると、IDLE で実行してもエラーは発生しませんが、カウンターは 0 を返します。

def main():
    # irrelevant code elided by msw, Bal, Int and Tar are numeric
    counter = 0
    for i in range(0):
        if (Bal * Int) == Tar:
            print '1'
        else:
            counter + 1
    print counter
4

7 に答える 7

6

このループで何を得ているのかわかりません:

for i in range(0):
    if (Bal * Int) == Tar:
        print '1'
    else:
        counter + 1
  1. range(0)は空のリストなので、ループはまったく実行されません。
  2. counter + 1単純にカウンターよりも 1 つ多く計算され、カウンターはインクリメントされません。counter += 1
  3. 反復ごとに変化するループは何もないため、ループに入ると無限ループになります。
于 2010-07-26T00:38:50.983 に答える
3

利息を含む最終残高を計算する式は次のとおりだと思います。

Final = Principal * ( 1 + interest ) ** interest_period

私がこれを正しく理解したと仮定すると、次の方法で何回の利息期間がかかるかを知ることができます。

def how_long(start_money, interest_rate, final_money):
    day = 0
    money = start_money
    while True:
        if money >= final_money:
            break
        day += 1
        money = start_money * (1 + interest_rate)**day

    return day, money
于 2010-07-26T01:30:12.433 に答える
2
In [5]: def test():
   ...:     for i in range(0):
   ...:         return '1'
   ...:     
   ...:     

In [6]: x = test()

In [7]: print x
------> print(x)
None

戻り値が「なし」であることを確認してください。何をしようとしているのかわかりません。しかし、基本的な間違いは、range(x) 関数の引数です。range(0) は常に空のリストを返します。

于 2010-07-26T05:37:27.553 に答える
0

これは、空のループである range(0) を配置したためです。おそらく、while ループを検討できますか?

于 2010-07-26T00:35:52.370 に答える
0

あなたのループfor i in range(0)は実際には実行されません。 forループの本体をスキップrange(0)する空のリストを返します。[]

于 2010-07-26T00:36:16.650 に答える
0

これが何をしていると思うか説明してください。この外観が何回機能すると思うかを英語で説明して、質問を更新してください.

counter = 0
for i in range(0):
    if (Bal * Int) == Tar:
        print '1'
    else:
        counter + 1

ヒント。答えはゼロです。問題は「なぜ?」と「何をしようとしていたのですか?」

于 2010-07-26T00:37:05.147 に答える
0

コードに 3 つ以上の問題があると言われました。ループを使用する特別な理由がない場合は、次の式で計算することをお勧めします。

future_value = present_value * (1 + interest_rate_per_period) ** number_of periods

または、略して、

f = p * (1 + i) ** n
f / p = (1 + i) ** n
log(f / p) = n * log(1 + i)
n = log(f / p) / log(i + i)

例: 私は $5000 を持っています。年率 10% で $10000 に成長するには何年かかりますか?

>>> from math import log
>>> f = 10000.0
>>> p = 5000.0
>>> i = 0.1
>>> n = log(f / p) / log(1 + i)
>>> n
7.272540897341713
>>>
于 2010-07-26T01:35:20.443 に答える