在python中创建一个坐标网格

时间:2012-12-16 19:49:33

标签: python grid

  

可能重复:
  How to print in range?

我需要创建如下所示的网格坐标:

(  0,   0):  0     (125,   0):  1     (250,   0):  2     (375,   0):  3     (500,   0):  4     (625,   0):  5
(  0, 125):  6     (125, 125):  7     (250, 125):  8     (375, 125):  9     (500, 125): 10     (625, 125): 11
(  0, 250): 12     (125, 250): 13     (250, 250): 14     (375, 250): 15     (500, 250): 16        (625, 250): 17
(  0, 375): 18     (125, 375): 19     (250, 375): 20     (375, 375): 21     (500, 375): 22     (625, 375): 23

(x,y):我

该计划的第一行必须是:     因为我在范围24:

我只被允许使用i。循环必须没有。我可以使用2张照片和1张。该程序的最大长度为4行。

我是python中的总菜鸟。这对我来说太过分了。这是一个我正在潜伏的编程课程,试图学习一些有用的东西。这是他们上周的作业。

感谢任何帮助。特别是如果你可以简单地呈现给我。 :)

2 个答案:

答案 0 :(得分:1)

(  0,   0):  0  (125,   0):  1  (250,   0):  2  (375,   0):  3  (500,   0):  4  (625,   0):  5  
(  0, 125):  6  (125, 125):  7  (250, 125):  8  (375, 125):  9  (500, 125): 10  (625, 125): 11 
(  0, 250): 12  (125, 250): 13  (250, 250): 14  (375, 250): 15  (500, 250): 16  (625, 250): 17
(  0, 375): 18  (125, 375): 19  (250, 375): 20  (375, 375): 21  (500, 375): 22  (625, 375): 23

看起来就是您要求的输出。

坚持你的1 for for循环,if语句和< = 4行的要求,我想出了:

for i in range(24):
    if i%6==0 :
        print ''.join(["(%3s, %3s):%3s  "%(x*125, i/6*125 ,x+i) for x in range(6)])

既然你说你是一个Python菜鸟,你应该知道这个使用列表理解,我认为在这些链接中有很好的解释:

http://www.blog.pythonlibrary.org/2012/07/28/python-201-list-comprehensions/

How to read aloud Python List Comprehensions?

编辑:完全符合描述的代码:1 for循环,1 if语句,2 print语句

for i in range(24):
    if i%6==0 and i!=0:
        print ''
    print "(%3s, %3s):%3s "%((i%6)*125, i/6*125 ,i) ,

答案 1 :(得分:0)

你在这里:

>>> print "\n".join(map("\t".join, [["(%s, %s): %s" % (x*125, y*125, y*6+x) for x in range(6)] for y in range(4)]))
(0, 0): 0       (125, 0): 1     (250, 0): 2     (375, 0): 3     (500, 0): 4     (625, 0): 5
(0, 125): 6     (125, 125): 7   (250, 125): 8   (375, 125): 9   (500, 125): 10  (625, 125): 11
(0, 250): 12    (125, 250): 13  (250, 250): 14  (375, 250): 15  (500, 250): 16  (625, 250): 17
(0, 375): 18    (125, 375): 19  (250, 375): 20  (375, 375): 21  (500, 375): 22  (625, 375): 23

有点乱......但结果看起来就像你需要的那样。

P.S。经扩展

>>> node = lambda x,y: "(%s, %s): %s" % (x*125, y*125, y*6+x)
>>> coords = [[node(x, y) for x in range(6)] for y in range(4)]
>>> print "\n".join(map("\t".join, coords))