设为首页 收藏本站
查看: 1420|回复: 0

[经验分享] Python:CPU和人的21点对决

[复制链接]

尚未签到

发表于 2018-8-6 07:15:24 | 显示全部楼层 |阅读模式
# coding:utf-8  
# __author__: 神仙也考试
  
# __author time__: 2017/8/8
  
import random
  
print """
  
需求:
  
    1、初始CPU和人各随机拥有2张牌;
  
    2、各计算得出初始2张牌的总数;
  
    3、当拥有的牌数小于16点则自动新增一张牌;
  
    4、新增的牌进入计算总和;
  
    5、人的计算中:当大于等16点时候进行选择是否加牌;当加的牌大于等于22点,则自动停止;
  
    6、CPU的计算中:当小于16点则自动新增牌并计算;当大于16点则自动停止;
  
    7、最后得出的值进行比较
  
    8、比较规则:
  
    【1】都大于等于22点,则和局;
  
    【2】都小于22点时,若两个数相等,则和局;
  
    【3】点数大者为赢,点数小者为输。
  
"""
  
print "*************** 开始游戏 ***************"
  
# 初始化4个随机1-10的整数
  
number1 = random.randint(1, 10)
  
number2 = random.randint(1, 10)
  
number3 = random.randint(1, 10)
  
number4 = random.randint(1, 10)
  
# 初始化CPU和人的随机列表
  
man_numbers = [number1, number2]
  
cpu_numbers = [number3, number4]
  
# 初始化CPU和人的总数
  
man_count = 0
  
cpu_count = 0
  
# 初始化循环标识
  
flag_cpu = 1
  
flag_man = 1
  
# **************************************
  
# ############# 定义人行为 #############
  
# **************************************
  
# 计算初始人得到的总数
  
for i in man_numbers:
  
    man_count = man_count + i
  
print "你拥有的牌是 %s " % man_numbers
  
print "你的牌数总计点数是 %s" % man_count
  
if man_count < 16:  # 小于16则继续自动添加牌到16点以上
  
    print "拥有的牌数小于16点,自动添加新牌到16点以上..."
  
    while flag_man == 1:
  
        man_random1 = random.randint(1, 10)     # 获得随机值,保证每次取到的都是一个新的随机值
  
        man_numbers.append(man_random1)    # 把获得的随机值添加到列表中
  
        man_count = man_count + man_numbers[-1]   # 始终加上列表的最后一个值
  
        if man_count >= 16 and man_count <22:
  
            while flag_man == 1:
  
                print "你拥有的牌数点数大于16点,总数为 %s,是否需要继续添加新牌?" % man_count
  
                print "任意键表示继续要牌,输入大写Q或小写q,表示退出!"
  
                get_key = raw_input("请输入:\n")
  
                if get_key == 'Q' or get_key == 'q':
  
                    flag_man = 0
  
                else:
  
                    man_random2 = random.randint(1, 10)   # 获得随机值,保证每次取到的都是一个新的随机值
  
                    man_numbers.append(man_random2)   # 把获得的随机值添加到列表中
  
                    man_count = man_count + man_numbers[-1]  # 始终加上列表的最后一个值
  
                    if man_count >= 22:
  
                        flag_man = 0
  
        if man_count >= 22:
  
            flag_man = 0
  
    print """******************************"""
  
    print "当前你的牌数总数是 %s" % man_count
  
    print "当前你拥有的牌是 %s" % man_numbers
  
else:
  
    while flag_man == 1:
  
        print "你拥有的牌数点数大于16点,总数为 %s,是否需要继续添加新牌?" % man_count
  
        print "任意键表示继续要牌,输入大写Q或小写q,表示退出!"
  
        get_key = raw_input("请输入:\n")
  
        if get_key == 'Q' or get_key == 'q':
  
            flag_man = 0
  
        else:
  
            man_random3 = random.randint(1, 10)  # 获得随机值,保证每次取到的都是一个新的随机值
  
            man_numbers.append(man_random3)   # 把获得的随机值添加到列表中
  
            man_count = man_count + man_numbers[-1]  # 始终加上列表的最后一个值
  
            if man_count >= 22:
  
                flag_man = 0
  
    print """******************************"""
  
    print "当前你的牌数总数是 %s" % man_count
  
    print "当前你拥有的牌是 %s" % man_numbers
  
# **************************************
  
# ############# 定义CPU行为 ############
  
# **************************************
  
# 计算初始CPU得到的总数
  
for j in cpu_numbers:
  
    cpu_count = cpu_count + j
  
if cpu_count < 16:
  
    while flag_cpu == 1:
  
        # CPU获取随机值
  
        cpu_random1 = random.randint(1, 10)
  
        cpu_numbers.append(cpu_random1)
  
        cpu_count = cpu_count + cpu_numbers[-1]
  
        if cpu_count >= 16:
  
            flag_cpu = 0
  
    print """******************************"""
  
    print "CPU的总和是 %s" % cpu_count
  
    print "当前CPU拥有的牌是 %s" % cpu_numbers
  
else:
  
    print """******************************"""
  
    print "CPU的总和是 %s" % cpu_count
  
    print "当前CPU拥有的牌是 %s" % cpu_numbers
  
# **************************************
  
# ######### 比较CPU和人的值 ###########
  
# **************************************
  
print """******************************"""
  
if man_count >= 22 and cpu_count < 22:
  
    print "CPU赢了..."
  
    print "你的总数大于22,你输了..."
  
elif man_count < 22 and cpu_count >= 22:
  
    print "你赢了..."
  
    print "CPU的总数大于22,CPU输了..."
  
elif man_count <= 21 and cpu_count <= 21:
  
    if man_count > cpu_count:
  
        print "你赢了..."
  
        print "你的总数为:%s" % man_count
  
        print "CPU输了..."
  
        print "CPU的总数为:%s" % cpu_count
  
    elif man_count < cpu_count:
  
        print "CPU赢了..."
  
        print "CPU的总数为:%s" % cpu_count
  
        print "你输了..."
  
        print "你的总数为:%s" % man_count
  
    else:
  
        print "和局..."
  
        print "你和CPU的总数都为:%s" % man_count
  
else:
  
    print "和局..."
  
    print "你和CPU的总数都大于22..."
  
print "*************** 游戏结束 ***************"

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-547260-1-1.html 上篇帖子: python之并发编程 下篇帖子: python—subprocess、glob和shlex模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表