一个电脑与人比大小的小程序

设计要求:
模拟抽扑克牌比大小。
已知扑克牌的花色和牌面列表如下:

#扑克牌的花色等级,♦<♣<♥<♠
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. 利用列表suits和faces生成一副有52张牌的扑克牌(排除大小王)。
  2. 每张扑克牌由花色和牌面两种字符串组合而成,如“♠7”“♣K”。
  3. 能够模拟洗牌(即打乱牌的次序),以便抽牌游戏能够顺利进行。
  4. 用户自主选择一张牌,电脑则随机抽取一张牌(不能和用户的牌重复)。
  5. 先根据牌面比大小,若牌面相同,再根据花色(黑桃>红桃>梅花>方块)判断大小。(注意:牌面大小优先于花色等级)
  6. 若用户的牌比电脑大,则输出提示“你赢了!”,反之则输出提示“你输了……”

其它要求:
1.用列表生成式的方法快速生成扑克牌。
2.利用random库的相关函数完成模拟洗牌。
3.因为待选的扑克牌有52张,因此用户或电脑抽中的牌可以用“1~52”之中的某个数字来表示。

题主要的代码如下

img

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('你输了……')
    
 

img

有一个问题,怎么自主选择?如果是指定牌的话,那选择黑桃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("你输了!")

img

你题目的解答代码如下:

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('你输了……')

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632