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

Python代码,用于将一个大数字的相邻数字相乘,并找到最大可能乘积,但不会给出期望的结果,python,python-3.x,Python,Python 3.x,下面是一个Python代码,用于查找一个数字的13个相邻数字的最大乘积。没有错误消息,但此程序未提供所需的输出。我每次都(在回复中)得到1,尽管答案显然不是1。我是编程新手 我的尝试 我已将数字转换为字符串,并将其存储到数组中,以逐元素获取。遍历所有数字的外部for循环(上次当ihave valuelen(n)-12时,i+j将到达数组的最后一个条目。(虽然数组以相反的顺序存储数字,但我没有反转它,因为我们不需要) n=“123899797897878788878777887677667” ar

下面是一个Python代码,用于查找一个数字的13个相邻数字的最大乘积。没有错误消息,但此程序未提供所需的输出。我每次都(在回复中)得到
1
,尽管答案显然不是
1
。我是编程新手

我的尝试

我已将数字转换为字符串,并将其存储到数组中,以逐元素获取。遍历所有数字的外部for循环(上次当
i
have value
len(n)-12
时,
i+j
将到达数组的最后一个条目。(虽然数组以相反的顺序存储数字,但我没有反转它,因为我们不需要)

n=“123899797897878788878777887677667”
arr=[]
对于范围内的i(len(n)):
arr.append(整数(n)%10)
n=str(int(n)//10)
mul=1
最大值=1
对于范围内的i(透镜(n)-12):
对于范围(13)内的j:
mul=mul*int(arr[i+j])

如果(max_mult您的逻辑可以使用
zip
稍微简化:

n_list = list(map(int, list(n)))
res = max(i * j for i, j in zip(n_list, n_list[1:]))  # 81
如果您坚持对
循环使用

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
注意:您可以修改现有的基于
范围的迭代,但这不被视为Pythonic:

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

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

n_list = list(map(int, list(n)))
res = max(i * j for i, j in zip(n_list, n_list[1:]))  # 81
如果您坚持对
循环使用

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
注意:您可以修改现有的基于
范围的迭代,但这不被视为Pythonic:

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

为什么不直接在整数类型中工作?为什么是string/int/string?“此程序没有提供所需的输出”这还不够好。请解释您对范围(len(n)-12)中的i的期望值和获得的结果。
我从未获得上限值。最大值为
len(n)-11``您只需通过
arr=list(n)
(假设您的
n=“123…”
已经是字符串)即可获得数字列表。@mkrieger1谢谢,我不知道。为什么不直接使用整数类型?为什么使用字符串/int/string?“此程序没有给出所需的输出”这还不够好。请解释您对范围内的i(len(n)-12)
的期望值和得到的结果,
我从未得到上限值。Max是
len(n)-11``您只需通过
arr=list(n)
(假设您的
n=“123…”
已经是字符串)就可以得到数字列表@mkrieger1谢谢,我不知道。你能解释一下什么是
zip
吗?当我可以使用它时,
zip
。这个代码不起作用:(你能告诉我你在哪里实现了13个连续数字的乘法吗?@UnknownMathMan,在每个循环的
i*j
部分。你能解释一下
zip
是什么吗?当我能使用它时,
zip
。这个代码不起作用:(你能告诉我你在哪里实现了13个连续数字的乘法吗?@UnknownMathMan,在每个循环的
i*j
部分。