поиск минимального и максимального по критерию длины числа python
Дана последовательность чисел, завершающаяся числом 0. Найдите самое короткое и длинное число из введенных. Для вычисления длины числа, нахождения минимума и максимума используйте отдельные функции.
Формат входных данных:
Вводится последовательность целых чисел, оканчивающаяся числом 0 (само число 0 в последовательность не входит, а служит как признак ее окончания).
def count_digits(num):
count = 0
while num:
num //= 10
count += 1
return count
def min_max(num, count):
num_len = count
max_len, min_len = -1, 99999999
min_num, max_num = None, None
if num_len > max_len:
max_len = num_len
max_num = num
if num_len < min_len:
min_len = num_len
min_num = num
print(min_num, max_num)
while True:
num = int(input())
if num == 0:
break
count = count_digits(num)
min_max(num, count)
Не могу понять, в чем проблема, если например просто использовать поиск максимума, т.е убирать в функции часть с посиком минимума, все хорошо.. Не могу понять, где спотыкаюсь...
Ответы (1 шт):
Не хватает отступов в двух последних строках, чтобы они входили в тело цикла
Здесь
if num_len < max_len:
должно быть
if num_len < min_len:
и min_len инициализируйте большим числом, например, 999999,а не -1
def min_max(lst):
max_len, min_len = -1, 100000
min_num, max_num = None, None
for num in lst:
num_len = count_digits(num)
if num_len > max_len:
max_len = num_len
max_num = num
if num_len < max_len:
min_len = max_len
min_num = num
return min_num, max_num
lst = []
while True:
num = int(input())
if num == 0:
break
else:
lst.append(num)
print(min_max(lst))