Eliza
Eliza

Reputation: 821

My code doesn't run properly, what is wrong in there?

hand = ['A','Q']
points = 0
player_cards1 = ['2']
value1 = 2
player_cards2 = ['3']
value2 = 3
player_cards3 = ['4']
value3 = 4
player_cards4 = ['5']
value4 = 5
player_cards5 = ['6']
value5 = 6
player_cards6 = ['7']
value6 = 7
player_cards7 = ['8']
value7 = 8
player_cards8 = ['9']
value8 = 9
player_cards9 = ['T']
value9 = 10
player_cards10 = ['Q']
value10 = 10
player_cards11 = ['K']
value11 = 10
player_cards12 = ['J']
value12 = 10
ACE11 = ['A']
value13 = 11

for hand in player_cards1:
    flag = True
    if flag == True:
        points = points + value1
    for hand in ACE11:
        flag = True
        if flag == True:
            points = points + value13
        for hand in player_cards2:
            flag = True
            if flag == True:
                points = points + value2
            for hand in player_cards3:
                flag = True
                if flag == True:
                    points = points + value3
                for hand in player_cards4:
                    flag = True
                    if flag == True:
                        points = points + value4
                    for hand in player_cards5:
                        flag = True
                        if flag == True:
                            points = points + value5
                        for hand in player_cards6:
                            flag = True
                            if flag == True:
                                points = points + value6
                            for hand in player_cards7:
                                flag = True
                                if flag == True:
                                    points = points + value7
                                for hand in player_cards8:
                                    flag = True
                                    if flag == True:
                                        points = points + value8
                                    for hand in player_cards9:
                                        flag = True
                                        if flag == True:
                                            points = points + value9
                                        for hand in player_cards10:
                                            flag = True
                                            if flag == True:
                                                points = points + value10
                                            for hand in player_cards11:
                                                flag = True
                                                if flag == True:
                                                    points = points + value11
                                                for hand in player_cards12:
                                                    flag = True
                                                    if flag == True:
                                                        points = points + value12
                                                    print points

It ran fine in the first five blocks and then it just gives me to total value of the whole deck (95). How do I fix this? It's supposed to give me the value of the cards in the Hand only. What did I do wrong in here?

Upvotes: 0

Views: 174

Answers (2)

Mark Byers
Mark Byers

Reputation: 838056

Edited to make the answer more didactical.

Use a dict to store the scores for each card.

card_points = { 'A': 11, '2': 2, ... }

Then you can iterate over each card in hard, look up its value in the dictionary, and sum the scores to give the total.

You might want to look at the sum function which could be useful here.

Upvotes: 2

ernie
ernie

Reputation: 6356

Your line:

for hand in player_cards1:

Probably is not doing what you expect it to do. It looks like you think it's going to compare hand and player_cards1; instead what it does is create an iterator on player_cards1 that you access via the variable hand (meaning that hand is getting re-assigned, and will no longer be ['A', 'Q']). Here's a simpler example:

a = [1,2,3]
for item in a: //creates an iterator around a, with the variable item to refer to each list member
  print item

That three line program would output:

1
2
3

Instead, you probably want to iterate over the cards in the hand, e.g.:

for card in hand:
  //code here to look up the value of the card and add it to a running total

I'd also suggest rethinking the way you're tracking card values, as it's going to be very cumbersome . . . hint: there's only a few special cases where you can't use the card's face value.

Upvotes: 5

Related Questions