2016-10-05 6 views
-1

Я попытался сделать тройной калькулятор на Python, с некоторыми другими функциями, такими как hex, bin и oct со встроенными функциями. Для троицы нет никого, поэтому я ее построил.Тернарное преобразование в Python не работает. Зачем?

def ternary(n): 
    e = n/3 
    q = n%3 
    e = n/3 
    q = e%3 
    return q 

i = int(input("May you please give me a number: ")) 
print("Binary "+bin(i)) 
print("Octal "+oct(i)) 
print("Hexadecimal "+hex(i)) 
print("Ternary "+ternary(i)) 
enter code here 

Но это не сработает. Зачем? В чем проблема?

+0

Вы должны использовать 'Print ("Binary", бен (я))' вместо '+', потому что для '+' работать как должно быть строкой или же типа. –

+2

Ваш алгоритм преобразования в тройной даже не приближается к правилу. Вам нужен цикл, который повторяет вычисления для каждой цифры и добавляет их к результату. – Barmar

ответ

0

Есть несколько ошибок в вашем коде, которые другие указывали в комментариях, но я повторить их

  • Вы используете обычное разделение, когда вы хотите использовать целочисленное деление (в Python 3).
  • Вы возвращаете целое число от своей функции, тогда как bin, oct и hex все строки возврата.

Кроме того, ваша тернарная функция неверна, даже при фиксированных ошибках. Лучший способ написать функцию для базового преобразования самостоятельно - это рекурсия.

def ternary(n): 
    if n == 0: 
     return '' 
    else: 
     e = n//3 
     q = n%3 
     return ternary(e) + str(q)