2011-09-06 36 views
-1

這應該是相當容易的,但是我很難從中找出答案。我想列出兩點之間的所有座標。像這樣:一組座標之間的列表座標

1: (1,1) 
2: (1,3) 
In between: (1,2) 

或者

1: (1,1) 
2: (5,1) 
In between: (2,1), (3,1), (4,1) 

它並不需要用對角線的工作。

+2

如果這是功課,請添加該標籤。 –

回答

2

根據您想如何處理邊緣的情況下,這似乎工作:

def points_between(p1, p2): 
    xs = range(p1[0] + 1, p2[0]) or [p1[0]] 
    ys = range(p1[1] + 1, p2[1]) or [p1[1]] 
    return [(x,y) for x in xs for y in ys] 

print points_between((1,1), (5,1)) 
# [(2, 1), (3, 1), (4, 1)] 

print points_between((5,6), (5,12)) 
# [(5, 7), (5, 8), (5, 9), (5, 10), (5, 11)] 
+1

如果第一個座標高於相應的第二個座標,這將無法正常工作。 – intuited

+0

工作很好!只需要添加一個小行來測試哪一個更高。謝謝。 –

+1

如果問題隱約有趣,我有幾分鐘的空閒時間,我可能會提供一個答案。我對執行其他人的紀律或提高人們的軟件技能並不感興趣,因爲他們並不想改善自己。換句話說,我不會強迫別人照顧。順便說一句,我認爲很明顯,OP沒有爲熟悉python的初學者課程的分級員提供這種解決方案。 – recursive

4

你似乎是一個開始的程序員。我認爲有用的一種常用技術是自己完成工作,然後看看你是如何做到的,並將其轉化爲程序。如果你看不到如何,將它分解成更簡單的步驟,直到你可以。