Преобразование пятизначного числа в десятичное, десятичного числа в пятизначное, добавление базовых чисел 5 и умножение базовых чисел 5 с использованием функции def

#python-3.x #algorithm

#python-3.x #алгоритм

Вопрос:

Как мне преобразовать число с основанием 5 в десятичное, десятичное число в число с основанием 5, добавление чисел с основанием 5 и умножение чисел с основанием 5 с использованием функций def:

  • gumatj_to_decimal(a) , которое преобразует число Gumatj в десятичное
  • decimal_to_gumatj(a) , которое преобразует десятичное число в Gumatj
  • gumatj_add(a, b) , что добавляет 2 числа Gumatj
  • gumatj_multiply(a, b) , что кратно 2 числам Gumatj
 choice = input ("Choose test:n")
action = choice[:1]
print ("calling function")

if action == 'g' or action == 'd':

    num = int(choice[2:])

    if action == 'g':
      answer = gumatj.gumatj_to_decimal (num)
    else:
      answer = gumatj.decimal_to_gumatj (num)

 elif action == 'a' or action == 'm':

    num1, num2 = map (int, choice[2:].split(" "))

    if action == 'a':
      answer = gumatj.gumatj_add (num1, num2)
    else:
      answer = gumatj.gumatj_multiply (num1, num2)

 print ("called function")
 print (answer)
  

Пример ввода-вывода:

 Choose test: 
d 12 
calling function 
called function 
22 
  

Пример ввода-вывода:

 Choose test: 
g 22 
calling function 
called function 
12 
  

Пример ввода-вывода:

 Choose test:
a 12 14 
calling function 
called function 
31 
  

Пример ввода-вывода:

 Choose test: 
m 3 4 
calling function 
called function 
22
  

Ответ №1:

Попробуйте этот код:

 import numpy


def gumatj_to_decimal(num):
    return int(str(num), 5)


def decimal_to_gumatj(num):
    return numpy.base_repr(num, 5)


def gumatj_add(num1, num2):
    return decimal_to_gumatj(gumatj_to_decimal(num1)   gumatj_to_decimal(num2))


def gumatj_multiply(num1, num2):
    return decimal_to_gumatj(gumatj_to_decimal(num1) * gumatj_to_decimal(num2))


choice = input("Choose test:n")
action = choice[:1]
print("calling function")

if action == 'g' or action == 'd':

    num = int(choice[2:])

    if action == 'g':
        answer = gumatj_to_decimal(num)
    else:
        answer = decimal_to_gumatj(num)

elif action == 'a' or action == 'm':

    num1, num2 = map(int, choice[2:].split(" "))

    if action == 'a':
        answer = gumatj_add(num1, num2)
    else:
        answer = gumatj_multiply(num1, num2)

print("called function")
print(answer)
  

Пример вывода:

 Choose test:
d 12
calling function
called function
22

Choose test:
g 22
calling function
called function
12

Choose test:
a 12 14
calling function
called function
31

Choose test:
m 3 4     
calling function
called function
22
  

Объяснение:

  • Преобразование числа с основанием 5 в десятичное:

Python int может преобразовывать строки с любым основанием в целое число:

 def gumatj_to_decimal(num):
    return int(str(num), 5)
  
  • Преобразование десятичного числа в основание 5:

Numpy base_repr может это сделать:

 def decimal_to_gumatj(num):
    return numpy.base_repr(num, 5)
  
  • Добавление двух чисел с основанием 5:

Сначала преобразуйте их в десятичное число, добавьте их и преобразуйте обратно в основание 5:

 def gumatj_add(num1, num2):
    return decimal_to_gumatj(gumatj_to_decimal(num1)   gumatj_to_decimal(num2))
  
  • Умножение двух чисел с основанием 5:

Сначала преобразуйте их в десятичное число, умножьте, преобразуйте их обратно в основание 5:

 def gumatj_multiply(num1, num2):
    return decimal_to_gumatj(gumatj_to_decimal(num1) * gumatj_to_decimal(num2))