58 lines
1.3 KiB
Plaintext
58 lines
1.3 KiB
Plaintext
def teks_ke_angka(kalimat):
|
|
# Kamus angka untuk memetakan kata ke angka
|
|
angka = {
|
|
"satu": 1,
|
|
"dua": 2,
|
|
"tiga": 3,
|
|
"empat": 4,
|
|
"lima": 5,
|
|
"enam": 6,
|
|
"tujuh": 7,
|
|
"delapan": 8,
|
|
"sembilan": 9,
|
|
"sepuluh": 10,
|
|
"sebelas": 11,
|
|
}
|
|
|
|
total = 0
|
|
temp = 0
|
|
|
|
# Tokenisasi kalimat menjadi daftar kata
|
|
tokens = kalimat.split()
|
|
|
|
for t in tokens:
|
|
if t in angka:
|
|
temp += angka[t]
|
|
elif t == "belas":
|
|
temp += 10
|
|
elif t == "puluh":
|
|
temp *= 10
|
|
elif t == "ratus":
|
|
if temp == 0:
|
|
temp = 1
|
|
temp *= 100
|
|
elif t == "ribu":
|
|
if temp == 0:
|
|
temp = 1
|
|
total += temp * 1000
|
|
temp = 0
|
|
elif t == "juta":
|
|
if temp == 0:
|
|
temp = 1
|
|
total += temp * 1000000
|
|
temp = 0
|
|
elif t == "seratus":
|
|
temp += 100
|
|
elif t == "seribu":
|
|
total += 1000
|
|
elif t == "sejuta":
|
|
total += 1000000
|
|
|
|
total += temp
|
|
return total
|
|
|
|
# BAGIAN UTAMA PROGRAM
|
|
if __name__ == "__main__":
|
|
kalimat = input("Masukkan kalimat angka: ").lower()
|
|
hasil = teks_ke_angka(kalimat)
|
|
print(f"hasil konversi: {hasil}") |