Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python入门教程NO.6 用python做个简单的彩票号码统计分析工具

python入门教程NO.6 用python做个简单的彩票号码统计分析工具

作者头像
python鱼霸霸
发布于 2020-04-23 05:57:04
发布于 2020-04-23 05:57:04
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

本文涉及的python基础语法是:字典、集合及for循环

字典的定义

  • 字典也是一种可变的容器,它可以存储任意的类型对象。
  • 字典中的每个key: value键值对用冒号 : 分割,不同键值对之间用逗号 , 分割,整个字典包括在花括号{}中 ,示例如下
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dic = {key1 : value1, key2 : value2, key3 : value3}

python字典**的****必须不可变(可以是字符串、数字、元组,不能是列表),如果一个字典内部有相同的健,那么后面的健值会替换前面的同名健值**

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dic = {'a': 5, 'b': 8, 'c': 9 , 'a': 0}
print(dic['a'])
#输出:0

print(dic)
#输出:{'a': 0, 'b': 8, 'c': 9}

如果用不在字典里面的健获取数据,会发生如下的错误

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dic = {'a': 5, 'b': 8, 'c': 9 , 'a': 0}
print(dic['ae'])

#输出:
Traceback (most recent call last):
  File "D:/test/demo.py", line 2, in <module>
    print(dic['ae'])
KeyError: 'ae'

字典的增删改查

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dic = {'name': 'python攻城狮' ,  'gender': '男' ,  'hobby': '写代码'}
#通过赋值的方式,增加新的键值对
dic['age'] = 28   
print(dic)
#输出:{'name': 'python攻城狮', 'gender': '男', 'hobby': '写代码', 'age': 28}

#通过del方法,可以删除指定的键值对
dic = {'name': 'python攻城狮', 'gender': '男', 'hobby': '写代码', 'age': 28}
del dic['gender']
print(dic)
#输出:{'name': 'python攻城狮', 'hobby': '写代码', 'age': 28}

#可以直接通过赋值的方式修改指定健的值
dic = {'name': 'python攻城狮', 'hobby': '写代码', 'age': 28}
dic['age'] = 30
print(dic['age'])          #输出:30

#查找字典里面健的值
dic = {'name': 'python攻城狮', 'hobby': '写代码', 'age': 28}
print(dic['name'])          #输出:python攻城狮

#判断是否存在该健
dic = {'name': 'python攻城狮', 'hobby': '写代码', 'age': 28}
if 'interest' in dic:
  print('True')
else:
  print('False')
#输出:False     即表明该健不在字典dic中,if...else...条件判断语句,我们后面会讲到

字典的内置函数和方法

Python字典**包含了以下内置函数:**

函数

描述

cmp(dic1, dic2)

比较两个字典元素。

len(dic)

计算字典元素个数,即键的总数。

str(dic)

输出字典可打印的字符串表示。

type(variable)

返回输入的变量类型,如果变量是字典就返回字典类型。

Python字典**包含了以下内置方法:**

函数方法

描述

dic.clear()

删除字典内所有元素

dic.copy()

返回一个字典的浅复制

dic.fromkeys(seq, val)

创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值

dic.get(key, default=None)

返回指定键的值,如果值不在字典中返回default值

dic.has_key(key)

如果键在字典dict里返回true,否则返回false

dic.items()

以列表返回可遍历的(键, 值) 元组数组

dic.keys()

以列表返回一个字典所有的键

dic.setdefault(key, default=None)

和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

dic.update(dict2)

把字典dict2的键/值对更新到dict里

dic.values()

以列表返回字典中的所有值

pop(key,default)

删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

popitem()

返回并删除字典中的最后一对键和值。

集合

集合(set)是一个无序且不重复元素序列,可以使用**{}**或者**set()**来创建集合,但是要注意的是:

创建空集合必须使用set(),因为{}创建的是空字典

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#创建集合
a = {1, 3 , 5 , 8}

或

