-
Notifications
You must be signed in to change notification settings - Fork 3
/
main.py
68 lines (56 loc) · 1.7 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from tabulate import tabulate
import itertools as it
def genConverter(angka, pembilang):
result = []
hasilAngka = ""
loop = True
while loop:
if angka >= pembilang:
result.append(angka)
sisa = angka % pembilang
angka = angka // pembilang
if sisa > 9:
huruf = libChar(sisa)
hasilAngka += huruf
sisa = "{0} = {1}".format(sisa, huruf)
else:
hasilAngka += str(sisa)
divid = "{0}------ {1}".format(pembilang, sisa)
result.append(divid)
else:
if angka > 9:
angka = libChar(angka)
hasilAngka += str(angka)
result.append(angka)
loop = False
break
result.append("")
hasilAngka = "".join(reversed(hasilAngka)) #reversed
return (result, hasilAngka)
def libChar(angka):
if angka == 10:
return "A"
elif angka == 11:
return "B"
elif angka == 12:
return "C"
elif angka == 13:
return "D"
elif angka == 14:
return "E"
elif angka == 15:
return "F"
elif angka == 16:
return "G"
angka = int(input("Masukkan bilangan untuk dikonversi : "))
biner, hasilBiner = genConverter(angka, 2)
octal, hasilOctal = genConverter(angka, 8)
hexa, hasilHexa = genConverter(angka, 16)
combine = list(it.zip_longest(biner, octal, hexa))
header = ("Binner", "Octal", "Hexadecimal")
print(tabulate(combine, header, tablefmt="plain"))
print("")
print("==============================================================")
print("Binner : ", hasilBiner)
print("Octal : ", hasilOctal)
print("Hexa : ", hasilHexa)