2015-10-14 64 views
-3

我想寫一個定義,以便當我輸入一個數字時,我想將它分成一個元組內的不同列表。使用Float問題

我可以得到它,因此它可以與一個整數一起工作,但我似乎無法讓該函數在數字爲float的情況下工作。

到目前爲止,我知道:

First=[] 
Second=[] 
Third=[] 

First.append([int(i) for i in str(number)][0]) 
Second.append([int(i) for i in str(number)][1:]) 

第三元組,我想這是小數點後是在三= []任何數字。

def divide(numbers): 

然後在最後我知道我會 打印((第一,第二,第三)

我真的不好書寫的功能,所以對如何形成功能的任何幫助將不勝。理解我使用Python

編輯: 我想分(123456)具有([1],[2,3,4,5,6],[]) 除法的輸出(123.456 )輸出([1],[2,3],[4,5,6])

較大數字中的第一個數字將始終進入它自己的列表中,然後是另一個列表,其中包含任何後面的列表(但小數點前面),然後列出最後一個列表,我希望列出小數點後的任何列表。一個元組內應該總是有三個列表。

+1

我不知道你想要什麼作爲輸出。也許包含int和float的幾個例子? –

+0

@ZoffDino我編輯了我的問題,謝謝! –

+0

你需要處理負數嗎?在這種情況下,輸出會是什麼樣子? –

回答

2

我會用partition將數字分成整數部分和小數部分。即使對於沒有小數點的數字也是如此。然後,您可以大致不變地使用您的當前代碼,並以類似於第二種方式生成第三個列表。

def divide(x): 
    left, _, right = str(x).partition(".") 
    first = [int(left[0])] 
    second = [int(i) for i in left[1:]] 
    third = [int(i) for i in right] 
    return first, second, third 

print divide(123456) 
print divide(123.456) 

結果:

([1], [2, 3, 4, 5, 6], []) 
([1], [2, 3], [4, 5, 6]) 

請注意,這隻會工作,爲「好」漂浮其字符串表示僅僅是一系列的數字和一個可選的小數點。例如,它不適用於float("inf")5e301


編輯:你可以有一些額外的負數的特殊外殼和浮動沒有整數部分。

def divide(x): 
    if x < 0: 
     x = -x 
    left, _, right = str(x).partition(".") 
    first = [int(left[0])] 
    second = [int(i) for i in left[1:]] 
    third = [int(i) for i in right] 
    if first == [0] and third: 
     first = [] 
    return first, second, third 
+0

如何使用整數將在最後產生一個空列表,但是當我鍵入一個浮點數時:例如.235,它會輸出([0],[0], [2,3,5])?因爲我希望在沒有可以進入指定列表的元素時生成空列表。 –

+0

由於.235的字符串表示形式在小數點前有一個零:「0.235」。但它會在我的機器上生成'([0],[],[2,3,5])'',而不是'([0],[0],[2,3,5])''。 – Kevin

+0

我如何獲得沒有0打印的功能?有沒有辦法? –