• 1
    Entrada e saída
    • Tarefas
  • 2
    Condições
    • Tarefas
  • 3
    Loop for
    • Tarefas
  • 4
    Strings
    • Tarefas
  • 5
    Loop while
    • Tarefas
  • 6
    Listas
    • Tarefas
  • 7
    Matrizes 2D
    • Tarefas
  • 8
    Dicionários
    • Tarefas
  • 9
    Conjuntos
    • Tarefas
  • 10
    Funções e recursão
    • Tarefas
  • к

Lição 5. While cycle

Dificuldade:

Tarefa«Seleção da raiz do número»

💻 Python

no distante planeta XB-103, um robô geólogo de pesquisa coleta amostras de minerais de uma esteira transportadora. Cada tipo de mineral possui seu próprio identificador numérico único (ID). O sistema de controle do robô deve funcionar da forma mais eficiente possível, portanto, para otimizar o armazenamento do robô, é necessário transferir apenas um número para o computador central ao final do turno: qual foi o comprimento máximo da série contínua de amostras do mesmo tipo. O turno do robô termina quando uma amostra de calibração especial com ID 0 é encontrada.

você recebe uma sequência de identificadores numéricos de minerais. A sequência sempre termina com o número 0, que indica o fim do turno e não é o ID do mineral. Determine o maior número de IDs iguais consecutivos nesta sequência.

Formato de entrada

Números naturais inteiros são introduzidos, cada um em uma nova linha. A sequência termina com o número 0.

Formato de saída

Um número & mdash; O comprimento máximo da sequência contínua dos mesmos elementos.

Exemplo

Entrada

1
7
7
7
2
2
9
0

Saída

3

Dica

There will be no clue here, decide for yourself!

main.py
Teste 1
Teste 2
Teste 3
Teste 4
Teste 5
Teste 6
Teste 7
Teste 8
Teste 9
Teste 10
Solução do desenvolvedor
# Инициализируем переменные для подсчета
# max_len - хранит максимальную найденную длину серии
# current_len - хранит длину текущей серии одинаковых чисел
# prev_n - хранит предыдущее число для сравнения с текущим

max_len = 0
current_len = 0
# Используем -1 как начальное значение, так как ID минералов - натуральные числа
prev_n = -1 

# Запускаем бесконечный цикл, который прервется при вводе 0
while True:
    # Считываем очередной ID и преобразуем его в целое число
    n = int(input())

    # Условие выхода из цикла - конец смены
    if n == 0:
        break

    # Сравниваем текущий ID с предыдущим
    if n == prev_n:
        # Если они равны, увеличиваем счетчик текущей серии
        current_len += 1
    else:
        # Если числа не равны, значит серия прервалась.
        # Сначала проверяем, не была ли закончившаяся серия самой длинной
        if current_len > max_len:
            max_len = current_len
        
        # Начинаем новую серию с текущего числа. Ее длина равна 1.
        current_len = 1
        # Обновляем "предыдущее" число
        prev_n = n

# После завершения цикла нужно выполнить еще одну проверку.
# Это необходимо для случая, когда самая длинная серия оказалась в самом конце
# последовательности, прямо перед нулем.
if current_len > max_len:
    max_len = current_len

# Выводим результат
print(max_len)

🎉 Parabéns! 🎉

Você resolveu a tarefa brilhantemente! Foi difícil, mas você encontrou a solução certa. Você está um passo mais perto de dominar a programação! Continue assim.

AD

Publicidade

red-snake blue-snake green-snake

Executando seu código...

Assistente de IA

Olá! Sou seu assistente de programação. Faça qualquer pergunta sobre Python — posso explicar funções, métodos e ajudá-lo com a tarefa atual!