首页 文章

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

提问于
浏览
0

这是一个 Python 代码,用于查找我们可以从一个数字的13个相邻数字中获得的最大乘积 . 没有错误消息,但此程序未提供所需的输出 . 我每次都得到(在repl.it) 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 回答

  • 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
    

相关问题