• 1
    数据输入输出
    • 任务
  • 2
    条件语句
    • 任务
  • 3
    for循环
    • 任务
  • 4
    字符串
    • 任务
  • 5
    while循环
    • 任务
  • 6
    列表
    • 任务
  • 7
    二维数组
    • 任务
  • 8
    字典
    • 任务
  • 9
    集合
    • 任务
  • 10
    函数与递归
    • 任务
  • к

课程 4. Lines

难度:

任务«将行中符号的频率»

💻 Python

想象一下,你在一家录音室担任音乐制作人。每天你都会收到几十个短小的音乐样本(节奏图案)。其中一些——只是一个非常简短的动机,重复了几次,而另一些——则更加复杂和独特。你的任务——节省时间,编写一个分析程序,帮助快速将简单的重复样本与复杂的样本区分开来。

你将用一个字符串来表示样本,其中每个符号——代表一个音符或打击音(例如,"ababab" 或 "takadimitakadimi")。程序应判断整个字符串是否是其某个较短初始部分的重复。

例如:

  • 样本   "ababab"   是旋律   "ab"   重复 3 次。因此这是一个简单的样本。结果:  true
  • 样本   "abcabc"   是旋律   "abc"   重复 2 次。结果:  true
  • 样本   "abasde"   不是其任何初始片段的重复。结果:  false
  • 样本   "aaaa"   是   "a"   重复 4 次。结果:  true

你需要编写一个程序,接收一个字符串(样本)作为输入,如果它是重复的,则输出   true,否则输出   false。

输入格式

音乐样本(类型:行)。这是用户输入的一行无间隔文本。

输出格式

检查结果(类型:布尔值)。它要么是单词 true,要么是单词 false。

示例

输入

gogogo

输出

真

提示

There will be no clue here, decide for yourself!

main.py
测试 1
测试 2
测试 3
测试 4
测试 5
测试 6
测试 7
测试 8
测试 9
测试 10
开发者解答
# Получаем строку от пользователя
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)

🎉 恭喜! 🎉

你出色地完成了任务!这是一个不小的挑战,但你找到了正确答案。你离编程大师又近了一步!继续保持,每一步都让你更强大。

AD

广告

red-snake blue-snake green-snake

正在运行代码...

AI助手

你好!我是你的编程助手。随时向我提问关于 Python 的问题——我可以解释函数、方法,并帮助你完成当前任务!