BEGINNER: Python Value error: invalid literal for int()
<p>Im making a simple blackjack program in python, but im getting a "ValueError: invalid literal for int() with base 10: ..." In order to get the total value of the player hands, after creating the card object, i try to get the rank of the card:
 rank1 = Card.Card.getRank(card1)</p>

<p>heres the classs method:</p>

<pre><code> def getRank(self):
      if self.__rank == ('J'):
          self.__rank = 10
          return self.__rank
      elif self.__rank == ('Q'):
          self.__rank = 10
          return self.__rank
      elif self.__rank ==  ('K'):
          self.__rank = 10
          return self.__rank
      elif self.__rank == ('A'):
          self.__rank = 11
          return self.__rank
      else:
          self.__rank = self.__rank
          return int(self.__rank)`
</code></pre>

<p>the only time it returns the ValueError: invalid literal for int() with base 10 is if the rank is a 'Q' or 'K', it returns 10 for the 'J' and 11 for 'A'.  I'm not getting why it returns an error for the 'Q' or 'K' since the code is the same for 'J' and 'A'... any help would be appreciated... if it helps, before that i had</p>

<p>heres the whole class</p>

<pre><code>#Card class

#Class card holds ranks and suits of deck
#

TEN = 10
FOUR = 4

class Card():
     #Create rank list
     RANK= ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]*FOUR


     #Create list with rank names
     rankNames=[None, 'Ace', 'Two', 'Three', 'Four', 'Five', 'Six', 
                'Seven', 'Eight', 'Nine', 'Ten', 'Jack', 'Queen', 'King']


     #Create suit list
     suitNames = ['CLUBS','DIAMONDS', 'HEARTS', 'SPADES']


     #Takes in rank, suit to create a deck of cards
     def __init__(self, rank, suit):
          self.__rank = rank
          self.__suit = suit


     #Returns the rank of card
     def getRank(self):
          if self.__rank == ('J'):
              print (repr(self.__rank))
              self.__rank = 10
              return self.__rank
          elif self.__rank == ('Q'):
              self.__rank = 10
              print (repr(self.__rank))
              return self.__rank
          elif self.__rank ==  ('K'):
              print (repr(self.__rank))
              self.__rank = 10
              return self.__rank
          elif self.__rank == ('A'):
              print (repr(self.__rank))
              self.__rank = 11
              return self.__rank
          else:
              self.rank = self.__rank
              print (repr(self.__rank))
              return int(self.__rank)   


     #Returns suit of card
     def getSuit(self):
          return self.__suit


     #Returns number of points the card is worth
     def BJVaue(self):
          if self.rank &lt; 10:
               return self.rank
          else:
               return TEN


     def __str__(self):
          return "%s of %s" % ([self.__rank], [self.__suit])
</code></pre>

<p>Heres where i create the card objects</p>

<pre><code>#Create a player hand                
player = []    
#Draw two cards for player add append
player.append(drawCard())
player.append(drawCard())

#Display players cards
print ("You currently have:\n" , player)

#Get the rank of the card
card1 = player[0]
card2 = player[1]

#Update players card status
print (card1)
print (card2)

#Get the total of the hand
rank1 = Card.Card.getRank(card1)
rank2 = Card.Card.getRank(card2)

#Get the ranks of players cards
playerRank = [rank1 , rank2]

#Get total of players hand
totalPlayer = getTotal(playerRank)

#Display players total
print ("Your current total is: ", totalPlayer)
</code></pre>

<p>the getTotal function</p>

<pre><code>def getTotal(rank):
    #Create and set accumulator to 0
    total = 0

    #for each value in the rank
    for value in rank:
        #add to total
        total += value

    #Return total
    return total
</code></pre>

<p>hope this helps</p>
