Найти - Пользователи
Полная версия: Сравнение переменных внутри цикла
Начало » Python для новичков » Сравнение переменных внутри цикла
1
JS
Всем привет. Написала функцию, которая принимает последовательность чисел введенных пользователем, считает кол-во цифр этого числа, и выводит максимальное кол-во цифр числа из последовательности
например 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()



py.user.next
  
>>> 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
>>>
JS
py.user.next
не работает. при вызове функции
def run_tasks():
программа спотыкается об переменную length, тк она не объявлена. Если я ее инициализирую вначале присвоив ей 0, то она с нулем так и остается..

пробовала функции менять местами и вызывать функцию внутри функции, но тоже нет
JS
Еще интересно - почему например, если я просто буду искать максимальное число среди последовательности чисел, например вот так, то все работает
 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()
py.user.next
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()
JS
py.user.next
что-то не то делаешь просто.
Да, лишний таб был) спасибо! заработало !
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
>>>

Ноль - это тоже число, но в нём одна цифра есть.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB