• 1
    Entrada y salida de datos
    • Tareas
  • 2
    Condiciones
    • Tareas
  • 3
    Bucle for
    • Tareas
  • 4
    Cadenas de texto
    • Tareas
  • 5
    Bucle while
    • Tareas
  • 6
    Listas
    • Tareas
  • 7
    Matrices 2D
    • Tareas
  • 8
    Diccionarios
    • Tareas
  • 9
    Conjuntos
    • Tareas
  • 10
    Funciones y recursión
    • Tareas
  • к

Lección 4. Lines

Dificultad:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Tarea«Frecuencia de símbolos de línea»

💻 Python

Imagina que trabajas como productor musical en un estudio de grabación. Cada día recibes docenas de muestras musicales cortas (patrones rítmicos). Algunas de ellas — son solo un motivo muy breve, repetido varias veces, mientras que otras — son melodías más complejas y únicas. Tu tarea — es ahorrar tiempo y escribir un programa analizador que ayude a separar rápidamente las muestras simples que se repiten de las complejas.

Representarás una muestra en forma de una línea donde cada símbolo — es una nota o un sonido de percusión (por ejemplo, "Ababab" o "Takadimitakadimi"). El programa debe determinar si toda la línea es una repetición de alguna parte inicial más corta de la misma.

Por ejemplo:

  • Muestra   " ababab "   es una repetición del motivo   " ab "   3 veces. Por lo tanto, es una muestra simple. Resultado:   true
  • Muestra   " abcabc "   es una repetición del motivo   " abc "   2 veces. Resultado:   true
  • Muestra   " abasde "   no es una repetición de ninguna de sus partes iniciales. Resultado:   false
  • Muestra   " aaaa "   es una repetición   " a "   4 veces. Resultado:   true

Debes escribir un programa que tome una línea (muestra) como entrada y devuelva   true si es una repetición, y   false en caso contrario.

Formato de entrada

Muestra musical (Tipo: Línea). Esta es una línea sin espacios que el usuario introduce.

Formato de salida

El resultado de la verificación (tipo: valor breve). Es la palabra & nbsp; true , o la palabra & nbsp; false .

Ejemplo

Entrada

gogogo

Salida

verdadero

Pista

There will be no clue here, decide for yourself!

main.py
Prueba 1
Prueba 2
Prueba 3
Prueba 4
Prueba 5
Prueba 6
Prueba 7
Prueba 8
Prueba 9
Prueba 10
Solución del desarrollador
# Получаем строку от пользователя
input_string = input()

# Получаем длину введенной строки
n = len(input_string)

# Создаем флаг, который покажет, нашли ли мы подходящий шаблон. Изначально считаем, что не нашли.
found_pattern = False

# Начинаем цикл для проверки всех возможных длин подшаблона.
# Длина подшаблона (i) может быть от 1 до половины длины всей строки.
# Длиннее половины быть не может, так как шаблон должен повториться хотя бы дважды.
for i in range(1, n // 2 + 1):
    # Проверяем, делится ли длина всей строки нацело на длину предполагаемого шаблона.
    # Если нет, то из такого шаблона целую строку составить нельзя.
    if n % i == 0:
        # Если делится, то у нас есть кандидат в шаблоны.
        # Это начальная часть строки длиной i.
        pattern = input_string[:i]
        
        # Вычисляем, сколько раз наш кандидат-шаблон должен повториться, чтобы получить строку нужной длины.
        num_repeats = n // i
        
        # Создаем тестовую строку, повторяя наш кандидат-шаблон нужное количество раз.
        test_string = pattern * num_repeats
        
        # Сравниваем созданную тестовую строку с оригинальной.
        if test_string == input_string:
            # Если они совпали, значит, мы нашли повторяющийся шаблон.
            found_pattern = True
            # Прерываем цикл, так как дальнейшие проверки не нужны.
            break

# После завершения цикла выводим значение флага.
# Если мы нашли шаблон, он будет True, если нет - останется False.
print(found_pattern)

🎉 ¡Felicidades! 🎉

¡Has resuelto la tarea brillantemente! Era un reto difícil, pero encontraste la solución correcta. ¡Estás un paso más cerca de dominar la programación! Sigue así, cada etapa superada te hace más fuerte.

AD

Publicidad

red-snake blue-snake green-snake

Ejecutando tu código...

Asistente de IA

¡Hola! Soy tu asistente de programación. Hazme cualquier pregunta sobre Python — puedo explicarte funciones, métodos y ayudarte con la tarea actual.