Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình chuyển đổi giờ phút sang dạng văn bản trong Python


Mô tả bài toán

Cho giờ h và phút m. Hãy hiển thị thời gian dưới dạng văn bản tiếng Anh theo quy tắc:

  • 8:00 -> "eight o' clock"
  • 8:01 -> "one minute past eight"
  • 8:10 -> "ten minutes past eight"
  • 8:15 -> "quarter past eight"
  • 8:30 -> "half past eight"
  • 8:40 -> "twenty minutes to nine"
  • 8:45 -> "quarter to nine"
  • 8:47 -> "thirteen minutes to nine"

Ví dụ

Nếu đầu vào là h = 9, m = 42, thì đầu ra sẽ là "eighteen minutes to ten".

Giải thuật

  1. Tạo danh sách text chứa từ vựng cho các số từ 1 đến 30 (bao gồm "quarter", "half").
  2. Xử lý các trường hợp đặc biệt: m = 0, m = 1, m = 15, m = 30, m = 45.
  3. Nếu m < 30: dùng "text[m-1] minutes past text[h-1]".
  4. Nếu m > 30 và m != 45: dùng "text[60-m-1] minutes to text[h]".

Triển khai Python

def solve(h, m):
    text = ["one", "two", "three", "four", "five", "six", "seven", "eight",
            "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "quarter",
            "sixteen", "seventeen", "eighteen", "nineteen", "twenty",
            "twenty-one", "twenty-two", "twenty-three", "twenty-four", "twenty-five",
            "twenty-six", "twenty-seven", "twenty-eight", "twenty-nine", "half"]
    op = ""
    if m == 0:
        op = text[h - 1] + " o' clock"
    elif m == 30:
        op = text[m - 1] + " past " + text[h - 1]
    elif m == 1:
        op = text[m - 1] + " minute past " + text[h - 1]
    elif m == 15:
        op = text[m - 1] + " past " + text[h - 1]
    elif m < 30:
        op = text[m - 1] + " minutes past " + text[h - 1]
    elif m == 45:
        op = "quarter to " + text[h]
    else:
        op = text[(60 - m) - 1] + " minutes to " + text[h]
    return op

h = 9
m = 42
print(solve(h, m))

Đầu vào

9, 42

Đầu ra

eighteen minutes to ten