Viết chương trình đồng hồ báo thức bằng Python

Có rất nhiều dạng bài tập để bạn có thể tăng cường kỹ năng lập trình Python của mình. Một trong số đó chính là bài tập viết một chương trình báo thức đơn giản. Sau khi viết xong, bạn có thể chạy chương trình báo thức ấy bằng câu lệnh.

Viết chương trình đồng hồ báo thức bằng Python

Đầu tiên, bạn phải tạo một script Python và thêm các câu lệnh để hiển thị câu hỏi xem người dùng muốn đặt báo thức khi nào. Nếu chưa quen với một số cú pháp Python, bạn có thể xem một số ví dụ về Python để hiểu các nguyên tắc cơ bản.

  • Tạo một tệp mới và đặt tên nó là alarm.py.
  • Mở script Python bằng bất kỳ công cụ soạn thảo văn bản nào, ví dụ như Notepad++.
  • Ở phần trên cùng của file, nhập vào cả hai mô-đun datetime và time. Chương trình sẽ sử dụng các mô-đun này để tính toán xem nó phải chờ bao lâu để đổ chuông báo thức. Bạn có thể sử dụng mô-đun time của Python để trì hoãn thực thi cũng như các hành động khác.
import datetime
import time
  • Thêm vào một vòng lặp while, yêu cầu người dùng nhập vào thời gian đổ chuông báo thức hợp lệ, đúng định dạng [hour:minute]. Vòng lặp while sẽ lặp lại nếu người dùng điền vào một con số sai.
invalid = True
 
while(invalid):
    # Get a valid user input for the alarm time
    print("Set a valid time for the alarm (Ex. 06:30)")
    userInput = input(">> ")
  • Trong vòng lặp while, chuyển giá trị người dùng nhập vào thành một mảng tách riêng giá trị giờ khỏi giá trị phút.
  # For example, this will convert 6:30 to an array of [6, 30].
    alarmTime = [int(n) for n in userInput.split(":")]
  • Vẫn trong vòng lặp while, kiểm tra giá trị giờ và giá trị phút. Giá trị giờ phải nằm trong khoảng từ 0 đến 23 và giá trị phút phải nằm trong khoảng từ 0 đến 59. Nếu các điều kiện này không được thỏa mãn, vòng lặp while được lặp lại, yêu cầu người dùng phải nhập một giá trị mới.
# Validate the time entered to be between 0 and 24 (hours) or 0 and 60 (minutes)
    if alarmTime[0] >= 24 or alarmTime[0] < 0:
        invalid = True
    elif alarmTime[1] >= 60 or alarmTime[1] < 0:
        invalid = True
    else:
        invalid = False

Cách đếm thời gian đợi cho tới khi chuông báo thức được đổ

Bạn tạo bộ đếm xem chương trình sẽ phải đợi bao nhiêu giây cho tới khi báo thức kêu.

  • Bên dưới vòng lặp while, chuyển thời gian báo thức thành số giây trong ngày. Ví dụ, một ngày có 86.400 giây. Nếu người dùng nhập 00:01 (một phút sau nửa đêm), thời gian báo thức tính bằng giây sẽ là 60. Nếu người dùng nhập vào 23:59 thì thời gian báo thức tính bằng giây sẽ là  86.340.
# Number of seconds in an Hour, Minute, and Second
seconds_hms = [3600, 60, 1]

# Convert the alarm time to seconds
alarmSeconds = sum([a*b for a,b in zip(seconds_hms[:len(alarmTime)], alarmTime)])
  • Sử dụng hàm datetime.now() để xác định thời gian hiện tại. Chuyển đổi thời gian hiện tại sang giây:
now = datetime.datetime.now()
currentTimeInSeconds = sum([a*b for a,b in zip(seconds_hms, [now.hour, now.minute, now.second])])
  • Tính toán số giây phải chờ cho tới khi chuông báo thức kêu:
secondsUntilAlarm = alarmSeconds - currentTimeInSeconds
  • Nếu khác biệt giữa hai khoảng thời gian là âm, báo thức sẽ được cài đặt cho ngày hôm sau:
if secondsUntilAlarm < 0:
    secondsUntilAlarm += 86400 # number of seconds in a day
  • Hiển thị thông báo cho người dùng biết báo thức đã được cài đặt thành công:
print("Alarm is set!")
print("The alarm will ring at %s" % datetime.timedelta(seconds=secondsUntilAlarm))

Cách để chuông báo thức kêu

Để đổ chuông báo thức, hãy đợi những giây cuối trôi qua trước khi in thông báo "Wake up!" cho người dùng.

  • Sử dụng time.sleep để cài dặt số giây cần đợi trước khi chuông báo thức kêu:
time.sleep(secondsUntilAlarm)
  • Hiển thị thông báo cho người dùng khi chuông báo thức kêu:
print("Ring Ring... time to wake up!")

Cách thêm một đồng hồ đếm ngược trước khi chuông báo thức kêu

  • Thay thế dòng time.sleep. Thêm một vòng lặp for cho mỗi giây cho tới khi chuông kêu và hiển thị số giây còn lại cho người dùng:
for i in range(0, secondsUntilAlarm):
    time.sleep(1)
    secondsUntilAlarm -= 1
    print(datetime.timedelta(seconds=secondsUntilAlarm))

Cách chạy chương trình báo thức

Bạn chạy chương trình báo thức bằng cách điều hướng tới nơi lưu file bằng dòng lệnh. Sử dụng lệnh Python để chạy chương trình và nhập thời gian báo thức vào.

  • Mở Commnad Prompt hoặc Terminal. Điều hướng tới nơi bạn lưu file alarm.py. Ví dụ, nếu bạn lưu file Python trên Desktop thì bạn sử dụng lệnh cd Desktop.
cd Desktop
  • Sử dụng lệnh Python để chạy chương trình Python:
python alarm.py
  • Cài đặt thời gian hẹn giờ chính xác theo định dạng [hour:minute], ví dụ 4:30.

Chạy chương trình báo thức và nhập thời gian

  • Đồng hồ báo thức sẽ được cài đặt và bắt đầu đếm ngược mỗi giây cho tới khi chuông kêu. Hãy đợi cho tới khi đồng hồ báo thức hoàn thành quá trình đếm ngược.

Chương trình báo thức xác nhận đang chạy và đếm ngược thời gian

  • Khi quá trình đếm ngược kết thúc, chương trình sẽ hiển thị thông báo cho bạn biết rằng chuông đang kêu.

Sau khi đếm ngược, chuông sẽ kêu và thông báo được hiển thị

Viết chương trình đồng hồ báo thức bằng Python là một bài tập đơn giản giúp bạn nâng cao kỹ năng lập trình Python của mình. Quản Trị Mạng hy vọng rằng bài viết này sẽ có ích đối với bạn.

Thứ Ba, 20/12/2022 16:03
51 👨 2.051
0 Bình luận
Sắp xếp theo
    ❖ Học Python