2016-04-06 3 views
0

Мне нужно написать модуль с одним входом, который может преобразовать десятичные знаки в Bukiyip (некоторый древний язык с подсчетной базой 3 или 4). Для целей назначения нам нужно только работать с базой 3.Как вернуть строку без кавычек Python 3

Я написал код, который делает это, но он возвращает мое число Bukiyip с кавычками, оставляя мне ответ, такой как «110» для 12.

Пожалуйста, помогите мне понять, как обойти это? Я новичок в Python и очень хочу научиться, поэтому объяснения будут действительно оценены.

def bukiyip_to_decimal(num): 
    convert_to_string = "012" 
    if num < 3: 
     return convert_to_string[num] 
    else: 
     return bukiyip_to_decimal(num//3) + convert_to_string[num%3] 

Я также пробовал следующее, но получаю ошибки.

else: 
     result = bukiyip_to_decimal(num//3) + convert_to_string[num%3] 
     print(int(result)) 
+3

Это * цитаты *, а не апострофы. Вы имеете в виду, что ваша функция возвращает строку, а не целое число? –

+3

Обратите внимание, что '110' будет * десятичным * значением, сто десять. Вы создаете представление в альтернативной нотации, почему строка здесь недостаточно хороша? Как вы печатаете результат? Другими словами, можете ли вы рассказать нам о своей более сложной проблеме, прежде чем все скачут и просто скажут вам использовать «int (result)»? –

+0

Привет @MartijnPieters, да, я думаю, это то, что я ошибаюсь. –

ответ

2

Вы либо повторяющие возвращаемое значение в интерпретаторе, в том числе и в результате в контейнере (например, список, словарь, набор или кортеж), или непосредственно производить repr() выход для вашего результата.

Ваша функция (справа) возвращает строку . При эхо в интерпретаторе или с использованием функции repr() вам предоставляется -отладочное представление, которое для строк означает, что Python будет форматировать значение таким образом, чтобы вы могли скопировать и вставить прямо в Python для воспроизведения значения. Это означает, что котировки включены.

Просто печать сама значение:

>>> result = bukiyip_to_decimal(12) 
>>> result 
'110' 
>>> print(result) 
110 

или использовать его в другой выход:

>>> print('The Bukiyip representation for 12 is {}'.format(result)) 
The Bukiyip representation for 12 is 110 
0

int() не работает? Видите ли, цитаты не для украшения. Они являются частью строкового литерала. "hello" - это строка. Это не hello с кавычками. Голый hello - это идентификатор, имя. Таким образом, вы не хотите вырезать кавычки из строки, что не имеет никакого смысла. Что вы хотите, это int.

+0

Привет @CPanda, спасибо за совет. Мне не удалось заставить его работать с int(), и я предполагаю, что это потому, что я помещаю его в неправильное место. Я не понимаю, как перейти от «bukiyip_to_decimal (num // 3) + convert_to_string [num% 3]» к возврату/печати целого числа? –

+0

Является ли '+' для конкатенации? Если это тогда, 'return int (bukiyip_to_decimal (num // 3) + convert_to_string [num% 3])' –

+0

просто проверил опцию вызова, как предложил Марджин, и понял, что решение прямо передо мной. Спасибо за твою помощь! –

Смежные вопросы