2016-04-06 39 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()函數或使用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

連接的'+'是?如果它是'返回int(bukiyip_to_decimal(num // 3)+ convert_to_string [num%3])' –

+0

只是檢查了像Martjin建議的通話選項,並意識到解決方案是正確的在我面前。謝謝你的幫助! –

相關問題