第30回【Python】二次元配列の入力 3、二次元配列の入力 4
現在取り組んでいるのは、paiza ラーニング問題集「配列メニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
Python をゼロから勉強してみよう、のコーナー 30 回目です。
思えば遠くに・・・30 回。もっと頻繁にやりたいと思いつつ、仕事との兼ね合いでなかなか時間を確保することができない、歯がゆい感じ。それでも、自分の血肉になる学習と思って、時間を確保していく所存です。
それでは、今日も頑張ってみようと思います。
二次元配列の入力 3
1 行目に整数 N が与えられます。
2 行目以降に N 行 5 列の配列が与えられます。上から i 番目、左から j 番目の整数は a_ij です。
全要素を各行ずつ半角スペース区切りで出力し、行の終わりで改行してください。
すべてのテストケースにおいて、以下の条件をみたします。
* N, a_ij は 1 以上 100 以下の整数
入力例
3
8 1 3 8 1
1 5 6 4 7
1 100 56 25 15
これは、ここまでの学習で得た知識を使えば簡単。
Python
N = int(input())
A = [list(map(int,input().split())) for _ in range(N)]
for a in A:
print(*a,sep=" ")
VBA
N = Cells(1, 1)
Dim L() As Long
ReDim L(1 To N, 1 To 5)
For i = 1 To N
S = Split(Cells(i + 1, 1), " ")
For j = 1 To 5
L(i, j) = Val(S(j - 1))
Next
Next
For i = 1 To UBound(L, 1)
For j = 1 To UBound(L, 2)
Debug.Print L(i, j);
Next
Debug.Print
Next
前回同様、要素数を変数で宣言しようとすると、Dim では「定数式が必要です」とエラーが発生。回避策としては、ReDim ステートメントで要素数の宣言をすること。
二次元配列の入力 4
1 行目に整数 N と整数 M が与えられます。
2 行目以降に N 行 M 列の配列が与えられます。上から i 番目、左から j 番目の整数は a_ij です。
全要素を各行ずつ半角スペース区切りで出力し、行の終わりで改行してください。
すべてのテストケースにおいて、以下の条件をみたします。
* N, M, a_ij は 1 以上 100 以下の整数
入力例
4 3
1 2 3
8 1 3
10 100 0
12 24 84
とうとう、行も列も標準入力から与えられるようになった。
Python
N,M = map(int,input().split())
A = [list(map(int,input().split())) for _ in range(N)]
for a in A:
print(*a,sep=" ")
与えられた「M」を利用していないので、厳密な正解かと言えば不安だけれど、まぁ、Python らしくて良いんじゃないだろうか。
VBA
NM = Split(Cells(1, 1), " ")
N = Val(NM(0))
M = Val(NM(1))
Dim L() As Long
ReDim L(1 To N, 1 To M)
For i = 1 To N
S = Split(Cells(i + 1, 1), " ")
For j = 1 To M
L(i, j) = Val(S(j - 1))
Next
Next
For i = 1 To UBound(L, 1)
For j = 1 To UBound(L, 2)
Debug.Print L(i, j);
Next
Debug.Print
Next
やっていることは変わらないのに、何か複雑なことをやっているように勘違いしてしまうようなコード。ちゃんとコメントを残しておかないと、引き継いだ人は読むのが面倒って感じてしまうかもしれない。
最後に
全然難しいことをしていないはずなのに、Python と VBA で大きな差が出てしまっている。まぁ、模範解答としてあげられている、C++ や Java でも、結構面倒くさそうに見えるコードとなっているので、Python の特異さが見え隠れするような学習になっているのではないか。
一番は、楽しい! です。楽しいから 30 回も続いていますし、まだまだ頑張れそうな気がしています。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません