🎉 恭喜! 🎉
你出色地完成了任务!这是一个不小的挑战,但你找到了正确答案。你离编程大师又近了一步!继续保持,每一步都让你更强大。
想象一下,你在一家录音室担任音乐制作人。每天你都会收到几十个短小的音乐样本(节奏图案)。其中一些——只是一个非常简短的动机,重复了几次,而另一些——则更加复杂和独特。你的任务——节省时间,编写一个分析程序,帮助快速将简单的重复样本与复杂的样本区分开来。
你将用一个字符串来表示样本,其中每个符号——代表一个音符或打击音(例如,"ababab" 或 "takadimitakadimi")。程序应判断整个字符串是否是其某个较短初始部分的重复。
例如:
"ababab" 是旋律 "ab" 重复 3 次。因此这是一个简单的样本。结果: true "abcabc" 是旋律 "abc" 重复 2 次。结果: true "abasde" 不是其任何初始片段的重复。结果: false "aaaa" 是 "a" 重复 4 次。结果: true 你需要编写一个程序,接收一个字符串(样本)作为输入,如果它是重复的,则输出 true,否则输出 false。
音乐样本(类型:行)。这是用户输入的一行无间隔文本。
检查结果(类型:布尔值)。它要么是单词 true,要么是单词 false。
gogogo
真
# Получаем строку от пользователя
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
广告
正在运行代码...