项目需求

编写一个彩票竞猜小游戏,用户可以选择游戏类型(双色球或21点),双色球玩法要求用户从35个数字中选取6个普通号码和1个特殊号码,开奖后核查用户是否中奖。21点玩法,用户可根据抽取牌的点数决定是否继续发牌,停止发牌后与电脑比较点数大小,点数大者获胜,点数超过21点会直接爆点失败。

项目流程

1、创建彩票类,初始化属性时提示游戏玩法,并按照用户输入的指令调用彩票类的各方法

import randomclass Lottery:def __init__(self):self.ssq_list = [i for i in range(1, 36)]self.dot_21_list = [i for i in range(1, 14)] * 4self.ssq_computer_num_6 = []self.dot_21_computer_p_list = []self.dot_21_user_p_list = []while True:print('=' * 50)print('*********欢迎来到彩票竞猜系统,本彩票有两种玩法**********\n''-------------------玩法介绍-----------------------\n''双色球玩法:从35个号码中选取6个普通号码和1个特殊号码\n''21点玩法:抽取牌的点数加起来不超过21点,最大者获胜\n''------------------------------------------------\n''*********请按以下指令进行游玩**********\n''*********1、 双色球玩法  **********\n''*********2、 21点玩法   **********\n''*********3、 退出游戏   **********')self.model = input('请输入指令:')if self.model == '1':self.user_select_ssq()self.kai_jiang_ssq()elif self.model == '2':self.computer_dot_21()self.user_dot_21()self.kai_jiang_dot_21()elif self.model == '3':print('游戏结束,欢迎下次游玩!')breakelse:print('输入的指令错误,请重新输入!')

2、方法:双色球用户选号

    # 双色球用户选号def user_select_ssq(self):while True:select_num_str = input('请输入6个你选取的普通号码(用英文逗号隔开):')self.select_num = [int(i) for i in select_num_str.split(',')]self.select_sup_num = input('请输入1个你选取的特殊号码:')if len(self.select_num) == 6:for i in range(6):computer_ssq_6 = random.choice(self.ssq_list)self.ssq_computer_num_6.append(computer_ssq_6)self.ssq_list.remove(computer_ssq_6)self.computer_ssq_sup = random.choice(self.ssq_list)breakelse:print('选取的号码不是6个数字,请重新输入')

3、方法:21点电脑和用户决定是否继续发牌

    # 21点庄家决定是否继续发牌(超过16点会自动放弃继续发牌)def computer_dot_21(self):while True:computer_sum = 0computer_p = random.choice(self.dot_21_list)self.dot_21_computer_p_list.append(computer_p)self.dot_21_list.remove(computer_p)for c_item in self.dot_21_computer_p_list:computer_sum += c_itemif computer_sum > 16:break# 21点闲家决定是否继续发牌def user_dot_21(self):i = 1while i <= 10:user_p = random.choice(self.dot_21_list)self.dot_21_user_p_list.append(user_p)self.dot_21_list.remove(user_p)print('*' * 15, '第{}轮发牌,你的点数为{}'.format(i, user_p), '*' * 15)yes_or_no = input('是否继续发牌(y/n):')if yes_or_no == 'y' or yes_or_no == 'Y':i += 1else:breakelse:print('请求发牌次数超过游戏规则!!')

4、方法:双色球开奖和21点结果比较

    # 双色球开奖比较def kai_jiang_ssq(self):# self.user_select_ssq()print(f'今日开奖号码为{self.ssq_computer_num_6},特殊号码为{self.computer_ssq_sup}')z_j_num = [y for y in self.select_num if y in self.ssq_computer_num_6]z_j = len(z_j_num)
#以下条件判断特别繁琐,需要优化,思考如何优化??==>可否封装成函数?if z_j <= 2 and self.select_sup_num == self.computer_ssq_sup:print(f'你中了三等奖, 中奖普通号码为{z_j_num},特殊号码为{self.computer_ssq_sup}')elif z_j <= 4 and self.select_sup_num == self.computer_ssq_sup:print(f'你中了二等奖, 中奖普通号码为{z_j_num},特殊号码为{self.computer_ssq_sup}')elif z_j == 5 and self.select_sup_num == self.computer_ssq_sup:print(f'你中了一等奖, 中奖普通号码为{z_j_num},特殊号码为{self.computer_ssq_sup}')elif z_j == 6 and self.select_sup_num == self.computer_ssq_sup:print(f'你中了特等奖, 中奖普通号码为{z_j_num},特殊号码为{self.computer_ssq_sup}')elif z_j == 4 and self.select_sup_num != self.computer_ssq_sup:print(f'你中了三等奖, 中奖普通号码为{z_j_num},特殊号码为{self.computer_ssq_sup}')elif z_j == 5 and self.select_sup_num != self.computer_ssq_sup:print(f'你中了二等奖, 中奖普通号码为{z_j_num},特殊号码为{self.computer_ssq_sup}')elif z_j == 6 and self.select_sup_num != self.computer_ssq_sup:print(f'你中了一等奖, 中奖普通号码为{z_j_num},特殊号码为{self.computer_ssq_sup}')else:print(f'你只中了{z_j}个号码,未中奖,再接再厉!!')self.ssq_computer_num_6.clear()# 21点庄家和闲家开点比较def kai_jiang_dot_21(self):computer_total = 0user_total = 0for c_p in self.dot_21_computer_p_list:computer_total += c_pprint('庄家点数有:', self.dot_21_computer_p_list)print('闲家点数有:', self.dot_21_user_p_list)print('*' * 10, '庄家共计点数为{}'.format(computer_total), '*' * 10)for u_p in self.dot_21_user_p_list:user_total += u_pprint('*' * 10, '你共计点数为{}'.format(user_total), '*' * 10)if computer_total > 21 and user_total > 21:print('庄家和玩家点数都超21点,平局!!')elif computer_total > 21 >= user_total:print('庄家爆点,玩家胜!!')elif computer_total <= 21 < user_total:print('玩家爆点,庄家胜!!')else:if user_total > computer_total:print('你的点数大于庄家点数,玩家胜!!')elif computer_total == user_total:print('庄家和玩家点数相同,平局!!')else:print('你的点数小于庄家点数,庄家胜!!')self.dot_21_computer_p_list.clear()self.dot_21_user_p_list.clear()

