As far as I understood, this shouldn't be possible. this is python 2.7
weirdness is in deal() at the end
################################################
import random
class card:
def __init__(self, suit, rank, name):
self.suit = suit
self.rank = rank
self.name = name
def makedeck():
#creates an ordered deck of card objects
#ranks are clumped (four 2's, four 3's etc)
suits = ['Spades', 'Diamonds', 'Clubs', 'Hearts']
ranks = []
for x in range(2, 15):
ranks.append(x)
names = ['Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine',
'Ten', 'Jack', 'Queen', 'King', 'Ace']
stack = []
for rank in ranks:
for suit in suits:
name = names[rank - 2]
stack.append(card(suit, rank, name))
return stack
def deal(quantity):
hand = []
for cards in range(0, quantity):
hand.append(deck.pop())
return hand
#################################################
#if you run this and do:
deck = makedeck()
hand = deal(5)
#and then finally
len(deck)
#we find that the global deck has been modified within the deal() function
without including
global deck
#within the deal() function
#it seems insane to me that it's possible to alter global variables within
functions without declaring global or passing the variable in as an argument.
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor