【发布时间】:2019-11-30 02:34:11
【问题描述】:
最近,我尝试创建一个 for 循环,该循环将列表中的每个整数相乘并返回每个连续乘积,直到给出所有整数的总乘积。
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处跳过结果?还有,我该如何解决?
【问题讨论】:
-
您的问题出在:
for i in s:它绝对不会像您认为的那样做。