Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数字中连续数字的最大和_Python_Python 3.x - Fatal编程技术网

Python 数字中连续数字的最大和

Python 数字中连续数字的最大和,python,python-3.x,Python,Python 3.x,我需要编写一个函数,将数字中的连续数字相加,并返回其中的最大和。我编写了一个函数来接收参数(m,t)。m—表示数字(int),t(int)也表示要求和的连续位数。现在我想让它遍历数字中的所有数字,最后返回最大值。 我不明白为什么我的代码不起作用: def sum_digits(m, t): str_m= str(m) for i in range(len(str_m)): if t+i<len(str_m): num= str_n[

我需要编写一个函数,将数字中的连续数字相加,并返回其中的最大和。我编写了一个函数来接收参数(m,t)。m—表示数字(int),t(int)也表示要求和的连续位数。现在我想让它遍历数字中的所有数字,最后返回最大值。 我不明白为什么我的代码不起作用:

def sum_digits(m, t):
    str_m= str(m)

    for i in range(len(str_m)):
        if t+i<len(str_m):
            num= str_n[i:t+i]
            num1='+'.join(num)
            num2= str(eval(num1))
            lst= list(num2)
        else:
            break


return max (lst)
def和数字(m,t):
str_m=str(m)
对于范围内的i(len(str_m)):

如果t+i则您的不起作用的原因是
lst
每次迭代都会被重置。我认为您打算在开始时设置它,并在每次迭代中添加它。此外:

啊哈!!!!您不需要
eval

def max_sum(m, t):
    digits = map(int, str(m))
    max_sum = cur_sum = sum(digits[:t])
    for i, x in enumerate(s[t:], t):
        cur_sum += x - digits[i - t]
        max_sum = max(max_sum, cur_sum)
    return max_sum

此外,这有O(logm)运行时间(如果n是m中的位数,则为O(n)),而不是简单的O(t*logm)(或O(t*n))。

谢谢,但我想知道您是否可以解释一下我的运行时间有什么问题?@user2751595:我同意PaulDraper的说法,您在每次迭代时都要重置
lst
,这就是你没有得到正确答案的原因。另外,您正在使用一个变量
d
,但没有正确定义它,但是当我在开始时设置一个空列表时,当我想附加它时,给了我一个错误
>>> def maxSum(m, t):
...   m = str(m)
...   answer = 0
...   for digits in (m[i:i+t] for i in range(len(m)-t+1)):
...     answer = max(answer, sum(int(d) for d in digits))
...   return answer
... 
>>> maxSum(1234567, 3)
18