IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 学python第三天 学习日记 -> 正文阅读

[Python知识库]学python第三天 学习日记

1、文件

文件是一个存储在辅助存储器上的数据序列,包含任何数据内容

文件是数据的集合和抽象

文件包括2种:文本文件+二进制文件

文本文件一般由单一特定编码组成如UTF-8,内容统一展示和阅读

二进制文件直接由比特0和1组成,没有统一字符编码,只能当作字节流而非字符串

2、文件的打开关闭

python对文本文件和二进制文件采用统一的操作步骤,即打开-操作-关闭

打开

open.(文件名,打开方式)

open函数有2个参数:文件名和打开模式

文件名:文件的实际名字或者包含完整路径的名字

打开模式:用于控制使用何种方式打开文件

3、文件的7种打开方式

'r'只读模式
'w'覆盖写模式
'x'创建写模式
'a'追加写模式
'b'二进制文件模式
't'文本文件模式
'+'

与r/w/x/a一起使用,在原功能上增加读写模式

4、文件的读写

.readall()读入整个文件内容返回字符串或字节流
.read(size=-1)从文件中读入整个文件内容,如果给出参数读入前size长度的字符串或字节流
.readline(size=-1)从文件中读入一行内容,如果给出参数读入该行前size长度的字符串或字节流
.readlines(hint=-1)从文件中读入所有行以每行为元素形成一个列表,给出参数读入hint行

5、文件内容写入方法

.write(s)向文件写入一个字符串或字节流
.writelines将一个元素全为字符串的列表写入文件
.seek(offset)改变当前文件操作指针的位置,0为开头,1为当前位置,2为文件结尾
fname = input("请输入要写入的文件:")
fo = open(fname,"w+")
ls =["唐诗","宋词","元曲"]
fo.writelines(ls)
fo.seek(0)
for line in fo:
    print(line)
fo.close()

要注意的是如果没有seek方法,文件写入后当前文件操作指针在写入内容的后面,后面的代码从指针开始向后面读入并打印内容,被写入的内容却在指针前面,因此未能被打印出来。

6、PIL库

PIL库支持图像存储、显示和处理,能够处理几乎所有图片格式

主要2个功能:1)图像归档;2)图像处理

Image.open(filename)根据参数加载图像文件
Image.new(mode,size,color)根据给定参数创建一个新的图像
Image.open(StringIO.StringIO(buffer))从字符串中获取图像
Image.frobytes(mode,size,data)根据像素点data创建图像
Image.verify()对图像文件完整性进行检查返回异常

7、Image类的常用属性和方法

Image.format标识图像格式或来源
Image.mode图像的色彩模式
Image.size图像宽度和高度
Image.palette调色板属性
Image.seek(frame)跳转并返回图像中的指定帧
Image.tell()返回当前帧的序号

8、数据组织的维度

一维数据:对等关系的有序或无序数据构成,采用线性方式组织

二维数据/表格数据:由关联数据组成,采用表格方式组织

高维数据:由键值对类型的数据构成,采用对象方式组织,属于整合度更好的数据组织方式

10、二维数据的存储格式

二维数据由多条一维数据构成,可以看成是一维数据的组合形式

国际通用的存储格式为CSV格式

CSV格式:逗号分隔数值的存储格式,以.CSV为拓展名

11、二维数据的表示和读写

fo = open("price2016.csv","r")
ls = []
for line in fo:
    line = line.replace("\n","")
    ls.append(line.split(","))
print(ls)
fo.close()

逐行读取升级版:

fo = open("price2016.csv","r")
ls = []
for line in fo:
    line = line.replace("\n","")
    ls = line.split(",")
    lns = ""
    for s in ls:
        lns += "{}\t".format(s)
    print(lns)
fo.close()

12、HTML

超文本标记语言,专门为Web(网页)现实创建的语言,本质是键值对的标记

13、高维数据的格式化

JSON格式可以对高维数据进行表达和存储

JSON规定:

数据保存在键值对中

键值对之间由逗号分隔

大括号表示保存键值对数据组成的对象

方括号表示保存键值对数据组成的数组

14、json库

json库是处理JSON格式的python标准库

