今回はこの問題。今までの集大成に入った感じがする
- 九九表を、横の数値間では | (半角スペース 2 つとバーティカルライン)、縦の数値間では = で区切って出力
- 数値を出力する際は 2 けたになるよう半角スペース埋めで出力
- 縦の数値間で = を出力する際は、その上の行と文字数が等しくなるように出力
まずは九九表を罫線なしで出力してみる
for i in range(1,9+1):
for j in range(1,9+1):
if j != 9:
print(i * j, end=" ")
else:
print(i * j)
ひとまずここまではできた
次に、ヨコの数値間は、普通にendのほうに、|
に変えればいいはず
そして数字は2桁になるように半スペ梅でやる必要があるので
for i in range(1,9+1):
for j in range(1,9+1):
if j != 9:
print(f"{i * j:>2}", end=" | ")
else:
print(f"{i * j:>2}")
ここまでは予定通り。次の問題は縦の数値間で=
を出力するにはどうするかだが
必ず数字は半スペ含めて必ず2桁、そして半スペ+|+半スペで、5文字分なので
それをj-1分繰り返し、最後の9は二桁だけで2文字なので、
5x(j-1)+2 文字分を=出力すればよいので改行したあとにprintする
そして===は最後はやらないので場合分けをしておく
for i in range(1,9+1):
for j in range(1,9+1):
if j != 9:
print(f"{i * j:>2}", end=" | ")
else:
print(f"{i * j:>2}")
if i != 9:
count = 5 * (j - 1) + 2
print(f"{'=' * count}")
これで正解しました
最後のif(=をひくやつ)は、ロジック的に下の方が良いかもしれないです
(indentを2つあげる。)
for i in range(1,9+1):
for j in range(1,9+1):
if j != 9:
print(f"{i * j:>2}", end=" | ")
else:
print(f"{i * j:>2}")
if i != 9:
count = 5 * (j - 1) + 2
print(f"{'=' * count}")