2013-10-06 46 views
0

所以我定義了一個遞歸函數numToBaseB,它將基數爲10的給定數字轉換爲2到10之間的任何其他基數。期望的輸出是一個字符串,但出於某種原因,我不斷收到一個int。str()不返回函數中的字符串

def numToBaseB(num, b): 
    if num == 0: 
     return '' 
    elif b > 10 or b < 2: 
     return "The base has to be between 2 and 10" 
    else: 
     return numToBaseB(num // b, b) + str(num % b) 

所以對我來說: numToBaseB(4, 2)將返回

,而不是期望的輸出:

'100'

+0

這是不可能的很抱歉,如果你'print'ing出來的結果,那麼這是預期的行爲,引用只顯示在控制檯上,以幫助你看看變量是什麼。 – Blender

+0

是的,蒂姆Pietzcker指出了同樣的事情,謝謝! – user2852579

回答

1

你的程序是事先設計好的:

>>> numToBaseB(1024,2) 
'10000000000' 
>>> numToBaseB(4,2) 
'100' 

當然,如果你這樣做print(numToBaseB(4,2)),該報價將不顯示。

+0

當然...謝謝! – user2852579

+0

我不確定最初的設計包括將'0'轉換爲基數應該給出一個空字符串而不是'0'。它是按照編碼方式工作的,但是它們總是這樣做:-D – 6502

+0

是的,它是其中的一部分,謝謝你確定! – user2852579

0

如果你想有報價,雖然,你總是可以做到這一點:

print (" ' "+numToBase(4,2)+" ' ") 

但在程序中,如果你使用STR()反正,它將被作爲字符串處理ofcourse。

:)

編輯:打字上的電話,對這種瘋狂:(

+0

你可以使用'repr()',在字符串周圍加上引號:) –

+0

@mnunberg哇!完全忘了那個O.o – hope4tg