如何将每个整数"one by one"相乘并显示结果"in progressive order",直到所有整数相乘得出总积
How to multiply each integer "one by one" and display result "in progressive order" until all integers multiplied leads to the overall product
最近,我尝试创建一个 for 循环,将列表中的每个整数与 returns 每个顺序乘积相乘,直到给出所有整数的总乘积。
import operator
from operator import mul
from functools import reduce
s = list(map(int, input('Enter numbers WITH SPACES: ').split(' ')))
progression_product = [];
for i in s:
progression_product.append(reduce(mul, s[0:i]))
#This loop below removes repeating results. As for progressive order multiplication of positive
#integers. It's impossible to have a repeating result.(excluding multiple 1's and 0)
for ss in progression_product:
if progression_product.count(ss) > 1:
progression_product.remove(ss)
print(progression_product)
-
请注意,输出会跳过下面 13 的结果。但是在列出的输出末尾正确完成所有整数的总乘积
Enter numbers WITH SPACES: 12 2 3 4 13 133
[24, 72, 288, 497952]
> 12*2*3*4*13
>3744
问题
有什么办法可以解决这个问题吗?为什么 python 会跳过 13 处的结果?还有,我该如何解决?
您正在迭代 s 的元素,而不是索引。在删除重复项之前打印列表,它将是:
[497952, 24, 72, 288, 497952, 497952]
# Which are the products of:
[s[0:12], s[0:2], s[0:3], s[0:4], s[0:13], s[0:133]]
用索引循环替换第一个循环,通过 range(len(s))
或 enumerate(s)
:
# Either this:
progression_product = [];
for i in range(len(s)):
progression_product.append(reduce(mul, s[0:i]))
# Or this:
progression_product = [];
for i, v in enumerate(s):
progression_product.append(reduce(mul, s[0:i]))
最近,我尝试创建一个 for 循环,将列表中的每个整数与 returns 每个顺序乘积相乘,直到给出所有整数的总乘积。
import operator
from operator import mul
from functools import reduce
s = list(map(int, input('Enter numbers WITH SPACES: ').split(' ')))
progression_product = [];
for i in s:
progression_product.append(reduce(mul, s[0:i]))
#This loop below removes repeating results. As for progressive order multiplication of positive
#integers. It's impossible to have a repeating result.(excluding multiple 1's and 0)
for ss in progression_product:
if progression_product.count(ss) > 1:
progression_product.remove(ss)
print(progression_product)
- 请注意,输出会跳过下面 13 的结果。但是在列出的输出末尾正确完成所有整数的总乘积
Enter numbers WITH SPACES: 12 2 3 4 13 133
[24, 72, 288, 497952]
> 12*2*3*4*13
>3744
问题
有什么办法可以解决这个问题吗?为什么 python 会跳过 13 处的结果?还有,我该如何解决?
您正在迭代 s 的元素,而不是索引。在删除重复项之前打印列表,它将是:
[497952, 24, 72, 288, 497952, 497952]
# Which are the products of:
[s[0:12], s[0:2], s[0:3], s[0:4], s[0:13], s[0:133]]
用索引循环替换第一个循环,通过 range(len(s))
或 enumerate(s)
:
# Either this:
progression_product = [];
for i in range(len(s)):
progression_product.append(reduce(mul, s[0:i]))
# Or this:
progression_product = [];
for i, v in enumerate(s):
progression_product.append(reduce(mul, s[0:i]))