Python代码用于将大数的相邻数字相乘并找到最大可能乘积,而不给出期望的结果

时间:2018-12-09 20:09:41

标签: python python-3.x

这是一个 Python 代码,用于查找可以从一个数字的13个相邻数字获得的最大乘积。没有错误信息,但是该程序没有提供所需的输出。尽管很明显答案不是1,但我每次都会得到1。我是编程新手。

  

我的尝试

我已经将数字转换为字符串,并将其存储在数组中以逐元素获取。遍历所有数字的外部for循环(最后一次,当i的值为len(n)-12时,i+j将到达数组的最后一个条目。(尽管数组将数字反向存储)顺序,我没有将其撤销,因为我们不需要)。

n = "123899778978978787888787778788767677667"
arr = []
for i in range(len(n)):
  arr.append(int(n)%10)
  n = str(int(n)//10)

mul = 1
max_mult = 1
for i in range(len(n)-12):
  for j in range(13):
    mul = mul * int(arr[i+j]) 

  if(max_mult<mul):
    max_mult = mul
print(max_mult)

谁能告诉我我要去哪里错了?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

使用zip可以稍微简化您的逻辑:

n_list = list(map(int, list(n)))
res = max(i * j for i, j in zip(n_list, n_list[1:]))  # 81

如果您坚持使用for循环:

n_list = list(map(int, list(n)))
max_mult = 0

for i, j in zip(n_list, n_list[1:]):
    mult = i * j
    if mult > max_mult:
        max_mult = mult

print(max_mult)  # 81

请注意,您可以修改现有的基于range的迭代,但这不被视为Pythonic:

for i in range(len(n_list) - 1):
    mult = n_list[i] * n_list[i+1]
    if mult > max_mult:
        max_mult = mult