Cách đọc số tiền bằng số sang dạng chữ bằng Python

Lập trình Python
#Hàm chuyển số tiền bằng số sang dạng chữ
def VND(so_tien):
    #Kiểm tra số tiền bằng 0, âm hay dương
    if so_tien == 0: return "Không đồng"
    elif so_tien < 0:
        neg = True
        so_tien = abs(so_tien)
    else: neg = False
    #Quy ước cách đọc các số
    x1 = ["không","một","hai","ba","bốn","năm","sáu","bảy","tám","chín"]
    x2 = ["","nghìn","triệu","tỉ","nghìn tỉ","triệu tỉ","tỉ tỉ"]
    #Chuyển số tiền sang dạng xâu, tính độ dài và dãy số 0
    x3 = str(so_tien)
    x4 = len(x3)
    x5 = [0]*x4
    so_tien = ""
    for i in range(x4):
        so = int(x3[x4-i-1])
        if so==0 and i%3==0 and x5[i]==0:
            for j in range(i+1,x4):
                so1 = int(x3[x4-j-1])
                if so1!=0: break
            if (j-i)//3>0:
                for k in range(i,((j-1)//3)*3+i):x5[k] = 1
    for i in range(x4):
        so = int(x3[x4-i-1])
        if x5[i]==1: continue
        if i%3==0 and i>0: so_tien = x2[i//3]+" "+ so_tien
        if i%3==1: so_tien = "mươi " + so_tien
        if i%3==2: so_tien = "trăm " + so_tien
        so_tien = x1[so] + " " + so_tien
    so_tien = so_tien.replace("không mươi","linh").replace("linh không","").replace("mươi không","mươi")
    so_tien = so_tien.replace("một mươi","mười").replace("mươi năm","mười lăm").replace("mươi một","mười một")
    so_tien = so_tien.replace("mười năm","mười lăm").strip().split(", ")
    so_tien[-1] = so_tien[-1].replace("linh","lẻ")
    so_tien = ", ".join(so_tien)
    if neg: return "Âm " + so_tien + " đồng"
    else: return so_tien.capitalize() + " đồng"

#Chương trình chính
number = int(input("Mời nhập số tiền: "))
#Xuất giá trị ra màn hình
print(VND(number))

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *