簡體   English   中英

While循環:如何在循環期間僅設置一次(某物=整數)

[英]While Loop: how do I set (something = integer) only once during the loop

我不知道如何將費率和本金都設置為其設定的數字一次

在這個循環中,它不斷地重置 rate = 5 和 principal = 9000,但我希望循環繼續,主體不斷增加到 10,000 11,000 12,000 等。

N = 5
rate = 5
while rate <= 15: 
    principal = 9000
    principal = principal + 1000
    while principal <= 15000:
        simple = principal * (1 + (rate/100) * N)
        compound = principal * (1 + (rate/100)) ** N
        print(str(rate) + "%", principal, simple, compound)

運行時應該如下所示:

5% $10000 $12500.00 $12762.82
5% $11000 $13750.00 $14039.10
5% $12000 $15000.00 $15315.38
5% $13000 $16250.00 $16591.66
5% $14000 $17500.00 $17867.94
5% $15000 $18750.00 $19144.22
10% $10000 $15000.00 $16105.10
10% $11000 $16500.00 $17715.61
10% $12000 $18000.00 $19326.12
10% $13000 $19500.00 $20936.63
10% $14000 $21000.00 $22547.14
10% $15000 $22500.00 $24157.65
15% $10000 $17500.00 $20113.57
15% $11000 $19250.00 $22124.93
15% $12000 $21000.00 $24136.29
15% $13000 $22750.00 $26147.64
15% $14000 $24500.00 $28159.00
15% $15000 $26250.00 $30170.36

while loop之外初始化速率並在第一個while中增加它

N = 5
rate = 0
while rate < 15:
    rate += 5
    principal = 9000
    while principal < 15000:
        principal = principal + 1000
        simple = principal * (1 + (rate/100) * N)
        compound = principal * (1 + (rate/100)) ** N
        print(str(rate) + "%", principal, simple, compound)

您需要增加 while 循環內的速率,以便它結束:

while rate <= 15:
    rate += 5

謝謝大家的幫助,我明白了:)

N = 5
rate = 5
principal = 10000
while principal <= 15000:
    simple = principal * (1 + (rate/100) * N)
    compound = principal * (1 + (rate/100)) ** N
    print(str(rate) + "%", "$" + str(principal), "$" + str(simple), "$" + str(compound))
    principal += 1000
    if principal >= 15001:
        rate += 5
        principal = 10000
    if rate >= 20:
        principal = 15001

使用單個for-loop

  • 使用range(start, stop + 1, step)顯式創建rateprincipal列表
    • *range解包成一個list ,與list(range(1, 5))相同
  • 然后使用itertools.product創建組合或rateprincipal並使用for-loop遍歷生成器
  • 使用f-string打印(例如print(f'{variable}')
from itertools import product

N = 5
rate = [*range(5, 16, 5)]
principal = [*range(10000, 16000, 1000)]

for v in product(rate, principal):
    simple = v[1] * (1 + (v[0]/100) * N)
    compound = v[1] * (1 + (v[0]/100)) ** N
    print(f'{v[0]}% ${v[1]} ${simple} ${compound:0.02f}')

Output:

5% $10000 $12500.0 $12762.82
5% $11000 $13750.0 $14039.10
5% $12000 $15000.0 $15315.38
5% $13000 $16250.0 $16591.66
5% $14000 $17500.0 $17867.94
5% $15000 $18750.0 $19144.22
10% $10000 $15000.0 $16105.10
10% $11000 $16500.0 $17715.61
10% $12000 $18000.0 $19326.12
10% $13000 $19500.0 $20936.63
10% $14000 $21000.0 $22547.14
10% $15000 $22500.0 $24157.65
15% $10000 $17500.0 $20113.57
15% $11000 $19250.0 $22124.93
15% $12000 $21000.0 $24136.29
15% $13000 $22750.0 $26147.64
15% $14000 $24500.0 $28159.00
15% $15000 $26250.0 $30170.36

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM