#练习一个关于纸牌21点的游戏#首先先熟悉一下规则,先练习简化版的21点#牌面共52*4张(剔除2张JOKER),有1个玩家(player)和1个电脑(com),先掷骰子(dice)决定谁当庄家(dealer)#第一轮庄家先给闲家发两张明牌,给自己发一张明牌和暗牌,闲家决定拿牌(hit)或者停牌(stand)#如果玩家点数超过21,就算输-爆牌(bust),庄家赢#玩家停牌后,由庄家翻开暗牌,并持续拿牌直至点数不小于17(若有A,按最大而尽量不爆计算),庄家爆则庄家输,否则比点数大小import random,time
#需要一个函数来生成扑克牌列表defnew_poker():
color =['♥','♦','♣','♠']# 将花色放在一个列表中待用
num =list(range(2,11))
num.extend('JQKA')# 通过两行代码,生成一个 2-A 的数字列表。return[x +str(y)for x in color for y in num]*4#单张牌的点数defscore(card):if card[1]in'JQK':return10elif card[1]in['2','3','4','5','6','7','8','9']:
bscore =int(card[1])return bscore
eliflen(card)==3:return10else:return1#计算总点数函数deftotal_score(card):#card的样式['♠A', '♦9','♣Q']
sum_score =0
a_number =0#要把A剔除单独判断,其他的先把分数相加,计算A的数量#什么情况A才算作11?只有其他牌的总数sum_score小于等于10for i in card:if i[1]=='A':
a_number +=1continueelse:
sum_score += score(i)if a_number >0and sum_score +a_number -1<=10:#2张A 2张4
sum_score = sum_score + a_number -1+11elif a_number >0