2014-10-16 46 views
0

举例来说,如果我有一个函数,说输入的是一个数n(即5)如何使用嵌套循环在Python中打印数字矩阵?

我想5x5矩阵多数民众赞成这样的:

1 2 3 4 5 
2  10 
3  15 
4  20 
5 10 15 20 25 

以及如何我,如果我写这篇文章只是想要最外面的广场还是最内面的?

(这是蟒蛇)

我试了一下:

def f4(n): 
    for i in range(1, n): 
     for j in range(1, n): 
      print i*j, 
     print 
+0

你做了一些尝试自己吗? (1,n): – 2014-10-16 16:35:20

+0

是的,我正在处理的问题有点不同,但是我所做的是:对于范围(1,n)中的i,我为:def f4(n): \t: \t \t : \t \t \t print i * j, \t \t print – user3593822 2014-10-16 16:37:53

+0

但是,如果我只是想要外边框,我怎么能得到它? – user3593822 2014-10-16 16:38:30

回答

0

要控制在串间距,尽量str.format。例如:

>>> print '{:2} {:2} {:2} {:2} {:2}\n{:2} {:2} {:2} {:2} {:2}'.format(1, 2, 3, 4, 5, 10, 20, 30, 40, 50) 
1 2 3 4 5 
10 20 30 40 50 

另一个提示:它看起来像你有两种类型的行 - 上/下行和中间行。顶部/底部的行具有与中间行不同的相似格式,它们本身是相似的。

0

我的解决方案

% cat squar.py 
def squarpy(n, length=5): 
    fmt = "%%%dd"%(length) 
    sp = " "*length 
    square = " ".join([fmt%(i+1) for i in range(n)]) 
    for j in range(2,n): 
     row = " ".join([fmt%(i*j+j) if i==0 or i==n-1 else sp for i in range(n)]) 
     square = square +"\n" + row 
    tail = " ".join([fmt%(i*n+n) for i in range(n)]) 
    square = square + "\n" + tail 
    return square 

print squarpy(3) 
print 
print squarpy(5) 
% python2 squar.py 
    1  2  3 
    2   6 
    3  6  9 

    1  2  3  4  5 
    2      10 
    3      15 
    4      20 
    5 10 15 20 25 
% 
+0

@ user3593822(以及所有初学者阅读本评论...)代码太简单了,我忘记了解释它,但是如果你是python新手,有一些东西可能会让你成为初学者有点困惑...如果是这种情况,请问我会相应地编辑我的答案。 – gboffi 2014-10-16 17:28:06