2

A と B の 2 つの値を使用するよう促します。テーブル 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 に答える