こんばんは、pythonを勉強中の学生です。
ただいまpythonのloopを勉強中で、この表をloopを使ってcodingしたいのですが、さっぱりわかりませんでした。
1〜9のそれぞれの数字は
for i in range(1, 11)
print(i)
となることはわかるのですが、どうやってxをloopを使って表すのかがわかりませんでした。
もしわかる方がいらっしゃいましたら、教えていただきたいです。 よろしくお願いします。
1lst =[]23for i inrange(1,10):4 l =[]5for j inrange(1,10):6 l.append(str(i*j).rjust(2))7 lst.append(l)89for item in lst:10print(*item)1112# 1 2 3 4 5 6 7 8 913# 2 4 6 8 10 12 14 16 1814# 3 6 9 12 15 18 21 24 2715# 4 8 12 16 20 24 28 32 3616# 5 10 15 20 25 30 35 40 4517# 6 12 18 24 30 36 42 48 5418# 7 14 21 28 35 42 49 56 6319# 8 16 24 32 40 48 56 64 7220# 9 18 27 36 45 54 63 72 8121```6行目でrjust(2)で右寄せ
22二次元リストをつくり、
239,10行目でforで取り出し、*itemでカンマをなくす
24例えばこのように表示していたのなら、
25```Python
26lst =[]2728for i inrange(1,10):29 l =[]30for j inrange(1,10):31if i >=4and j >=3and i*j !=81:32 l.append(" x")33else:34 l.append(str(i*j).rjust(2))35 lst.append(l)3637for item in lst:38print(*item)3940# 1 2 3 4 5 6 7 8 941# 2 4 6 8 10 12 14 16 1842# 3 6 9 12 15 18 21 24 2743# 4 8 x x x x x x x44# 5 10 x x x x x x x45# 6 12 x x x x x x x46# 7 14 x x x x x x x47# 8 16 x x x x x x x48# 9 18 x x x x x x 8149````if i >=4and j >=3and i*j !=81:`とすればよい。
50***51追記
52```Python
53n_l =[f"{n} "for n inrange(1,10)]54print(f" | {''.join(n_l)}\n{'--- '*10}")55for n inrange(9):56print(f" {n+1} | {' '.join(lst[n])}")57```簡単に書くとこんな感じになります。
58フォントによって幅が違ったりして何とも言えませんが...59`f"・・・"`とかは[フォーマット済み文字列](https://note.nkmk.me/python-f-strings/)です。
60![参考](e7994963688128f1bb6dcdcea7b211b1.png)