2

提示使用两个值 A 和 B。生成表 AxB,其中每个值是 A 和 B 之间的所有数字的总和(如果 B < A,则为 B 和 A)。创建生成每一行的函数,以及打印所有行的函数。

我通过使用“if”运算符解决了这个问题,但我不知道如何使用函数来解决。我的方式:

a = input("Enter A:")
b = input("Enter B:")
k = 0
for i in range(1,a+1):
    for j in range(1,b+1):
        if i != j:
            k = 0
            if j < i:
                m = j
                ma = i
            else:
                m = i
                ma = j
            for m in range(m,ma+1):
                k += m
            print k,
        else:
            print i,
        print 

简单示例:

Enter A: 3  
Enter B: 4  

结果应该是:

1 3 6 10  
3 2 5 9  
6 5 3 7
4

1 回答 1

1

这可能是你想要的

from itertools import product
from math import log10
def foo(row, col):
    table = [[0]*col for _ in range(row)]
    for i, j in product(range(row), range(col)):
        table[i][j] =  sum(range(i+1, j+2)) if i < j else sum(range(j+1, i+2))
    _max = max(row, col)
    _max = int(log10(_max*(_max+1) / 2)) + 3
    formatstr = ("{{:^{}}}".format(_max))*col
    for row in table:
        print formatstr.format(*row)


>>> foo(3,4)
 1   3   6   10 
 3   2   5   9  
 6   5   3   7  
>>> foo(10,10)
 1   3   6   10  15  21  28  36  45  55 
 3   2   5   9   14  20  27  35  44  54 
 6   5   3   7   12  18  25  33  42  52 
 10  9   7   4   9   15  22  30  39  49 
 15  14  12  9   5   11  18  26  35  45 
 21  20  18  15  11  6   13  21  30  40 
 28  27  25  22  18  13  7   15  24  34 
 36  35  33  30  26  21  15  8   17  27 
 45  44  42  39  35  30  24  17  9   19 
 55  54  52  49  45  40  34  27  19  10
于 2013-10-11T18:28:53.207 回答