Python. Решить задачу. Спасибо заранее
def end_zeros_or_numbers(num: int) -> int:
pass
if __name__ == '__main__':
print("Example:")
print(end_zeros(0))
# These "asserts" are used for self-checking and not for an auto-testing
assert end_zeros(0) == 1
assert end_zeros(1) == 0
assert end_zeros(10) == 1
assert end_zeros(101) == 0
assert end_zeros(245) == 0
assert end_zeros(100100) == 2
print("Coding complete? Click 'Check' to earn cool rewards!")
Я пробую сам решить задачу, но эту я не понял, КАК решать.. Я читал статьи на хабре как правильно решать. Я объяснил мысленно, мысленно созданному мною субъекту. И как бы я понял суть задачи. Вот задача. На функцию подаются числа переменной длины. Необходимо написать функцию, которая напишет, сколько нулей встречается в числе, НО, функция должна вывести эти числа, при условии, что они следуют друг за другом подряд, если такого числа нет, то просто вывести, сколько нулей в числе. Например: 1000000, функция должна вывести, что в числе 6 нулей. Другой пример: 10979000000, фунеция должна вывести, что в числе 6 нулей, так как они идут подряд. Примечания: Если существует число, к примеру: 10009000000, то вывод должен быть тоже шесть нулей, так как этих нулей больше чем в [10009]. Также данная функция может выводить и другие числа, которые идут подряд друг за другом. Использование регулярных выражений запрещается. Ребят, я знаю, что многим просто будет лень это делать, вы можете не писать код, просто напишите словами. Спасибо заранее.
Ответы (2 шт):
>>> from itertools import zip_longest
>>> translate_table = dict(zip_longest(map(str, range(1, 10)), ",", fillvalue=","))
>>> num = "100100012300"
>>> print(len(max(num.translate(str.maketrans(translate_table)).split(","))))
... 3
>>> num = "100100"
>>> print(len(max(num.translate(str.maketrans(translate_table)).split(","))))
... 2
Попробуйте itertools.groupby. Им удобно группировать подряд идущие символы.
Пример:
import itertools
def end_zeros(num: int) -> int:
size = 0
for x, items in itertools.groupby(str(num)):
if x == '0':
size = max(size, len(list(items)))
return size
if __name__ == '__main__':
assert end_zeros(10979000000) == 6
assert end_zeros(1000000) == 6
assert end_zeros(10009) == 3