#Pythonのprint関数で文字を表のように出力する方法
##はじめに
問題集などでよく見る(N M)と数字が与えられて、
出力結果をN行×M列の何らかの文字列で求められる際の解法。
例)星取表、九九の掛け算表など
##求めるもの
& + + + +
+ & + + +
+ + & + +
+ + + & +
+ + + + &
##入力
N M
##コードと解説
import numpy as np
#(N M)= (5 5)の形で入力があると仮定する
n, m = input().split()
n, m = int(n), int(m)
#N行M列の二次元配列を作成する(今回は全て0の配列とした)
hyou = np.zeros((n,m))
#星取表などで表示する文字列が複数ある場合は、「その部分の配列の数字」を1,2,3...と場合分けして入れ替えていく
#今回は行と列の数字が同じ際に1を入れるだけのシンプルなやつ
for i in range(n):
for j in range(m):
if i == j:
hyou[i][j] = 1
#行の終わりの要素示す数値(二次元配列の列の最後の要素の添え字)
x = m -1
for i in range(n):
#出力する行が終わりかどうかはj==xかどうかで判定する
#終わりでない場合はend=" "で空白スペース出力、終わりの場合はprint関数そのままで改行する
#数字ごとに出力する文字を替えていく
for j in range(m):
if hyou[i][j] == 0 and j != x:
print("+", end = " ")
elif hyou[i][j] == 1 and j != x:
print("&", end = " ")
if hyou[i][j] == 0 and j == x:
print("+")
elif hyou[i][j] == 1 and j == x:
print("&" )
##最後に
単純だけど意外と忘れがちな気がしたのでメモっておきます