Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 28, 2021 13:29:26

JS
Зарегистрирован: 2021-10-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Сравнение переменных внутри цикла

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



Офлайн

#2 Окт. 28, 2021 14:13:36

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Сравнение переменных внутри цикла

  
>>> 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
>>>



Офлайн

#3 Окт. 28, 2021 17:04:54

JS
Зарегистрирован: 2021-10-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Сравнение переменных внутри цикла

py.user.next
не работает. при вызове функции

def run_tasks():
программа спотыкается об переменную length, тк она не объявлена. Если я ее инициализирую вначале присвоив ей 0, то она с нулем так и остается..

пробовала функции менять местами и вызывать функцию внутри функции, но тоже нет

Офлайн

#4 Окт. 28, 2021 18:19:17

JS
Зарегистрирован: 2021-10-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Сравнение переменных внутри цикла

Еще интересно - почему например, если я просто буду искать максимальное число среди последовательности чисел, например вот так, то все работает

 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)

Офлайн

#5 Окт. 28, 2021 23:52:04

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Сравнение переменных внутри цикла

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)

Офлайн

#6 Ноя. 1, 2021 12:30:25

JS
Зарегистрирован: 2021-10-28
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Сравнение переменных внутри цикла

py.user.next
что-то не то делаешь просто.
Да, лишний таб был) спасибо! заработало !

Офлайн

#7 Ноя. 2, 2021 01:38:03

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Сравнение переменных внутри цикла

Я тут ещё поменял функцию вычисления длины числа

Было

  
>>> 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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version