Code chuyển số thành chữ (Python)

Em chào mọi người,
Hiện tại thì em vừa mới học đến phần if else và while loop. Em có đọc được bài tập về việc convert number to words nhưng em đang bị thắt nút tại vùng 100 -> 1000.
Vì em chưa học def và 1 số function trong 1 số bài code của anh chị đã chia sẻ nên em có code theo cách dùng if else tạm thời.
Em có đọc qua dictionary để khai giá trị dữ liệu.
Em đang bị vướng ở 2 chỗ.

  1. Em nên khai tất cả các giá trị kia vào 1 cái dictionary chung chứ không nên tách ra để dễ truy cập?
  2. Em đã xét các giá trị 100,200,300,… được nhưng đối với 101,120,239 chẳng hạn thì em đang gặp vấn đề về việc xét giá trị hàng chục, đơn vị
  • Vì xét đối với giá trị từ 100 -1000 nên em tính cho nNum - nNum[0] * 100, sau đó xét hàng chục mà nó không chạy
nNum = int(input("Enter a number: "))

num2words_less_10 = {0 : "zero", 1 : "one", 2 : "two", 3 : "three", 4 : "four", 5 : "five", 6 : "six", 7 : "seven", 8 : "eight", 9 : "nine"}
two_digits = {10 : "ten", 11 : "eleven", 12 : "twelve", 13 : "thirteen", 14 : "fourteen", 15 : "fifteen", 16 : "sixteen", 17 : "seventeen", 18 : "eighteen", 19 : "nighteen"}
tens_multiple = {20 : "twenty", 30 : "thirty", 40 : "fourty", 50 : "fifty", 60 : "sixty", 70 : "seventy", 80 : "eighty", 90 : "ninety"}
tens_power = ["hundred", "thousand"]

if nNum < 10:
    print(num2words_less_10[nNum])
elif 10 <= nNum < 20:
    print(two_digits[nNum])
elif 20<= nNum < 100:
    if nNum % 10 == 0:
        print(tens_multiple[nNum])
    else:
        print(tens_multiple[nNum // 10 * 10], num2words_less_10[nNum %10])
elif 100 <= nNum < 1000:
    nValue = int(nNum / 100)
    if nValue == 1:
        str100 = "hundred"
    else:
        str100 = "hundreds"
    if nNum % 100 == 0:
        print(num2words_less_10[nNum / 100], str100)
    else:
1 Like

Bạn đọc thử đọc bài sau xem sao nhé!

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?