Всегда приближайтесь к своей логике c на общем уровне (например, используя переменные для измерений). это позволит вам по-настоящему понять процесс и избежать ошибок и повторений:
rows,cols = 4,3
height,width = 2,4
frame = "+" + "+".join(["-"*width]*cols) + "+" # +---+---... Frame line
content = frame.replace("+","|").replace("-","a") # |aaa|aaa... Content line
for _ in range(rows):
print(frame) # print a frame line before each row's content block
for _ in range(height):
print(content) # print a content lines for a row's height
print(frame) # print a closing frame line at the end
вывод:
+----+----+----+
|aaaa|aaaa|aaaa|
|aaaa|aaaa|aaaa|
+----+----+----+
|aaaa|aaaa|aaaa|
|aaaa|aaaa|aaaa|
+----+----+----+
|aaaa|aaaa|aaaa|
|aaaa|aaaa|aaaa|
+----+----+----+
|aaaa|aaaa|aaaa|
|aaaa|aaaa|aaaa|
+----+----+----+