Make Three in a Row, Part 2
Current status: I’m working on exercise 41 of 52 in Learn Python the Hard Way, and continuing from Make Three in a Row, Part 1 (though I’m probably not far enough in the book for this yet…)
Replace list cause I’ve now learnt about dictionary 📚
moves = { }
for i in range(0,9):
moves[i] = input(">>> ")
print("Player X or 0 said:", moves[i])
print(moves) # let’s look at that dictionary!
If players didn’t need to take turns… 🤪
…then something like this would (sort of but not really) differentiate between two players:
moves = { }
for i in range(0,9,2):
moves[i] = input("X >>> ")
print("Player X:", moves[i])
for i in range(1,10,2):
moves[i] = input("0 >>> ")
print("Player 0:", moves[i])
print(moves)
Hmmmmmmmmmmmmm. Does this mean it’s easier to use a while
loop? Let’s try.
moves = { }
i = 1
while i <= 9:
moves[i] = input(">>> ")
print(f"Player X or 0 said: {moves[i]}")
i += 1
print(f"{moves}")
And this means I can finally differentiate between the players properly!
moves = { }
i = 1
while i <= 8:
moves[i] = input("X >>> ")
print(f"Player X: {moves[i]}")
i += 1
moves[i] = input("0 >>> ")
print(f"Player 0: {moves[i]}")
i += 1
print(f"{moves}")
That will only count 8 moves since the loop increments twice. But I’ll go with that for now since the last one is given anyway… So now I’ve got a script that does this:
- asks for input 8 times (but doesn’t care what you type)
- creates a dictionary with the user input
- has no clue about any rules or who wins
I couldn’t figure out how to inch forward from that 👆. Dictionary seems like a good idea, but for now; I’m simplifying back to a list — and playing around with using other Python parts I’ve learnt.
Define a function, and also…
append
is a method I can use on the list data type
len()
is a built-in function to return length
def game():
moves = [ ]
while len(moves) < 8: # Count number of items in the list 'moves'
playermove = input("X >>> ")
print(f"Player X: {playermove}")
moves.append(playermove) # Add item 'playermove' to end of list
playermove = input("0 >>> ")
print(f"Player 0: {playermove}")
moves.append(playermove)
print(f"{moves}")
game()
And what if I try to use some if statements?!
def game():
print("Lets play! Only integers between 1-9 plz:")
for playermove in range(0,9):
playermove = int(input(">>> "))
if playermove == 1:
print("Top left corner, all right. ↖️")
if playermove == 2:
print("Top center. ⬆️")
if playermove == 3:
print("Top right corner, nice. ↗️")
if playermove == 4:
print("Left center. ⬅️")
if playermove == 5:
print("Yeah that’s a good one. 🆒")
if playermove == 6:
print("Right center. ➡️")
if playermove == 7:
print("Bottom left corner, good job. ↙️")
if playermove == 8:
print("Bottom center. ⬇️")
if playermove == 9:
print("Bottom right corner, cool. ↘️")
game()
Well, that was fun. But back to the book! The current chapter is “Learning to Speak Object-Oriented”, and starting to get a grip on what objects and classes are will hopefully help me next.