a = set('abcbacf')
print(a)    #输出:{'b', 'f', 'a', 'c'}      当我们想要去掉一段序列重复项时可以使用集合

python两个集合之间的运算:假定我们现在有两个集合,分别是a = {1, 5 ,3 , 2},b = { 4 , 6 , 3 , 2}

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#求a与b的交集(集合a和b中都包含了的元素)
print(a & b)      #输出:{2, 3}

#求a与b的并集(集合a或b中包含的所有元素)
print(a | b)      #输出: {1, 2, 3, 4, 5, 6}

#求a与b的差集(集合a(b)中包含而集合b(a)中不包含的元素)
print(a - b)     #输出:{1, 5}
print(b - a)     #输出:{4, 6}

#求a与b的对称差集(不同时包含于a和b的元素)
print(a ^ b)    #输出:{1, 4, 5, 6}

集合的函数方法

方法

描述

add()

为集合添加元素

clear()

移除集合中的所有元素

copy()

拷贝一个集合

difference()

返回多个集合的差集

difference_update()

移除集合中的元素,该元素在指定的集合也存在。

discard()

删除集合中指定的元素

intersection()

返回集合的交集

intersection_update()

返回集合的交集。

isdisjoint()

判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。

issubset()

判断指定集合是否为该方法参数集合的子集。

issuperset()

判断该方法的参数集合是否为指定集合的子集

pop()

随机移除元素

remove()

移除指定元素

symmetric_difference()

返回两个集合中不重复的元素集合。

symmetric_difference_update()

移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

union()

返回两个集合的并集

update()

给集合添加元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#1、添加元素
a = {0, 1}
a.add(8)
print(a)     #输出:{0, 1, 8}

#2、移除元素
a ={0, 1, 8}
a.remove(0)
print(a)     #输出:{1, 8}

#其他方法大家可以一一尝试一下,了解他们的用法

for循环

Python中for循环可以循环遍历任何序列的项目,例如字符串、列表、元组、字典等,语法结构为**for...in...:**

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#遍历一个字符串
a = 'hello攻城狮'
for i in a:    #这里的i可以使用任何变量代替
  print(i)

#输出:
h
e
l
l
o
攻
城
狮
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#遍历一个列表
lists = [1, 8 , 9 , 5]
for e in lists:
  print(e)

#输出:
1
8
9
5
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#遍历一个字典
dic = {'name': 'python攻城狮', 'hobby': '写代码', 'age': 28}
for i in dic:
  print(i)

#输出:直接遍历字典,会默认遍历字典的健
name
hobby
age

#遍历字典的值
dic = {'name': 'python攻城狮', 'hobby': '写代码', 'age': 28}
for i in dic.values():
  print(i)

#输出:
python攻城狮
写代码
28

#遍历字典的键值对
dic = {'name': 'python攻城狮', 'hobby': '写代码', 'age': 28}
for i in dic.items():
  print(i)

#输出:
('name', 'python攻城狮')
('hobby', '写代码')
('age', 28)

点此处查看Python中for循环的else、break、continue使用方法

用python做个彩票统计分析工具

  • 假如我们一共有5组连续的彩票开奖号码,他们分别是

期数

开奖号码

1

'1', '5' , '9' , '3' , '7'

2

'4', '2' , '1', '3' , '6'

3

'2', '3' , '8' , '4' , '9'

4

'9', '3' , '2' , '4' , '5'

5

