设计要求:
模拟抽扑克牌比大小。
已知扑克牌的花色和牌面列表如下:
#扑克牌的花色等级,♦<♣<♥<♠
suits=['♦','♣','♥','♠']
#扑克牌的牌面,3最小,J=11,Q=12,K=13,2最大,A仅次于2
faces=['3','4','5','6','7','8','9','10','J','Q','K','A','2']
其它要求:
1.用列表生成式的方法快速生成扑克牌。
2.利用random库的相关函数完成模拟洗牌。
3.因为待选的扑克牌有52张,因此用户或电脑抽中的牌可以用“1~52”之中的某个数字来表示。
题主要的代码如下
import random
#扑克牌的花色等级,♦<♣<♥<♠
suits=['♦','♣','♥','♠']
#扑克牌的牌面,3最小,J=11,Q=12,K=13,2最大,A仅次于2
faces=['3','4','5','6','7','8','9','10','J','Q','K','A','2']
pokers=[s+f for s in suits for f in faces]
random.shuffle(pokers)
user=int(input('请输入一个1~52的数字'))
if user>52:#超过直接选最后一张牌
user=52
user=pokers[user-1]
print(f'用户选择的牌:{user}')
while True:
pc=pokers[random.randint(0,51)]
if pc!=user:
break
print(f'电脑选择的牌:{pc}')
if user[1:]==pc[1:]:#牌面一样
if suits.index(user[0])>suits.index(pc[0]):
print('你赢了!')
else:
print('你输了……')
pass
else:
if faces.index(user[1:])>faces.index(pc[1:]):
print('你赢了!')
else:
print('你输了……')
有一个问题,怎么自主选择?如果是指定牌的话,那选择黑桃2不是稳赢了?
import random
# 扑克牌的花色等级, ♦<♣<♥<♠
suits = ['♦', '♣', '♥', '♠']
# 扑克牌的牌面, 3最小, J=11, Q=12, K=13, 2最大, A仅次于2
faces = ['3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A', '2']
puke = [s+f for s in suits for f in faces]
puke = random.sample(puke, 52)
i = int(input("请输入选择第几张牌:"))
usel = puke[i - 1]
puke.remove(usel)
csel = random.choice(puke)
print("你选择的牌是%s,电脑选择的牌是%s," % (usel, csel), end='')
us, uf = usel[0], usel[1]
cs, cf = csel[0], csel[1]
if faces.index(uf) > faces.index(cf):
print("你赢了!")
elif faces.index(uf) < faces.index(cf):
print("你输了!")
else:
if suits.index(us) > suits.index(cs):
print("你赢了!")
else:
print("你输了!")
你题目的解答代码如下:
import random
#扑克牌的花色等级,♦<♣<♥<♠
suits=['♦','♣','♥','♠']
#扑克牌的牌面,3最小,J=11,Q=12,K=13,2最大,A仅次于2
faces=['3','4','5','6','7','8','9','10','J','Q','K','A','2']
li = [x+y for y in faces for x in suits]
random.shuffle(li)
p=int(input('请输入1`52的数字:'))
user=li[p-1]
print('用户选择的牌:',user)
cpu = random.choice(li)
while cpu==user:
cpu = random.choice(li)
print('电脑选择的牌:',cpu)
ud = suits.index(user[0]) + faces.index(user[1:]) * 4
cd = suits.index(cpu[0]) + faces.index(cpu[1:]) * 4
if ud > cd:
print('你赢了!')
else:
print('你输了……')
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!