Форум сайта python.su
Всем привет. Написала функцию, которая принимает последовательность чисел введенных пользователем, считает кол-во цифр этого числа, и выводит максимальное кол-во цифр числа из последовательности
например 45 (2 цифры) 1264 (4 цифры) 1 (1цифра) - максимальное 4
не пойму как сравнивать текущую итерацию с предыдущей. Например создам буферную переменную, которой присвою текущую итерацию, а потом пытаюсь их сравнить и ничего не выходит т.к. они всегда одинаковые…скорее всего не в том месте присваиваю и провожу сравнение…помогите (((
def priority(): n = int(input('введите число ')) count = 0 buf = 0 while n != 0: n //= 10 count += 1 buf = count print(count) print(buf) if count < buf: print() else: print(buf) task = int(input('введите кол-во задач: ')) for i in range(task): priority()
Офлайн
>>> def run_tasks(): ... n = int(input('tasks: ')) ... lengthmax = 0 ... for _ in range(n): ... number = input_number() ... length = count_length(number) ... if length > lengthmax: ... lengthmax = length ... print('length:', length) ... print('length maximum:', lengthmax) ... >>> def input_number(): ... number = int(input('number: ')) ... return number ... >>> def count_length(number): ... length = 0 ... while number: ... number //= 10 ... length += 1 ... return length ... >>> run_tasks() tasks: 3 number: 1234 length: 4 number: 45657 length: 5 number: 234 length: 3 length maximum: 5 >>>
Офлайн
py.user.next
не работает. при вызове функции
def run_tasks():программа спотыкается об переменную length, тк она не объявлена. Если я ее инициализирую вначале присвоив ей 0, то она с нулем так и остается..
Офлайн
Еще интересно - почему например, если я просто буду искать максимальное число среди последовательности чисел, например вот так, то все работает
count_num = 4 maximum = 0 for i in range(count_num): num = int(input('введите число: ')) if maximum < num: maximum = num if maximum > num: print(maximum)
def priority_task(): count = 0 maxx = 0 n = int(input('введите число: ')) while n != 0: n //= 10 count += 1 if maxx < count: maxx = count # print(maxx) if maxx > count: print(maxx) tasks = int(input('введите кол-во задач: ')) for i in range(tasks): priority_task()
Отредактировано JS (Окт. 28, 2021 18:22:01)
Офлайн
JSУ меня работает. Значит, что-то не то делаешь просто.
py.user.next
не работает. при вызове функции
JSПередай сюда код, который запускаешь.
пробовала функции менять местами и вызывать функцию внутри функции, но тоже нет
def run_tasks():
n = int(input('tasks: '))
lengthmax = 0
for _ in range(n):
number = input_number()
length = count_length(number)
if length > lengthmax:
lengthmax = length
print('length:', length)
print('length maximum:', lengthmax)
def input_number():
number = int(input('number: '))
return number
def count_length(number):
length = 0
while number:
number //= 10
length += 1
return length
run_tasks()
Отредактировано py.user.next (Окт. 28, 2021 23:53:00)
Офлайн
py.user.nextДа, лишний таб был) спасибо! заработало !
что-то не то делаешь просто.
Офлайн
Я тут ещё поменял функцию вычисления длины числа
Было
>>> def count_length(number): ... length = 0 ... while number: ... number //= 10 ... length += 1 ... return length ... >>> count_length(1) 1 >>> count_length(123) 3 >>> count_length(0) 0 >>>
>>> def count_length(number): ... length = 0 if number else 1 ... while number: ... number //= 10 ... length += 1 ... return length ... >>> count_length(1) 1 >>> count_length(123) 3 >>> count_length(0) 1 >>>
Отредактировано py.user.next (Ноя. 2, 2021 01:38:15)
Офлайн