Why doesn't newDeck.pop(0) have an attribute?

Viewed 22

I'm making a blackjack game in python, but the .pop(0) method I'm using to get rid of cards comes up with an attribute error, does anyone know why?

for i in range(2):
    drawnCard = newDeck.pop(0)
    playerList.append(drawnCard)
    if (drawnCard[:1] == "J" or drawnCard[:1] == "Q" or drawnCard[:1] == "K"):
        playerSum += 10
    elif (drawnCard[:1] == "A"):
        playerSum += 11
    elif ((drawnCard[:2]) == "10"):
        playerSum += 10
    else:
        playerSum += int(drawnCard[:1])

here's the full code

from random import shuffle

deck = ["A♠", "2♠", "3♠", "4♠", "5♠", "6♠", "7♠", "8♠", "9♠", "10♠", "J♠", "Q♠", "K♠", "A♥", "2♥", "3♥", "4♥", "5♥", "6♥", "7♥", "8♥", "9♥", "10♥", "J♥", "Q♥", "K♥", "A♣", "2♣", "3♣", "4♣", "5♣", "6♣", "7♣", "8♣", "9♣", "10♣", "J♣", "Q♣", "K♣", "A♦", "2♦", "3♦", "4♦", "5♦", "6♦", "7♦", "8♦", "9♦", "10♦", "J♦", "Q♦", "K♦"]


    
newDeck = shuffle(deck)

playerList = []
playerSum = 0
dealerList = []
dealerSum = 0

for i in range(2):
    drawnCard = newDeck.pop(0)
    playerList.append(drawnCard)
    if (drawnCard[:1] == "J" or drawnCard[:1] == "Q" or drawnCard[:1] == "K"):
        playerSum += 10
    elif (drawnCard[:1] == "A"):
        playerSum += 11
    elif ((drawnCard[:2]) == "10"):
        playerSum += 10
    else:
        playerSum += int(drawnCard[:1])

if len(playerList) == 2:
    if playerSum == 21:
        if dealerSum != 21:
            print ("Players Hand: ")
            print (playerList)
            print()
            print ("Total: ")
            print (playerSum)
            print("Congrats, you got a blackjack!!!")
            exit("Won Game")
        if dealerSum == 21:
            print ("Players Hand: ")
            print (playerList)
            print()
            print ("Total: ")
            print (playerSum)
            print("You both got a blackjack, it's a tie!")
            exit("Game Tied!")

playing = True
while(playing):
    print ("Players Hand: ")
    print (playerList)
    print()
    print ("Total: ")
    print (playerSum)
    
    user = input("Would you like to hit or stay? (h/s)\n")
    if (user == "h"):
        drawnCard = newDeck.pop(0)
        playerList.append(drawnCard)
        if (drawnCard[:1] == "J" or drawnCard[:1] == "Q" or drawnCard[:1] == "K"):
            playerSum += 10
        elif (drawnCard[:1] == "A"):
            playerSum += 11
        elif (drawnCard[:2] == "10"):
            playerSum += 10
        else:
            playerSum += int(drawnCard[:1]) 
            print ("Players Hand: ")
            print (playerList)
            print()
            print ("Total: ")
            print (playerSum)
            print("---------------------------------------------------------------------------------------------------------------------------------------------------------------------")
        if playerSum > 21:
            if 'A' in playerList:
                playerSum -= 10
            else:
                print ("Players Hand: ")
                print (playerList)
                print()
                print ("Total: ")
                print (playerSum)
                print("Wow you suck at blackjack ._.")
                exit("Game Lost!")
    
    elif (user == "s"):
        print("---------------------------------------------------------------------------------------------------------------------------------------------------------------------")
        playing = False

for i in range(2):
    drawnCard = newDeck.pop(0)
    dealerList.append(drawnCard)
    if (drawnCard[:1] == "J" or drawnCard[:1] == "Q" or drawnCard[:1] == "K"):
        dealerSum += 10
    elif (drawnCard[:1] == "A"):
        dealerSum += 11
    elif (drawnCard[:2] == "10"):
        dealerSum += 10
    else:
        dealerSum += int(drawnCard[:1])

playing = True
while (playing):
    if dealerSum >= 17:
        playing = False
    else:
        drawnCard = newDeck.pop(0)
        dealerList.append(drawnCard)
        if (drawnCard[:1] == "J" or drawnCard[:1] == "Q" or drawnCard[:1] == "K"):
            dealerSum += 10
        elif (drawnCard[:1] == "A"):
            dealerSum += 11
        elif ((drawnCard[:2]) == "10"):
            dealerSum += 10
        else:
            dealerSum += int(drawnCard[:1])
            print ("Dealers Hand: ")
            print (dealerList)
            print()
            print ("Total: ")
            print (dealerSum)
            print("---------------------------------------------------------------------------------------------------------------------------------------------------------------------")
        if dealerSum > 21:
            if "A" in dealerList:
                dealerSum -= 10
            else:
                print("Players hand: ")
                print(playerList)
                print()
                print("Total: ")
                print(playerSum)
                print("Dealers hand: ")
                print(dealerList)
                print()
                print("Total: ")
                print(dealerSum)
                print("The dealer busted! Congrats!")
                exit("Won Game! ")

if playing == False:
    if (dealerSum > playerSum):
        print("---------------------------------------------------------------------------------------------------------------------------------------------------------------------")
        print("Final results: ")
        print("Players hand: ")
        print(playerList)
        print()
        print("Total: ")
        print(playerSum)
        print("Dealers hand: ")
        print(dealerList)
        print()
        print("Total: ")
        print(dealerSum)
        print("You Lose!")
        exit("Game Lost!")
    elif (dealerSum < playerSum):
        print("---------------------------------------------------------------------------------------------------------------------------------------------------------------------")
        print("Final results: ")
        print("Players hand: ")
        print(playerList)
        print()
        print("Total: ")
        print(playerSum)
        print("Dealers hand: ")
        print(dealerList)
        print()
        print("Total: ")
        print(dealerSum)
        print("You Win!")
        exit("Game Won!")
    else:
        print("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------")
        print("Final results: ")
        print("Players hand: ")
        print(playerList)
        print()
        print("Total: ")
        print(playerSum)
        print("Dealers hand: ")
        print(dealerList)
        print()
        print("Total: ")
        print(dealerSum)
        print ("It's a tie!")
        exit("Game Tied!")
name-MacBook-Air:Python name$  /usr/bin/env /usr/local/bin/python3 /Users/name/.vscode/extensions/ms-python.python-2022.14.0/pythonFiles/lib/python/debugpy/adapter/../../debugpy/launcher 61743 -- /Users/name/Desktop/Code/Python/boop.py 
Traceback (most recent call last):
  File "/Users/name/Desktop/Code/Python/boop.py", line 15, in <module>
    drawnCard = newDeck.pop(0)
AttributeError: 'NoneType' object has no attribute 'pop'
name-MacBook-Air:Python name$
0 Answers
Related