книга заданий пайтон. книга практических заданий, pyton. Сборник упражнений Введение в язык Python с задачами и решениями Бен Стивенсон Москва, 2021 удк 004. 438Python
Скачать 2.24 Mb.
|
Упражнение 42. Узнать частоту по ноте## # Преобразуем название ноты в частоту # C4_FREQ = 261.63 D4_FREQ = 293.66 E4_FREQ = 329.63 F4_FREQ = 349.23 G4_FREQ = 392.00 A4_FREQ = 440.00 B4_FREQ = 493.88 # Запрашиваем у пользователя название ноты name = input("Введите название ноты в виде буквы и цифры, например C4: ") # Сохраняем название ноты и номер октавы в разных переменных note = name[0] octave = int(name[1]) # Получаем частоту ноты четвертой октавы if note == "C": freq = C4_FREQ elif note == "D": freq = D4_FREQ elif note == "E": freq = E4_FREQ elif note == "F": freq = F4_FREQ elif note == "G": freq = G4_FREQ elif note == "A": freq = A4_FREQ elif note == "B": freq = B4_FREQ # Адаптируем частоту к конкретной октаве freq = freq / 2 ** (4 – octave) # Выводим результат print("Частота ноты", name, "равна", freq) Упражнение 43. Узнать ноту по частоте## # Запрашиваем у пользователя частоту ноты и определяем ее название # C4_FREQ = 261.63 D4_FREQ = 293.66 E4_FREQ = 329.63 F4_FREQ = 349.23 G4_FREQ = 392.00 A4_FREQ = 440.00 B4_FREQ = 493.88 LIMIT = 1 # Запрашиваем у пользователя частоту ноты freq = float(input("Введите частоту ноты (Гц): ")) # Определяем ноту по частоте. Если нота не найдена, присваиваем переменной # пустую строку if freq >= C4_FREQ – LIMIT and freq <= C4_FREQ + LIMIT: note = "C4" elif freq >= D4_FREQ – LIMIT and freq <= D4_FREQ + LIMIT: note = "D4" elif freq >= E4_FREQ – LIMIT and freq <= E4_FREQ + LIMIT: note = "E4" elif freq >= F4_FREQ – LIMIT and freq <= F4_FREQ + LIMIT: note = "F4" elif freq >= G4_FREQ – LIMIT and freq <= G4_FREQ + LIMIT: note = "G4" elif freq >= A4_FREQ – LIMIT and freq <= A4_FREQ + LIMIT: note = "A4" elif freq >= B4_FREQ – LIMIT and freq <= B4_FREQ + LIMIT: note = "B4" else: note = "" # Отображаем результат или сообщение об ошибке if note == "": print("Ноты с заданной частотой не существует.") else: print("Введенная частота примерно соответствует ноте", note) Упражнение 47. Определение времени года## # Определяем и выводим название сезона по дате # # Запрашиваем у пользователя дату month = input("Введите название месяца: ") day = int(input("Введите день: ")) Представленное решение содержит множество блоков elif, чтобы максимально упростить сценарий. Можно уменьшить количество блоков elif за счет усложнения общей условной конструкции. # Определяем сезон if month == "Январь" or month == "Февраль": season = "Зима" elif month == "Март": if day < 20: season = "Зима" else: season = "Весна" elif month == "Апрель" or month == "Май": season = "Весна" elif month == "Июнь": if day < 21: season = "Весна" else: season = "Лето" elif month == "Июль" or month == "Август": season = "Лето" elif month == "Сентябрь": if day < 22: season = "Лето" else: season = "Осень" elif month == "Октябрь" or month == "Ноябрь": season = "Осень" elif month == "Декабрь": if day < 21: season = "Осень" else: season = "Зима" # Выводим результат print(month, day, "соответствует сезону", season) Упражнение 49. Китайский гороскоп## # Определяем животное, ассоциированное с введенным годом в китайском гороскопе # # Запрашиваем у пользователя год year = int(input("Введите год: ")) # Определяем ассоциированное с годом животное if year % 12 == 8: animal = "Дракон" elif year % 12 == 9: animal = "Змея" elif year % 12 == 10: animal = "Лошадь" elif year % 12 == 11: animal = "Коза" elif year % 12 == 0: animal = "Обезьяна" elif year % 12 == 1: animal = "Петух" elif year % 12 == 2: animal = "Собака" elif year % 12 == 3: animal = "Свинья" elif year % 12 == 4: animal = "Крыса" elif year % 12 == 5: animal = "Бык" elif year % 12 == 6: animal = "Тигр" elif year % 12 == 7: animal = "Кролик" # Выводим результат print("Год %d ассоциирован с животным: %s." % (year, animal)) При форматировании нескольких элементов в одной строке они перечисляются через запятую в круглых скобках справа от оператора %. Упражнение 52. Буквенные оценки – в числовые## # Преобразуем буквенные оценки в числовые # = 4.0 A_MINUS = 3.7 B_PLUS = 3.3 = 3.0 B_MINUS = 2.7 C_PLUS = 2.3 = 2.0 C_MINUS = 1.7 D_PLUS = 1.3 = 1.0 F = 0 INVALID = –1 # Запрашиваем буквенную оценку у пользователя letter = input("Введите буквенную оценку: ") letter = letter.upper() Инструкция letter = letter.upper() переводит все символы нижнего регистра в верхний, сохраняя результат в первоначальную переменную. Это позволит работать с оценками, введенными в нижнем регистре, без включения в программу дополнительных условных конструкций. # Преобразуем оценку из буквенной в числовую, используя значение –1 как индикатор, # означающий ошибочный ввод if letter == "A+" or letter == "A": gp = A elif letter == "A–": gp = A_MINUS elif letter == "B+": gp = B_PLUS elif letter == "B": gp = B elif letter == "B–": gp = B_MINUS elif letter == "C+": gp = C_PLUS elif letter == "C": gp = C elif letter == "C–": gp = C_MINUS elif letter == "D+": gp = D_PLUS elif letter == "D": gp = D elif letter == "F": gp = F else: gp = INVALID # Выводим результат if gp == INVALID: print("Введена некорректная оценка.") else: print("Буквенная оценка", letter, "соответствует", gp, "баллам.") |