Help me implement Blackjack in Python (updated)
Question: I am in the process of writing a blackjack code for python, and i was hoping
someone would be able to tell me how to make it:

  1. Recognize what someone has typed i.e. "Hit" or "Stand" and react accordingly.
  2. Calculate what the player's score is and whether it is an ace and a jack together, and automatically wins.

Ok, this is what i have gotten so far.

    
    
    "This imports the random object into Python, it allows it to generate random numbers."
    import random
    print("Hello and welcome to Sam's Black Jack!")
    input("Press <ENTER> to begin.")
    card1name = 1
    card2name = 1
    card3name = 1
    card4name = 1
    card5name = 1
    
    "This defines the values of the character cards."
    Ace = 1
    Jack = 10
    Queen = 10
    King = 10
    
    decision = 0
    
    "This generates the cards that are in your hand and the dealer's hand to begin with.
    card1 = int(random.randrange(12) + 1)
    card2 = int(random.randrange(12) + 1)
    card3 = int(random.randrange(12) + 1)
    card4 = int(random.randrange(12) + 1)
    card5 = int(random.randrange(12) + 1)
    
    total1 = card1 + card2
    
    "This makes the value of the Ace equal 11 if the total of your cards is under 21"
    if total1 <= 21:
        Ace = 11
    
    "This defines what the cards are"
    if card1 == 11:
        card1 = 10
        card1name = "Jack"
    if card1 == 12:
        card1 = 10
        card1name = "Queen"
    if card1 == 13:
        card1 = 10
        card1name = "King"
    if card1 == 1:
        card1 = Ace
        card1name = "Ace"
    
    elif card1:
        card1name = card1
    
    if card2 == 11:
        card2 = 10
        card2name = "Jack"
    if card2 == 12:
        card2 = 10
        card2name = "Queen"
    if card2 == 13:
        card2 = 10
        card2name = "King"
    if card2 == 1:
        card2 = Ace
        card2name = "Ace"
    
    elif card2:
        card2name = card2
    
    if card3 == 11:
        card3 = 10
        card3name = "Jack"
    if card3 == 12:
        card3 = 10
        card3name = "Queen"
    if card3 == 13:
        card3 = 10
        card3name= "King"
    if card3 == 1:
        card3 = Ace
        card3name = "Ace"
    
    elif card3:
        card3name = card3
    
    if card4 == 11:
        card4 = 10
        card4name = "Jack"
    if card4 == 12:
        card4 = 10
        card4name = "Queen"
    if card4 == 13:
        card4 = 10
        card4name = "King"
    if card4 == 1:
        card4 = Ace
        card4name = "Ace"
    
    elif card4:
        card4name = card4
    
    if card5 == 11:
        card5 = 10
        card5name = "Jack"
    if card5 == 12:
        card5 = 10
        card5name = "Queen"
    if card5 == 13:
        card5 = 10
        card5name = "King"
    if card5 == 1:
        card5 = Ace
        card5name = "Ace"
    
    elif card5:
        card5name = card5
    "This creates the totals of your hand"
    total2 = card1 + card2
    total3 = card1 + card2 + card3
    
    print("You hand is ", card1name," and", card2name)
    print("The total of your hand is", total2)
    decision = input("Do you want to HIT or STAND?").lower()
    
    "This is the decision for Hit or Stand"
    if 'hit' or 'HIT' or 'Hit' in decision:
        decision = 1
        print("You have selected HIT")
        print("Your hand is ", card1name,",",card2name," and", card3name)
        print("The total of your hand is", total3)
    
    if 'STAND' or 'stand' or 'Stand' in decision:
        print("You have selected STAND")
    
    "Dealer's Hand"
    dealer = card4 + card5
    print()
    print("The dealer's hand is", card4name," and", card5name)
    
    if decision == 1 and dealer < total3:
        print("Congratulations, you beat the dealer!")
    
    if decision == 1 and dealer > total3:
        print("Too bad, the dealer beat you!")
    

Ok, nevermind, i fixed it :D

I just changed the Hit and Stand to Yes or No

    
    
    if total2 < 21:
        decision = input("Do you want to hit? (Yes or No)")
    
        "This is the decision for Hit or Stand"
        if  decision == 'Yes':
            print("You have selected HIT")
            print("Your hand is ", card1name,",",card2name," and", card3name)
            print("The total of your hand is", total3)
    
        if decision == 'No':
                print("You have selected STAND")
    


Answer: This can get you started:

<http://docs.python.org/library/random.html>

<http://docs.python.org/library/strings.html>

<http://docs.python.org/library/stdtypes.html>

<http://docs.python.org/reference/index.html>

I see you have added some code; that's good.

Think about the parts of your program that will need to exist. You will need
some representation of "cards" -- cards have important features such as their
value, their suit, etc. Given a card, you should be able to tell what its
value is, whether it's a Jack or an Ace or a 2 of hearts. Read up on "classes"
in Python to get started with this.

You will also have a hand of cards -- the cards your dealer is currently
holding, and the cards your player is currently holding. A "hand" is a
collection of cards, which you (the programmer) can add new cards to (when a
card is dealt). You might want to do that using "lists" or "arrays" or
"classes" that contain those arrays. A hand also has a value, which is usually
the sum of card values, but as you know, Aces are special (they can be 1 or
11), so you'll need to treat that case correctly with some "if statements".

You will also have a deck; a deck is a special collection -- it has exactly 52
cards when it starts, and none of the cards are repeated (you could, of
course, be using several decks to play, but that's a complication you can
solve later). How do you populate a deck like that? Your program will want to
"deal" from the deck -- so you'll need a way to keep track of which cards have
been dealt to players.

That's a lot of stuff. Try writing down all the logic of what your program
needs to do in simple sentences, without worrying about Python. This is called
"pseudo-code". It's not a real program, it's just a plan for what exactly you
are going to do -- it's useful the way a map is useful. If you are going to a
place you've been to a 100 times, you don't need a map, but if you are driving
to some town you've never been to, you want to plan out your route first,
before getting behind the wheel..

Update your question with your pseudocode, and any attempts you have made (or
will have made) to translate the pseudocode to Python.