5、运行主程序

if __name__ == '__main__':Lottery()

总结

1、锻炼面向对象编程时各流程的拆解思路和逻辑,并转化到类的各方法中

2、熟练掌握类中各方法之间的调用(self+方法名即可调用)

3、掌握类中某方法的变量在另一方法中的调用(self+变量名即可在其他方法中调用)

Python面向对象项目练习:彩票竞猜相关推荐

  1. Python面向对象项目练习:商品信息管理系统

    项目需求: 1.编写一个商品库存信息管理系统,用户根据操作菜单进行相关操作 2.该系统可对商品进行增.删.改.查.统计等基本操作. 编程思路: 1.创建商品类,用户根据要求输入商品名称.价格.数量.编 ...

  2. Python基础项目实践之:面向对象方法模拟简单计算器

    Python课堂基础实践系列: Python基础项目实践之:学生信息管理系统 python基础项目实践之: 学生通讯录管理系统 Python基础项目实践之:面向对象方法模拟简单计算器 Python基础 ...

  3. Python基础项目实践之:面向对象方法实现模拟银行管理系统

    Python课堂基础实践系列: Python基础项目实践之:学生信息管理系统 python基础项目实践之: 学生通讯录管理系统 Python基础项目实践之:面向对象方法模拟简单计算器 Python基础 ...

  4. Python实战项目:Python面向对象的微信应用开发

    Python面向对象的微信应用开发 一.案例背景 微信,是我们每个人身边交往和联系的工具.几乎每个人都在用着微信, 那我不免要问一下使用微信的朋友,你觉得你的微信里有多少个男性朋友,又有多少个女性朋友 ...

  5. 《世界杯彩票竞猜系统》设计报告

    目录 1 文档介绍    4 1.1 文档目的    4 1.2 文档范围    4 1.3 读者对象    4 1.4 参考文献    5 1.5 术语与缩写解释    5 2 系统环境说明     ...

  6. python开源项目贡献_通过为开源项目做贡献,我如何找到理想的工作

    python开源项目贡献 by Utsab Saha 由Utsab Saha 通过为开源项目做贡献,我如何找到理想的工作 (How I found my dream job by contributi ...

  7. python简单项目-4个Python经典项目实战,练手必备哦!

    Python是一种极具可读性和通用性的编程语言.Python这个名字的灵感来自于英国喜剧团体Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Python易于设置, ...

  8. python项目归纳总结-这4个Python实战项目,让你瞬间读懂Python!

    原标题:这4个Python实战项目,让你瞬间读懂Python! 来自:https://www.toutiao.com/a6593456515221291528/ Python 是一种极具可读性和通用性 ...

  9. python项目-这4个Python实战项目,让你瞬间读懂Python!

    前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...

最新文章

  1. 写给Python开发者:机器学习十大必备技能
  2. 数据库事务的ACID特性及含义
  3. Reactive Streams
  4. c# is和as的区别
  5. 获取个人借阅信息---图书馆client
  6. c语言中 %s 占几个字节,printf(%*s%s%*s,——)是什么?
  7. ureport2 mysql_Ureport2 安装,配置及问题详解
  8. css居中最佳方案,CSS 水平、垂直居中的5种最佳方案
  9. 防伪拉线 CCD 纠偏控制器
  10. 经纬度距离计算小工具_一个NB工具大合集打网站,总有一款是你需要的
  11. then在c语言中什么意思,通俗浅显的理解Promise中的then
  12. Android Studio开发:简单的登录注册界面
  13. 我对价值投资的思考(二)
  14. lsdyna如何设置set中的node_list_关于如何快速调教NGINX的几点总结
  15. 基于灰狼算法优化的lssvm回归预测-附代码
  16. 高级弥散模型:单指数、IVIM、DKI、SEM、FROC、CTRW
  17. 第六课:图层蒙版和快速蒙版
  18. 笨方法学习Python-习题36: 设计和调试
  19. c语言中gcd的用法,(转)gcd简单使用和介绍
  20. 【根据模板导出多sheet表格数据】

热门文章

  1. 三、C语言的数据类型—浮点型数据
  2. 中央电化教育馆教学资源库介绍
  3. EI会议论文的格式要求
  4. 钉钉小程序从搭建到引入地三方库到发布---企业内小程序
  5. HTML Purifier 4.3.0
  6. 瑞芯微PX30芯片参数和处理器介绍
  7. 四川省工程技术研究中心申报解读(条件认定流程各市奖励政策)
  8. IOT连接阿里云(一):调试MQTT通路
  9. java mysql连接池配置_Java数据库连接池的几种配置方法(以MySQL数据库为例)
  10. 面向Instagram信息采集的网络爬虫