Январь 2018

Этот курс закончился

Cписок курсов

Домашнее задание. Будильник

25 января 2018

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

Модуль SimpleAudio

Модуль SimpleAudio позволяет воспроизводить звуковые файлы в формате WAV через динамики компьютера. Ещё раз: он воспроизводит только файлы в формате WAV. Он не воспроизводит формат mp3, wma и прочие.

Установка в Windows

Чтобы установить модуль simpleaudio на Windows, откройте программу «Командная строка» (найдите её в меню Пуск или нажмите Win+R, введите cmd и нажмите «Выполнить»). Выполните там команду

pip install simpleaudio

Установка в Linux и macOS

Чтобы установить модуль simpleaudio на Linux или macOS, откройте программу «Терминал» и выполните там команду:

pip3 install simpleaudio

На Linux вам понадобятся права суперпользователя, либо команда sudo:

sudo pip3 install simpleaudio

Как воспроизвести звук?

Не будем вдаваться в подробности и построим код на основе примера из документации к модулю SimpleAudio (http://simpleaudio.readthedocs.io/en/latest/):

import simpleaudio
def play_wave(filename):
    wave_object = simpleaudio.WaveObject.from_wave_file(filename)
    player = wave_object.play()
    player.wait_done()

Теперь мы можем воспроизводить любой WAV-файл при помощи вызова нашей функции play_wave():

play_wave("C:\\python\\alarm.wav")

Постановка задачи

Требуется создать программу, которая делает следующее:

  1. Запрашивает у пользователя дату и время будильника (например, с помощью input)
  2. Сообщает, через какое время сработает будильник
  3. Если дата из прошлого, то сообщает об этом и прекращает работу
  4. В цикле ждёт наступления указанного времени
  5. Воспроизводит файл alarm.wav

Файл alarm.wav можно скачать отсюда: https://anhel.in/files/alarm.wav.zip. Не забудьте распаковать архив. Источник файла.

Замечания по реализации

При ожидании в цикле лучше использовать функцию sleep:

from time import sleep

#...

while some_condition:
    sleep(1) # Ждать одну секунду

Для определения наступления нужного момента используйте классы и функции из модуля datetime.