0

可能重复:
如何在范围内打印?

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

(  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): 我

程序的第一行必须是: for i in range 24:

我只被允许使用 i。不能再有 for 循环了。我可以使用 2 张打印件和一张 if。程序的最大长度为 4 行。

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

将不胜感激任何帮助。特别是如果您可以简单地向我展示它。:)

4

2 回答 2

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 循环、一个 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-理解/

如何大声朗读 Python 列表理解?

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

for i in range(24):
    if i%6==0 and i!=0:
        print ''
    print "(%3s, %3s):%3s "%((i%6)*125, i/6*125 ,i) ,
于 2012-12-16T20:31:55.077 回答
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

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

PS 展开

>>> 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))
于 2012-12-16T19:59:58.070 回答