Python питон

добавим в класс note сравнение нот. сравнивать будем по высоте, без учёта длительности, причём будем считать большей ту ноту, чей тон выше (частота колебаний больше).

также добавим возможность транспонирования звука (переноса выше или ниже) с сдвигов > > вверх и < < вниз на гарантированно целое положительное значение. например, если «до» сдвинуть вправо на три тона ( > > 3), получится «фа». сдвиг должен работать циклически: если сдвинуть ту же «до» на тон вниз ( < < 1), должна получиться «си». а если сдвинуть «си» на один тон выше ( > > 1) — опять «до».

и ещё один новый метод — get_interval, позволяющий получить значение интервала между двумя нотами: «прима», «секунда», «терция», «кварта», «квинта», «секста» или «септима», где «прима» — интервал между двумя равными по тону нотами, а «септима» — максимальный доступный на нашем ксилофоне интервал — между «до» и «си».

в решении нужно объявить и можно использовать следующие константы (тестирующая система будет импортировать их из вашего кода):

n = 7

pitches = ["до", "ре", "ми", "фа", "соль", "ля", "си"]

long_pitches = ["до-о", "ре-э", "ми-и", "фа-а", "со-оль", "ля-а", "си-и"]

intervals = ["прима", "секунда", "терция", "кварта", "квинта", "секста", "септима"]

формат ввода

каждый тест представляет собой код, в котором будет использоваться ваш класс.

1 пример
ввод

from solution import (
note, n, pitches,
long_pitches, intervals
)
fa1 = note("фа", true)
fa2 = note("фа")
print(fa1 == fa2)
print(fa1 > fa2)
print(fa1 < fa2)
print(fa1 < = fa2)
la = note("ля", true)
print(fa1 < la)

вывод

true
false
false
true
true

2 пример
ввод

from solution import (
note, n, pitches,
long_pitches, intervals
)
fa2 = note("фа")
la = note("ля", true)
print(la > > 1)
print(la > > 2)
x = fa2 < < 4
print(x)

вывод

си-и
до-о
си

3 пример
ввод

from solution import (
note, n, pitches,
long_pitches, intervals
)
fa1 = note("фа", true)
fa2 = note("фа")
la = note("ля", true)
print(la.get_interval(fa1))
print(fa1.get_interval(fa2))
print(fa1.get_interval(note('си'

вывод

терция
прима
кварта

несмотря на то, что для правильной работы класса не обязательно реализовывать все шесть операций сравнения, рекомендуется всё же делать это (либо использовать functools.

Natasha7554 Natasha7554    2   19.09.2019 15:53    97

Другие вопросы по теме Информатика