我如何将 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')
这是我目前的全部:
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')