Код выводит только первую последовательность цифр, хотя должен выводить самую длинную
По идее этот код должен выдавать наибольшую последовательность цифр в мешанине символов и цифр которую мы вводим. Но почему-то он выводит только первую последовательность не смотря на ее длинну.
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 шт):
а что вы хотите от кода?
ваш код вычисляет кол-во цифр в цифровой последовательности, заносит результат в массив и потом определяет самое длинное значение
самой последовательности он естественно не находит совсем - не заложили вы этот функционал
кроме того если я введу только цифры ваш код вообще рухнет, ведь
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))
import re
a = input('Символы и числа')
print(max(re.findall(r'\d+', a), key=len))
Вам просто надо добавить одну строку после завершения цикла:
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 внутри цикла не сработало.