At 11:36 AM 8/3/2005, Nathan Pinno wrote:
Here is the code then:

I'll throw in some suggestions. 1 - check for balanced parentheses. This has bit you before and you have several lines below with unbalanced parentheses. 2 - since Python indexes start at 0, take advantage of this. Use random.choice(range(13) and use the value to index the cards list.

#This is code for a blackjack game.
import random
cash = 0
new_cash = 100
cards = {"Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"}
card_types = {"Diamond", "Heart", "Spade", "Club"}
bet = 0
playertotal = 0
comp_total = 0
 
def menu():
    print "1. Bet and play."
    print "2. Cash out and Exit"
 
def option():
    return int(raw_input("Menu choice: "))
 
def card_choice():
    return random.choice(range(1,14)

This will return one number. The statement below (a,b = card_choice()) expects a tuple of 2 numbers to be returned.

 def types():
    return random.choice(range(1,5)
 
def player_cards():
    print a," of ",t1
    print b," of ",t2
 
print "Blackjack"
print "By Nathan Pinno"
while 1:
    menu()
    choice = option()
    if choice == 1:
        bet = int(raw_input("How much do you want to bet: ")

Something is wrong with the indentation below. Assuming the if and else following the while are indented more, you have a BIG problem. What will happen if bet > new_cash? Endless loop printing the Sorry... forever

            while 1:
            if bet > new_cash:
                  print "Sorry, you don't have that much cash! Your total cash is: $",new_cash
            else:
                  break
        a,b = card_choice()
        t1,t2 = types()
        if t1 == 1:
            t1 = card_types[0]
        elif t1 == 2:
            t1 = cardtypes[1]
        elif t1 == 3:
            t1 = cardtypes[2]
        else:
            t1 = cardtypes[3]

Why not just use the random integer as an index? If you use range(13) these if/elifs become
            t1 = cardtypes[t1]

        if a == 1:
            a = cards[0]
            playertotal = playertotal + 1
        elif a == 2:
            a = cards[1]
            playertotal = playertotal + 2

Same thing here.
What are the functions of b, t2, and playertotal? Especially for those of us who don't know blackjack.

Does that help?

Bob Gailer
phone 510 978 4454

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to