'5', '3' , '6' , '8' , '1'

  • 我们需要统计一下这5期彩票中,每个号码出现的次数,并将次数作为号码的值,以字典的形式打印出来 请根据要求,开始你的编程吧!
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
cmake链接静态库-static-libstdc++问题
在嵌入式平台中,业务使用C语言开发,在交叉编译过程中会链接一个第三方的c++静态库,该第三放库使用了std,需要链接libstdc++的库,由于所在的嵌入式平台中没有libstdc++.so库,如果将libstdc++.so拷贝板子上,需要占用5MB空间,很浪费空间,准备使用libstdc++的静态库,在链接过程中出现如下问题;
llynne
2022/01/27
7.7K0
在全志V853上进行Opencv库的编译步骤
OpenCV(Open Source Computer Vision)是一个开放源代码的计算机视觉库,它提供了一系列函数和算法,用于处理图像和视频。通过使用OpenCV,您可以进行各种计算机视觉任务,例如图像处理、对象识别、目标追踪、人脸检测和机器学习等。它提供了底层图像处理功能,以及高级功能和模块,如特征提取、边缘检测、图像分割和物体测量等。
阿志小管家
2024/02/02
2840
关于 CMake 使用,看这一篇可能就够了
cmake 是一个跨平台、开源的构建系统。它是一个集软件构建、测试、打包于一身的软件。它使用与平台和编译器独立的配置文件来对软件编译过程进行控制。
字节流动
2021/10/18
6.4K0
腾讯云COS C++ SDK使用记录
目前有将服务器指定文件上传的需求, 手头正好有免费的COS资源使用, 于是使用COS作为存储工具
code-x
2022/08/21
8.7K1
cmake:动态链接库(so)中静态链接tcmalloc(gperftools2.4)暨静态链接libstdc++
将tcmalloc作为动态库使用,非常方便,网上有很多资料介绍了。tcmalloc.a也可以以静态链接的方式加入应用程序中,大概因为使用太方便,网上关于这方面的介绍都是一笔带过,但是如果要在动态 库(so)中静态编译tcmalloc,却是有所不同的。 我的项目中有一个so动态库,需要在java中通过jni调用,因为涉及频繁的内存分配操作所以这个so希望用tcmalloc管理内存池以提高系统运行效率,如果使用以动态库方式使用tcmalloc。那么在应用服务器(tomcat)启动的时候,需要先设置LD_PRELOAD参数指向tcmalloc.so,然后执行startup.sh启动tomcat。这样以来,不仅是我的so库,整java程序在运行过程中的所有向操作系统申请释放内存的过程都交给了tcmalloc管理了,其实挺好的。使用这种方案,我的so库代码不需要在编译时链接tcmalloc,什么都不用改变,就能使用tcmalloc。 但是凡事有利就有弊,这个方案带的成本就是在系统安装、维护时稍显复杂:需要在服务器上安装tcmalloc和libunwind(应用系统运行在64位操作系统下),还可能需要修改tomcat启动脚本以加入LD_PRELOAD参数,对工程实施人员的要求比较高。
10km
2022/05/07
2.3K0
披着CLion的外衣实则在讲CMake
至于 CLion 安装和基础设置,网上教程一大把,而且不是学习重点,根据自己需求配置即可。
字节星球Henry
2023/03/23
5.8K0
披着CLion的外衣实则在讲CMake
CMake 链接静态库 示例
lib-b 静态链接 lib-a, final静态链接lib-b 和 lib-a, 且final同样静态编译
code-x
2022/08/31
1.5K0
C/C++生态工具链——编译构建工具CMake/CMakeList初探
CMake的全称是Cross-platform Make。我第一次参与Linux C++开发时使用的工具是Make,而后开始切换到CMake,一开始以为CMake是和C语言有关,原来开头的C表示它可以跨平台。
Coder-ZZ
2023/02/23
3.2K0
C/C++生态工具链——编译构建工具CMake/CMakeList初探
【可测试性实践】C++ 单元测试&代码覆盖率统计
最近在调研C++工程怎么做单元测试和代码覆盖率统计,由于我们工程有使用Boost库,尝试使用Boost.Test来实现单元测试并通过Gcov和Lcov来生成代码覆盖率报告。本文记录完整的搭建测试Demo,希望能带来一定参考。
巫山老妖
2024/09/12
5250
【可测试性实践】C++ 单元测试&代码覆盖率统计
FLTK基于cmake编译以及使用(Windows、macOS以及Linux)
最近因为一些学习的原因,需要使用一款跨平台的轻量级的GUI+图像绘制 C/C++库。经过一番调研以后,最终从GTK+、FLTK中选出了FLTK,跨平台、够轻量。本文将在Windows、macOS以及Linux Debian三套操作系统环境,对FLTK进行编译,并搭建简单Demo。这其中也有少许的坑,也在此文进行记录。
w4ngzhen
2023/10/17
1.2K0
FLTK基于cmake编译以及使用(Windows、macOS以及Linux)
CMake使用总结
CMake意为cross-platform make,可用于管理c/c++工程。CMake解析配置文件CMakeLists.txt生成Makefile,相比直接用Makefile管理工程,CMake更灵活和简单。
bear_fish
2018/09/19
1.9K0
glog/gflags:linux下用cmake通过MinGW-w64交叉编译生成windows版本静态库
该文章介绍了如何通过在Ubuntu 16.04下交叉编译工具链来编译gflags库,以适应在Windows平台上的使用。首先,需要安装必要的工具和库,如CMake和MinGW。然后,使用CMake配置交叉编译环境,并编译gflags库。最后,使用Wine在Windows上运行生成的可执行文件。
10km
2018/01/03
4.1K0
CMake学习笔记
当多个人用不同的语言或者编译器开发一个项目,最终要输出一个可执行文件或者共享库(dll,so等等)这时候神器就出现了—–CMake!
CtrlX
2023/02/06
2.2K0
QT的cmake项目工程配置
QT的项目工程默认使用的是qmake,这本来也没什么问题。但是由于要用到vcpkg这个工具来管理第三方库,好像这个 vcpkg工具只能在cmake的项目中才能使用。
杨永贞
2022/04/13
3.8K0
linux下用cmake对caffe静态编译时-static-libstdc++参数无效的问题
该文章介绍了如何利用C++编写一个简单的CNN,用于图像分类。主要包括了网络架构、数据集准备、模型训练和测试等方面。同时,文章也提到了在遇到某些问题时,如何通过调整代码解决。最后,作者通过一个完整的静态编译脚本,使得CNN可以运行在Linux系统上。
10km
2018/01/03
7K0
CMake常用命令的一些整理
CMake 是什么我就不用再多说什么了,相信大家都有接触才会看一篇文章。对于不太熟悉的开发人员可以把这篇文章当个查找手册。
混说Linux
2022/11/18
1.8K0
CMake简介及使用实例
CMake是一个跨平台的建构系统的工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的构建文档makefile或者project文件,描述系统建构的过程。还能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CmakeLists.txt。CMake并不直接建构出最终的软件,而是产生标准的建构档(如 Unix的 Makefile或 Windows Visual C++的 projects/workspaces),然后再依一般的构建方式使用。
恋喵大鲤鱼
2018/08/03
2.8K0
【错误记录】Android NDK 错误排查记录 ( error: undefined reference to | Linking CXX shared library FAILED )
CMakeList.txt 构建脚本如下 : 跟着该构建脚本 , 逐步向下排查 ;
韩曙亮
2023/03/27
2.1K0
cmake基本使用
CMAKE_C_FLAGS:编译C文件时的选项,如-g;也可以通过add_definitions添加编译选项
aruba
2020/07/02
1.7K0
CMake和静态库顺序
C/C++程序的许多同学被静态库的依赖折腾,因为默认情况下要求被依赖的库放在依赖它的库后面,当一个程序或共享库依赖的静态库较多时,可能会陷入解决链接问题的坑中。如果对静态库不熟悉,需要结构nm等工具来解决顺序问题。
一见
2018/12/25
6.9K0
推荐阅读
相关推荐
cmake链接静态库-static-libstdc++问题
更多 >
交个朋友
加入架构与运维工作实战群
高并发系统设计 运维自动化实践
加入北京开发者交友群
结识首都开发者 拓展技术人脉
加入前端工作实战群
前端工程化实践 组件库开发经验分享
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验