主要包括2类函数:操作类函数和解析类函数

操作类函数主要完成外部JSON格式和程序内部数据类型之间的转换功能

解析类函数主要用于解析键值对内容

15、json库解析

json库分为编码和解码的两个过程

编码是将python数据类型转换为JSON格式

解码是将JSON转换为python数据类型

json.dumps(obj,sort_keys=False,indent=None)将python的数据类型转换成JSON模式
json.loads(string)将JSON格式转换成python数据类型
json.dump(pbj,fp,sort_keys=False,indent=None)与dumps()功能一致,输出到文件fp
json.load(fp)与load()功能一致,从fp文件读入

16、设计方法

自顶向下:以一个总问题开始,识图把它表达成很多小问题组成的解决方案,再用相同的技术依次攻破每个小问题,最终问题变得非常小

制作一个程序,模拟两个选手A和B的某种竞技比赛

from random import random


def print_intro():
    print("这个程序模拟两个选手A和B的某种竞赛比赛")
    print("程序运行需要A和B的能力值(以0-1之间的小数表示)")


def get_inputs():
    a = eval(input("请输入选手A的能力值:"))
    b = eval(input("请输入选手B的能力值:"))
    n = eval(input("模拟比赛的场次:"))
    return a, b, n


def sim_n_games(n, prob_a, prob_b):
    wins_a, wins_b = 0, 0
    for i in range(n):
        score_a, score_b = sim_one_game(prob_a, prob_b)
        if score_a > score_b:
            wins_a += 1
        else:
            wins_b += 1
    return wins_a, wins_b


def game_over(a, b):
    return a == 15 or b == 15


def sim_one_game(pron_a, pron_b):
    score_a, score_b = 0, 0
    serving = "A"
    while not game_over(score_a, score_b):
        if serving == "A":
            if random() < pron_a:
                score_a += 1
            else:
                serving = "B"
        else:
            if random() < pron_b:
                score_b += 1
            else:
                serving = "A"
    return score_a, score_b


def print_summary(wins_a, wins_b):
    n = wins_a + wins_b
    print("竞技分析开始,共模拟{}场比赛".format(n))
    print("选手A获胜{}场比赛,占比{:0.1%}".format(wins_a, wins_a/n))
    print("选手B获胜{}场比赛,占比{:0.1%}".format(wins_b, wins_b/n))


def main():
    print_intro()
    prob_a, prob_b, n = get_inputs()
    wins_a, wins_b = sim_n_games(n, prob_a, prob_b)
    print_summary(wins_a, wins_b)


main()

17、自顶向上执行

每次只设计程序的一部分,先运行和测试每一个基本函数,再测试由基础函数组成的整体函数

18、pyinstaller库

在操作系统下将python源文件打包,通过对源文件打包,python程序可以在没有安装python的环境中运行

19、第三方库操作

pip install 安装

pip install 更新

pip uninstall? 卸载

pip list 查看第三方库列表

pip show 列出某个已经安装库的详细信息

pip download 下载第三方库的安装包

pip search? 联网搜索库名

如果源代码安装方式失败,可以直接下载第三方库文件安到pycodes目录中

whl是python库的一种打包格式,是一个压缩格式文件

20、科学计算

科学计算是为了解决科学和工程中数学问题而利用计算机进行的数值计算

21、numpy库

常用函数
np.array()从python列表和元组创造元组
np.arange()

创建一个由x到y以i为步长的数组

np.linspace()创建一个由x到y等分成n元素的数组
np.indices()创建一个m行n列的矩阵
np.random.rand()创建一个m行n列的随机数组
np.ones()创建一个m行n列全1的数组
np.empty()创建一个m行n列全0的数组
常用属性
ndarray.ndim

数组轴的个数,也被叫做秩

ndarray.shape数组在每个维度上大小的整数元组
ndarray.size数组元素的总个数
ndarray.dtype数组元素的数据类型,dtype类型可以用于创建数组
ndarray.itemsize数组中每个元素字节大小
ndarray.data包含实际数组元素的缓冲区地址
ndarray.flat数组元素的迭代器
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 16:42:32  更:2021-12-02 16:42:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:49:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码