-
Notifications
You must be signed in to change notification settings - Fork 0
/
day20_countdown_timer.py
57 lines (45 loc) · 1.76 KB
/
day20_countdown_timer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# ECX 30 DAYS OF CODE AND DESIGN
# Day 20
"""
**Countdown Timer**
Task:\n
Write a program that:
* Asks the user to enter a time period in the form of a number with a unit of either seconds, minutes, or hours.
(E.g.; "44s", "32m", "10h".)
* The last character of the string entered would be used to determine its unit.
* Counts down from the input value, and prints out the time left on the clock every second.
* When the time is exhausted, makes a beeping sound non-stop until the user exits the app.
"""
import time # For sleep
import datetime # For timedelta
# import winsound # For Beep on Windows OS
# Countdown timer function
def countdown(hrs, mins, sec):
"""Counts down time and gives off beeps when the time inputted elapse"""
# Calculate the total number of seconds
total_seconds = hrs * 3600 + mins * 60 + sec
# While loop that checks if total_seconds reaches zero
# If not zero, decrement total time by one second
while total_seconds >= 0:
# Timer represents time left on countdown
timer = datetime.timedelta(seconds=total_seconds)
print(timer, end='\r')
# Delays the program one second
time.sleep(1)
# Reduces total time by one second
total_seconds = total_seconds - 1
# The timer continually beeps for the next 45 seconds
alarm_sec = 45
while alarm_sec > 0:
# winsound.Beep(440, 500)
print('\a', end='\r')
time.sleep(1)
alarm_sec -= 1
# User Input
try:
hours = input("Enter the time in hours: ")
minutes = input("Enter the time in minutes: ")
secs = input("Enter the time in seconds: ")
countdown(int(hours), int(minutes), int(secs))
except ValueError:
print('Invalid input! Only integers are allowed.')