So I creating the simple small project of Tic Tac Toe in python
Tic Tac Toe board in text with a, b, and c identifying columns and 0, 1, and 2 identifying rows
(Same board in text form):
a b c
0 - | - | -
-----------
1 - | - | -
-----------
2 - | - | -
When I try to do this with just loops I get artifacts like "|" at end of rows and "---------" below row 2 when it's only supposed to be below rows 0 and 1. I was able to circumvent this with if statements, but I wonder if there is a better way.
I originally had
def print_board():
print(" a b c")
print("")
print("0 " + coords[columns[0]][rows[0]] + " | " + coords[columns[1]][rows[0]] + " | " + coords[columns[2]][rows[0]])
print(" -------------")
print("1 " + coords[columns[0]][rows[1]] + " | " + coords[columns[1]][rows[1]] + " | " + coords[columns[2]][rows[1]])
print(" -------------")
print("2 " + coords[columns[0]][rows[2]] + " | " + coords[columns[1]][rows[2]] + " | " + coords[columns[2]][rows[2]])
This is the best design for this I could come up with, and it works.
def print_board():
print(" a b c", end="\n\n")
for r in range(3):
print(str(r) + " ", end="")
for c in range(3):
print(coords[columns[c]][rows[r]], end="")
if c != 2:
print(" | ", end="")
print("\n")
if r != 2:
print(" -------------")
However, I feel like this could be better. Specifically I want to get rid of the if statements but get the same result. So I am wondering if I can skip parts of a loop on the last iteration?
You can use the join function (https://docs.python.org/3/library/stdtypes.html#str.join) to insert separators only between the elements of a list, in this way you can avoid all the if statements:
Example output: