我如何将 10% 添加到每个输出数字?

How do I keep adding 10% to each output number?

这是我目前的全部:

start = 100
end = x + (.10/x)
i = 0
for number in range(start, end, .10):
    i += 1 
    print(f"{i}. {number}")

我希望前 50 个数字的输出看起来像:

1. 100.0
2. 121.0
3. 133.1

range 仅表示 整数 的序列。您可以使用 itertools.count 代替它:

from itertools import count

start = 100
end = x + (.10/x)
i = 0
for number in count(start, .10):
    if number >= end:
        break
    i += 1 
    print(f"{i}. {number}")

count 用于无限数字流,因此您需要在循环内明确中断条件才能退出。


效率稍低,可以加itertools.takewhile提前断流

from itertools import count, takewhile


start = 100
end = x + (.10/x)
i = 0
for number in takewhile(lambda x: x < end, count(start, .10)):
    i += 1 
    print(f"{i}. {number}")

不相关,你可以使用enumerate而不是自己管理i

from itertools import count, takewhile


start = 100
end = x + (.10/x)
for i, number in enumerate(takewhile(lambda x: x < end, count(start, .10))):
    print(f"{i}. {number}")

from itertools import count

start = 100
end = x + (.10/x)
for i, number in enumerate(count(start, .10)):
    if number >= end:
        break
    print(f"{i}. {number}")

您只需在每次迭代中乘以 1.1。

start = 100

for number in range(50):
    print(f"{number+1}. {round(start,2)}")
    start = start * 1.10
1. 100
2. 110.0
...
49. 9701.72
50. 10671.9

其中一些答案似乎有点矫枉过正(也许您需要)。但这里有一个简单的选项:

n = 100 #starting number
p = 0.1 #increment percentage (10% for your case)
for i in range(1, 51):
    print(f'{i}. {round(n,1)}') #print here
    n *= 1+p #add 10% here

输出:

1. 100
2. 110.0
3. 121.0
4. 133.1
5. 146.4
6. 161.1
7. 177.2
8. 194.9
...

这也可以使用generator_expression来实现:

start = 100
print(*(f'{x+1}. {round(start*1.1**x, 1)}' for x in range(50)), sep='\n')