ivansivalov
27.04.2021 14:52

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.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
вопросик70
23.09.2022 00:00
Задача 1
var
x,y:integer;
begin
  writeln('Введите х');
  readln(x);
  writeln('Введите y');
  readln(y);
  if x<y then writeln('Меньшее: ',x) else
  if x>y then writeln('Меньшее: ',y) else
  if x=y then writeln('Числа равны')
end.

задача 2
var
x,y:integer;
begin
  writeln('Введите первое число');
  readln(x);
  writeln('Введите второе число');
  readln(y);
  if y=0 then writeln('Второе число равно 0. Деление невозможно!') else
  writeln(x,'/',y,'=',x/y);
end.

задача 3
var
s,name:string;
begin
  writeln('Введите ваше имя');
  readln(name);
  writeln('Введите строку');
  readln(s);
  if s=name then writeln('Привет!') else
  writeln('Здравствуйте!');
end.

задача 4
var
x:integer;
begin
  writeln('Введите число');
  readln(x);
  if (x mod 2)=0 then writeln('Четное') else writeln('Нечетное')
end.

задача 5
var
x:string;
i:integer;
begin
  writeln('Введите строку');
  readln(x);
  writeln('Введите номер символа');
  readln(i);
  if i > length(x) then writeln('Нет символа!') else writeln(x[i])
end.

задача 6
var
x,y:integer;
begin
  writeln('Количество яблок:');
  readln(x);
  writeln('Количество апельсинов:');
  readln(y);
  if (x*100)>(y*150) then writeln('Берите яблоки')
  else
  if (x*100)<(y*150) then writeln('Берите апельсины')
  else
  if (x*100)=(y*150) then writeln('Вес яблок и апельсинов одинаковый')
end.
0,0(0 оценок)
Ответ:
Sanchoys123
23.09.2022 00:00
Задача 1
var
x,y:integer;
begin
  writeln('Введите х');
  readln(x);
  writeln('Введите y');
  readln(y);
  if x<y then writeln('Меньшее: ',x) else
  if x>y then writeln('Меньшее: ',y) else
  if x=y then writeln('Числа равны')
end.

задача 2
var
x,y:integer;
begin
  writeln('Введите первое число');
  readln(x);
  writeln('Введите второе число');
  readln(y);
  if y=0 then writeln('Второе число равно 0. Деление невозможно!') else
  writeln(x,'/',y,'=',x/y);
end.

задача 3
var
s,name:string;
begin
  writeln('Введите ваше имя');
  readln(name);
  writeln('Введите строку');
  readln(s);
  if s=name then writeln('Привет!') else
  writeln('Здравствуйте!');
end.

задача 4
var
x:integer;
begin
  writeln('Введите число');
  readln(x);
  if (x mod 2)=0 then writeln('Четное') else writeln('Нечетное')
end.

задача 5
var
x:string;
i:integer;
begin
  writeln('Введите строку');
  readln(x);
  writeln('Введите номер символа');
  readln(i);
  if i > length(x) then writeln('Нет символа!') else writeln(x[i])
end.

задача 6
var
x,y:integer;
begin
  writeln('Количество яблок:');
  readln(x);
  writeln('Количество апельсинов:');
  readln(y);
  if (x*100)>(y*150) then writeln('Берите яблоки')
  else
  if (x*100)<(y*150) then writeln('Берите апельсины')
  else
  if (x*100)=(y*150) then writeln('Вес яблок и апельсинов одинаковый')
end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота