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])


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


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


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}")



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. ↘️")


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.