Я хочу создать калькулятор, который может добавлять (и умножать, делить и т. Д.) Числа в базе 12 и с различными ограничениями на разные цифры.
Последовательность базы 12: [0,1,2,3,4,5,6,7,8,9,"A","B"]
Пределы должны быть:
Первая цифра: лимит "B"
Вторая цифра: лимит 4
Третья цифра: лимит "B"
(Идея заключается в том, что она следует за почасовымСистемные ограничения, но в базе 12, так, например, в базе 12 есть 50 секунд в минуту)
Это означает, что вы рассчитываете так: [1,2,3,4,5,6,7,8,9,A,B,10,11,...48,49,4A,4B,100,101,...14B,200,201,...B4B,1000,1001..]
Итак, я сделал следующий код
import string
digs = string.digits + string.ascii_uppercase
def converter(number):
#split number in figures
figures = [int(i,12) for i in str(number)]
#invert oder of figures (lowest count first)
figures = figures[::-1]
result = 0
#loop over all figures
for i in range(len(figures)):
#add the contirbution of the i-th figure
result += figures[i]*12**i
return result
def int2base(x):
if x < 0:
sign = -1
elif x == 0:
return digs[0]
else:sign = 1
x *= sign
digits = []
while x:
digits.append(digs[int(x % 12)])
x = int(x / 12)
if sign < 0:
digits.append('-')
digits.reverse()
return ''.join(digits)
def calculator (entry1, operation, entry2):
value1=float(converter(entry1))
value2=float(converter(entry2))
if operation == "suma" or "+":
resultvalue=value1+value2
else:
print("operación no encontrada, porfavor ingrese +,-,")
result=int2base(resultvalue)
return result
print(calculator(input("Ingrese primer valor"), input("ingrese operación"), input("Ingrese segundo valor")))
Дело в том, что я не знаю, как установить границы для различных цифр. Если кто-то может мне помочь, я был бы очень рад