规则很简单,就是一副牌,两人各抽4张。
import random
print("Sam's Casino")
cards = ['1','2','3','4','5','6','7','8','9','10','J',
'Q','K','1','2','3','4','5','6','7','8','9','10','J',
'Q','K','1','2','3','4','5','6','7','8','9','10','J',
'Q','K','1','2','3','4','5','6','7','8','9','10','J',
'Q','K']
random.shuffle(cards)
print(cards)
hand1 = []
hand2 = []
count = 0
def deal(cards):
for card in cards:
if count < 4:
hand1.append(card)
count += 1
if count > 3 and count < 8:
hand2.append(card)
count += 1
deal(cards)
print('hand1',hand1)
print('hand2',hand2)
input('>')
UnboundLocalError: local variable 'count' referenced before assignment
很多人肯定很奇怪,大家都是全局变量,为什么hand1,hand2 没问题,count就有问题呢?原因很简单,hand1和hand2没有被引用,而是被赋值。
import random
print("Sam's Casino")
cards = ['1','2','3','4','5','6','7','8','9','10','J',
'Q','K','1','2','3','4','5','6','7','8','9','10','J',
'Q','K','1','2','3','4','5','6','7','8','9','10','J',
'Q','K','1','2','3','4','5','6','7','8','9','10','J',
'Q','K']
random.shuffle(cards)
print(cards)
hand1 = []
hand2 = []
count = 0
def deal(cards):
global count
for card in cards:
if count < 4:
hand1.append(card)
count += 1
if count > 3 and count < 8:
hand2.append(card)
count += 1
deal(cards)
print('hand1',hand1)
print('hand2',hand2)
input('>')
输出
这才改写了count,否则for循环内部处理是局部变量,全局和其他函数都无关。但是光声明也不行,如果删掉count = 0 只保留global count, 那么