2017-04-04 57 views
1

我正在尋找一個功能,我採取一個大於3的整數,並顯示不同的方式,你可以添加數字。例如6會變成[[1,5],[2,4]],不包括[3,3]。 3會變成[[1,2]]。 8會變成[[1,7],[2,6],[3,5]],不包括[4,4]分裂整數8 - > [1,7],[2,6]

我到目前爲止的嘗試。

def split(k): 
    values = [] 
    for i in range(k//2): 
     values.append([i+1,k-1-i]) 
    print(values) 

遇到顯示[3,3]和[4,4]的問題。不確定這個背後的邏輯。

回答

1

您想使用math.ceil來計算奇數,並且在浮動除法後收起來。

from math import ceil 

def split(k): 
    return [[i, k-i] for i in range(1, ceil(k/2))] 

所以在9的情況下,範圍將產生的值1 - 5不含5,1, 2, 3, 4然後只減去那些從9,以形成對。

您還可以提供範圍開始值1忽略零。

# Output 
>>> split(3) 
[[1, 2]] 
>>> split(8) 
[[1, 7], [2, 6], [3, 5]] 
>>> split(9) 
[[1, 8], [2, 7], [3, 6], [4, 5]] 
+0

謝謝!不知道天花板的功能。真的很有幫助。 – skryt

+0

不用擔心,你也可以做'range(1,(k + 1)// 2)',它具有相同的效果。 –