0
0

九九表を罫線入りで出力

Posted at

今回はこの問題。今までの集大成に入った感じがする

  • 九九表を、横の数値間では | (半角スペース 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}")
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0