Код выводит только первую последовательность цифр, хотя должен выводить самую длинную

По идее этот код должен выдавать наибольшую последовательность цифр в мешанине символов и цифр которую мы вводим. Но почему-то он выводит только первую последовательность не смотря на ее длинну.

a = input('Символы и числа')
result = list(a)
print(result)
num = 0
number = []
for i in range(len(result)):
    if result[i].isdigit() == True:
        num += 1
    else:
        number.append(num)
        num = 0
print(number)
print(max(number))

Ответы (3 шт):

Автор решения: Zhihar

а что вы хотите от кода?

ваш код вычисляет кол-во цифр в цифровой последовательности, заносит результат в массив и потом определяет самое длинное значение

самой последовательности он естественно не находит совсем - не заложили вы этот функционал

кроме того если я введу только цифры ваш код вообще рухнет, ведь

else:
    number.append(num)
    num = 0

ни разу не сработает, массив number будет пустым и max по нему никак не вычислить (выдастся ошибка)

поэтому после цикла обязательно надо продублировать код

number.append(num)

Так еще раз скажите - конкретно, что именно вам надо найти - в чем задача?

И вообще в вашем коде много избыточного (перевод строки в массив, работа с элементами массива и т.д.), вот так не лучше ли будет:

text = input('Символы и числа: ')

res = []
tmp = []

for letter in text:
    if letter.isdigit() is True:
        tmp.append(letter)
    else:
        if len(res) < len(tmp):
            res = tmp
        tmp = []

if len(res) < len(tmp):
    res = tmp

print(''.join(res))
print(len(res))
→ Ссылка
Автор решения: dungeon master
import re
    
a = input('Символы и числа')
    
print(max(re.findall(r'\d+', a), key=len))
→ Ссылка
Автор решения: CrazyElf

Вам просто надо добавить одну строку после завершения цикла:

for i in range(len(result)):
    if result[i].isdigit() == True:
        num += 1
    else:
        number.append(num) # <-- это не отработает на последней цифровой последовательности!
        num = 0
number.append(num) # <-- нужно добавить, чтобы всё починить
print(number)
print(max(number))

У вас сейчас просто не учитывается самая последняя цифровая последовательность, если строка ей и завершается. Статистика по ней накапливается в цикле, но не попадает в список number, потому что цикл кончается, а else внутри цикла не сработало.

→ Ссылка