导图社区 《Python编程:从入门到实践》读书笔记-学习
《Python编程:从入门到实践》读书笔记,包括:一.Python的安装环境与使用;二.Python的数据类型及操作;三.Python的条件控制语句和循环语句使用方法;四.Python函数的定义与使用。
编辑于2022-11-06 21:32:25时间管理-读书笔记,通过学习和应用这些方法,读者可以更加高效地利用时间,重新掌控时间和工作量,实现更高效的工作和生活。
本书是法兰教授的最新作品之一,主要阐明了设计史的来源、设计史现在的状况以及设计史的未来发展可能等三个基本问题。通过对设计史学科理论与方法的讨论,本书旨在促进读者对什么是设计史以及如何写作一部好的设计史等问题的深入认识与反思。
《计算机组成原理》涵盖了计算机系统的基本组成、数据的表示与运算、存储系统、指令系统、中央处理器(CPU)、输入输出(I/O)系统以及外部设备等关键内容。通过这门课程的学习,学生可以深入了解计算机硬件系统的各个组成部分及其相互之间的连接方式,掌握计算机的基本工作原理。
社区模板帮助中心,点此进入>>
时间管理-读书笔记,通过学习和应用这些方法,读者可以更加高效地利用时间,重新掌控时间和工作量,实现更高效的工作和生活。
本书是法兰教授的最新作品之一,主要阐明了设计史的来源、设计史现在的状况以及设计史的未来发展可能等三个基本问题。通过对设计史学科理论与方法的讨论,本书旨在促进读者对什么是设计史以及如何写作一部好的设计史等问题的深入认识与反思。
《计算机组成原理》涵盖了计算机系统的基本组成、数据的表示与运算、存储系统、指令系统、中央处理器(CPU)、输入输出(I/O)系统以及外部设备等关键内容。通过这门课程的学习,学生可以深入了解计算机硬件系统的各个组成部分及其相互之间的连接方式,掌握计算机的基本工作原理。
《Python编程:从入门到实践》读书笔记
十.Python Web应用程序开发
涉及章节
第18章 Web应用项目--Django入门
第19章 Web应用项目--用户账户
第20章 Web应用项目--设置应用程序样式并对其部署
内容总结
Django入门
建立项目
制定规范
跟之前的项目规划类似,都是对项目的一种约束和规划
项目目标
项目功能
项目外观/用户界面
项目重点
建立虚拟环境
安装virtualenv
pip安装即可
激活虚拟环境
使用这个工具可以解决多Python版本的开发环境问题
安装Django
pip安装即可
版本的话选择长期版本
在Django中创建项目
使用django-admin.py 等命令完成项目搭建
其实自己写.py导入Django也能写项目,但是新手照做就好了
创建数据库
创建完项目就需要建立数据库
Django自己有一套数据库创建,迁移的工具
东西挺多,另行记录
创建应用程序
定义模型
新手可能很迷惑模型是啥
其实就是数据表的抽象模型
这里表示的是数据表的类对象模型
激活模型
应该叫生成和迁移模型
migrate命令是这部分的基础
Django管理网站
用户权限管理
创建管理用户或系统用户
定义模型Entry
这个地方大有可为
定义各种Web服务需要的数据模型
通常也意味着麻烦
迁移模型Entry
为什么要迁移呢?
有可能是数据发生了改变或者数据模型需要更新
向管理网站注册Entry模型
将需要的数据模型添加的Django项目中
Django 命令工具
运行Django项目的一些命令,很有用
python manage.py ***
python runserver等等
这里就不赘述了
创建网页:学习笔记主页
映射URL
URL是一个很重要的概念
Django会将浏览器请求与URL匹配,以确认返回什么网页数据
在Django中,URL被映射到特定的视图
编写视图
视图是什么?
视图就是接收请求信息并返回对应网页数据的函数功能
由于其和URL绑定,称之为视图其实很形象
视图是函数
输入:请求信息
输出:网页文件或数据
编写模板
模板是?
定义网页结构的文件
做过前端就知道网页文件的结构是很好确认和编写的
可以理解为网站页面的文件
创建其他网页
模板继承
这个继承概念也是为了重用代码,毕竟很多情况下网站页面的元素其实改变不大
那么这时候为改变的元素其实就可以当做父类模板的原有功能
显示主页面
/index URL请求对应的主页面
显示特定主题的页面
各种子页面的实现,其实实现过程跟上面很类似
用户账户功能实现
添加用户输入数据功能
前端实现表单用户输入
后端加入对应页面请求
创建用户账户
应用程序users
其实就是创建一个users的视图,包含用户登录功能页面的一个视图函数
登录页面功能实现
这个内容说多不多,说少不少,不赘述了
退出登录功能实现
用户注销登录状态
注册页面功能实现
注册和登录功能有很大的相似之处
知其一便知其二
用户对应数据
使用@login_required限制访问
将数据关联到用户
只允许用户访问自己的主题
保护用户的主题
保护页面edit_entry
将新主题关联到当前用户
设置应用程序的样式并对其进行部署
设置项目“学习笔记”的样式
这一部分涉及到前端框架的配合使用
具体内容另选记述
部署“学习笔记”
总结
摘录
九.Python数据可视化
涉及章节
第15章 数据可视化项目--生成数据
第16章 数据可视化项目--下载数据
第17章 数据可视化项目--使用API
内容总结
安装matplotlib
pip install matplotlib 即可安装
需要切源另加命令
使用matplotlib绘制简单的折线图
修改标签文字和线条粗细
校正图形
使用scatter()绘制散点图并设置其样式
使用scatter()绘制一系列点
自动计算数据
删除数据点的轮廓
自定义颜色
使用颜色映射
自动保存图表
随机漫步
创建RandomWalk()类
选择方向
绘制随机漫步图
模拟多次随机漫步
设置随机漫步图的样式
给点着色
重新绘制起点和终点
隐藏坐标轴
增加点数
调整尺寸以适合屏幕
使用Pygal模拟掷骰子
安装Pygal
Pygal画廊
创建Die类
掷骰子
分析结果
绘制直方图
同时掷两个骰子
同时掷两个面数不同的骰子
下载数据
找寻需要的数据集文件也是一项必不可少的能力
各类数据库的信息还有公开的数据集信息往往都很容易获取
读写CSV文件
分析CSV文件头
打印文件头及其位置
提取并读取数据
绘制气温图表
使用模块datetime
在图表中添加日期
涵盖更长的时间
再绘制一个数据系列
给图表区域着色
错误检查
制作世界人口地图:JSON格式
下载世界人口数据
提取相关的数据
将字符串转换为数字值
获取两个字母的国别码
制作世界地图
在世界地图上呈现数字数据
绘制完整的世界人口地图
根据人口数量将国家分组
使用Pygal设置世界地图的样式
加亮颜色主题
使用Web API
使用Web API
Web API是网站的一部分,用于具体的URL请求,也就是API调用
Git和GitHub
本部分内容使用该网站的API接口
使用API调用请求数据
使用github的一个统计代码仓库信息的API的url,用于获取Python代码项目的数量和受欢迎程度
安装requests
这是一个基本的向网站收发请求相应的网络通信库
调用url和对应的请求方法
r = requests.get(url)
保存响应信息
r.json()
处理API响应
由于得到的响应信息最终以json格式保存,那么查看对应的数据信息就需要使用对应的方法
json格式数据跟Python的字典很类似,因此直接转化为字典保存和使用
分析最受欢迎的仓库
根据获取的代码仓库信息,完成数据分析,得到最欢迎的代码仓库
监视API的速率限制
这个限制意味着使用者使用API时单位时间访问的次数是有限的,学习过网络通信就会明白服务器收发请求需要占用资源
使用Pygal可视化仓库数据信息
可视化其实就是将结构化的数据以画面的形式呈现
使用的多了之后就会明白,数据可视化需要的数据往往是一一对应的序列对象,比如一条折线中个各个(x,y)坐标
总结
可视化工具很多,重在熟练,工具思想基本是通用的
八.Python游戏开发
涉及章节
第12章 外星人入侵项目--武装飞船
第13章 外星人入侵项目--外星人
第14章 外星人入侵项目--记分
内容总结
规划项目
安装Pygame
使用pip安装Python包
pip是Python3.x版本后自带的包管理工具
使用pip可以轻松完成第三方包下载
嫌pip下载太慢?使用切源方式安装第三方包
开始游戏项目
窗口初始化及飞船绘制
创建Pygame窗口以及响应用户输入
使用pygame.init()初始化游戏窗口
创建游戏主循环while并使用pygame的事件监听
监听鼠标和键盘输入事件
设置窗口背景色
使用(r,g,b)数据设置背景色
在游戏循环中添加窗口的背景数据以改变游戏窗口背景色
创建游戏设置类
创建一个游戏设置类Settings保存游戏的一些设置,如背景色,窗口大小等等
添加玩家控制的飞船图像
使用pygame.image.load 加载图像
创建Ship类
创建用于描述玩家飞船的类
包含飞船贴图,飞船外形,飞船位置等数据成员信息
创建绘制飞船的函数,以指定飞船在某一坐标位置显示
在屏幕上绘制飞船
在游戏循环中调用飞船的显示函数,完成飞船的显示
重构:模块game_functions
对较长的代码块进行一个任务分解从而完成代码重构,简化代码结构
函数check_events()
将用户事件监听功能进行了一个集成
函数update_screen()
对游戏窗口的更新进行代码重构,集成为了一个函数
驾驶飞船
响应玩家按键控制
使用事件监听和控制状态标志设置飞船移动功能,允许其不断移动
按键按下则表明移动标志,未松开则移动标志不改变状态
设置上下左右的移动标志和对应按键响应
调整飞船的速度
由于窗口的坐标时基于像素个数的
飞船的速度设置为移动的像素的个数
限制飞船的活动范围
这个功能主要针对飞船可能被玩家移出游戏窗口导致不可见
主要实现就是测试飞船外接矩形的坐标位置,超出屏幕位置则停止移动
已完成项目功能总结
alien_invasion.py
游戏窗口的主循环
创建游戏运行所需的各种实例对象
settings.py
游戏设置内容
game_functions.py
游戏功能的抽象集成
将游戏的基本功能抽象为一个个函数
ship.py
包含ship类,也就是定义飞船信息和飞船显示的类
飞船射击功能
添加飞船射击功能
这个功能其实很好抽象
子弹显示和移动的功能
游戏窗口刷新是子弹出现
最终需要添加子弹和外星人的碰撞功能
创建Bullet类
类似外星人的创建,但是子弹的初始化位置是飞船的位置
子弹的速度
在游戏窗口绘制子弹的函数
开火功能
类似于飞船移动功能
读取开火按键输入,绘制子弹
删除已消失的子弹
不删除子弹对象会怎么样,系统会越来越卡慢,因为越来越多子弹对象占用内存而不释放
因此需要设置子弹的死亡坐标,超过这个坐标位置,子弹对象自行销毁
限制子弹数量
这个好理解,飞船在某一时间段内射出的子弹数量是有限制的
只需要在游戏功能中添加子弹对象的计数和游戏设置中的子弹数量限制比较即可,从而控制玩家开火
创建函数update_bullets()
对子弹绘制做的一个函数抽象
创建函数fire_bullet()
对可以发射的情况做的子弹开火功能函数
外星人实现部分
创建第一个外星人
创建Alien类
类比于飞船的创建过程
外星人不断向飞船移动,具有速度属性
创建Alien实例
让外星人显示在屏幕上
创建多个外星人
确定一行可容纳多少个外星人
如果过于密集那实在是影响游戏体验
设置左右边距
创建多行外星人
外星人数组
让所有外星人移动
外星人移动功能
每个循环根据外星人的速度更新位置并绘制
射击外星人
检测子弹与外星人的碰撞
跟之前方法一样,使用pygame.sprite.groupcollide判断碰撞关系
碰撞那么调用子弹和外星人的销毁函数
重构update_bullets()
为啥重构?
作者嫌这个函数功能太多
做了一下任务分解:分成检测碰撞和销毁对象两个函数
结束游戏
检测外星人和飞船碰撞
这个同样的碰撞道理
游戏结束
游戏结束可以有多种情况
用户主动退出和提示
游戏模式导致的游戏失败退出
七.Python测试编程
涉及章节
第11章 测试代码
内容总结
测试函数功能
导入Python内置的测试库unittest
编写unittest.TestCase的子类
调用测试类的断言方法完成函数结果和测试用例的对比
编写多个测试用例全面测试函数功能
测试类的功能
步骤类似于函数测试
但是需要使用类的实例化对象完成测试
单元测试
用于测试函数功能
测试用例
一组单元测试,用于核实函数在各种情形下的功能正确性
良好的测试用例可以考虑到可能的各种输入
针对大型项目,开发时对重要行为编写测试用例即可,广泛使用时在考虑全覆盖
六.Python文件读写和异常处理
涉及章节
第10章 文件和异常
内容总结
open() 方法
Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError异常。
语法格式:open(path,mode='r')
path表示需要读写的文件的路径,mode指明读取文件的模式
path可以是相对路径,也可以是绝对路径
'r':表示只读,'w':表示覆盖写入,'a+':表示追加读写
close() 方法
用于关闭读写文件对象,关闭后不可再进行读写操作
with 关键字
用于读写文件后自动关闭,无需调用close()方法
使用格式:with open(path,mode='r') as f:
进阶操作
学习.csv,.xls,.txt文件读取处理
学习使用csv,pandas完成文本类文件/数据读取和处理
基本信息
推荐指数:🌟🌟🌟🌟🌟
作者:【美】Eric Matthes
译者:袁国忠
内容简介:这本书使用简单朴素的语言为初学者阐释各种Python的概念,而非一开始就使用专业术语。阅读本书籍,读者可以更轻松的理解Python相关概念,是一本非常适合初学者阅读的书籍。
类型:计算机/程序设计/Python/入门书
一.Python的安装环境与使用
涉及章节
第1章 起步
内容总结
搭建编程环境
Python官网:https://www.python.org
Python安装包下载地址:https://www.python.org/downloads
选择Python版本
版本选择事项
初学者建议选择Python3.6/Python3.7
尽量选择长期支持的安全版本——security
根据操作系统确认并下载对应的Python安装包或文件
说明
以Windows x86-64开头的是 64 位的 Python 安装程序。
以Windows x86开头的是 32 位的 Python 安装程序。
embeddable zip file表示.zip格式的绿色免安装版本,可以直接嵌入(集成)到其它的应用程序中。
executable installer表示.exe格式的可执行程序,这是完整的离线安装包,一般选择这个即可。
web-based installer表示通过网络安装的,也就是说下载到的是一个空壳,安装过程中还需要联网下载真正的 Python 安装包。
安装Python
Windows 操作系统
下载安装包按照提示安装即可
初学者默认安装即可
Linux操作系统
下载Python压缩文件解压即可
或者使用apt命令完成安装
1. 执行所有升级
# sudo apt update
# sudo apt upgrade -y
2. 安装编译Python源程序所需的包
# sudo apt install build-essential -y
# sudo apt install libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev -y
# sudo apt-get install zlib1g-dev
3. 下载Python 3.7源程序压缩包
# wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
4. 解压缩
# tar -xzvf Python-3.7.1.tgz
5. 配置
# cd Python-3.7.1
# ./configure --enable-optimizations
//执行上述语句将启用代码的发布版本,可以优化二进制文件以更好的更快的运行,但是需要运行测试,编译时需要花费一些时间(大约半小时),也可以不进行这一项配置。
6. 编译和安装Python 3.7
# sudo make
# sudo make install
7. 查看Python版本
# python3
Python 3.6.6
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
出现上述语句说明安装成功。
8. 升级pip和更换pip源
# sudo pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# pip3 install --upgrade pip
摘录
二.Python的数据类型及操作
涉及章节
第2章 变量和简单数据类型
第3章 列表简介
第4章 列表操作
第6章 字典
内容总结
变量
基本用法
命名后直接赋值,无需指定类型:a = 12
可重复赋值: a=13
命名规则
变量名只可以包含字母,数字,下划线,且不可以数字开头
正确的变量名:test_var,_string
错误的变量名:2test_var
变量名不可以包含空格符
变量名不可与关键字相同
变量名应简短且具有描述性
基本数据类型
字符串(str类型)
使用规则:一对单引号/双引号或三对单引号/双引号括住的多个字符
str1 = 'abc'
str2 = "abc"
str3 = '''abc'''
str4 = """abc"""
字符串大小写
str.title() 字符串转换为首字母大写
str.upper() 字符串转换为大写
str.lower() 字符串转换为小写
字符串拼接
str1 + str2
'abc' + 'def'
字符串输出
print(str1)
字符串方法
类型转换
int(str),float(str),str(int)
字符串处理空白符
str.strip()
字符串大小写
字符串遍历:for i in str1:
数字
整型int
浮点型float
str(类型转换)
加减乘除基本运算:+-*/
取余运算:%
求模://
列表
元组
集合
字典
注释
单行注释
# 注释内容
多行注释
''' 注释内容 '''
列表(list)
基本概念
序列是 Python 中最基本的数据结构。
Python 有 6 个序列的内置类型,但最常见的是列表和元组。
使用方法
定义:方括号
list1 = [1, 2, 3, 4, 5 ]
内置方法
切片: list1[0:4:2]
索引: list1[0]
排序: list1.sort()
列表长度: len(list1)
最大最小元素: max(),min()
列表增删改查操作
元组(tuple)
特点:Python 的元组与列表类似,不同之处在于元组的元素不能修改。
定义:圆括号
tup1 = (1, 2, 3, 4, 5 )
使用方法
访问元组:下标索引访问,
切片操作
元组-列表类型转换
list1 = list(tup1)
tup1 = tuple(list1)
集合
特点:Python的集合(set)是一个无序的不重复元素序列。
定义:
可以使用大括号 { } 或者 set() 函数创建集合
set1 = {0,1,2,3}
set2 = set(list1)
字典
特点:字典是另一种可变容器模型,且可存储任意类型对象。
定义:
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中
dict1 = {'name': 'Niu', 'likes': "Study"}
方法
增删改查
内置方法
进阶学习
各类运算符的使用和区别
算术运算符
关系运算符
逻辑运算符
...
数学函数库math的使用
随机数函数库:random
字符串方法库:string
正则表达式库:re
各类Python数据类型的内置方法
Python序列类型的嵌套使用
三.Python的条件控制语句和循环语句使用方法
涉及章节
第5章 if语句
第7章 用户输入和while循环
内容总结
if语句
条件测试
相等与否的判断条件
数字比较:== != < > <= >=
列表包含:in/not in
布尔表达式:True/False
语法结构
if ():
if-else
if -elif - else
if - if - if
列表处理
特定元素包含
列表为空判断
for循环语句
格式
for i in [1,2,3,4,5]:
print(i)
用法:
else可以省去
variable表示变量
sequence表示序列类型(可迭代类型)
statements表示其他语句块
注意:
使用缩进表明语句块的范围和作用域
while循环语句
格式
用法
break用法
用于跳出循环,执行后续代码
continue用法
用于跳过循环的某次操作,执行下次循环
input输入
原理
等待用户输入并将用户输入存入变量,读取到换行符退出并返回读取的字符
使用方法
name = input("请输入姓名:")
四.Python函数的定义与使用
涉及章节
第8章 函数
内容总结
基本定义
使用格式
传递参数
形参与实参
传递参数
传参类型
指定参数类型
参数列表
可变长度参数
注意
返回值
返回值格式
返回多个值
参数列表
在函数中修改参数
防止函数修改参数
模块导入
模块是什么
导入整个模块
导入某个函数
导入某个变量
导入模块内所有元素
模块别名
函数编写规范
函数名需要有描述性
函数里添加合适的注释
函数代码的格式
精彩片段
摘录
五.Python类对象的创建与使用
涉及章节
第9章 类
内容总结
类的用处
面向对象程序设计
Python中的类提供了面向对象编程的所有基本功能
类的继承机制允许多个基类
派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法
对象可以包含任意数量和类型的数据
类(Class):
用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
方法:
类中定义的函数。
类变量:
类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
数据成员:
类变量或者实例变量用于处理类及其实例对象的相关的数据。
方法重写:
如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
局部变量:
定义在方法中的变量,只作用于当前实例的类。
实例变量:
在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
继承:
即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
实例化:
创建一个类的实例,类的具体对象。
对象:
通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
抽象现实世界的事物
创建类
类定义的格式
关键字:class
class后面紧跟所定义的类名和冒号
新起一行配合缩进作为类内成员的定义域
创建一个类
创建对象实例
类的方法
静态方法
@ staticmethod装饰且不含self参数的方法,可以通过类名调用
普通方法
默认有self参数的方法,只可以被对象调用
类方法
默认含cls参数的方法,可以被类和对象调用
使用类和实例
类属性设置默认值
修改类属性值
类内的成员变量或者函数以双下划线开头那么该成员不可被外部访问或调用,因为属于类内私有
调用修改属性
定义方法修改
继承
继承概念
子类(派生类 DerivedClassName)会继承父类(基类 BaseClassName)的属性和方法。
子类继承父类
语法格式
创建子类
定义子类方法
与父类相同操作的方法无需定义,通过继承使用
父类已有的方法不满足子类的需求,需要从新实现的子类方法的过程就叫子类重写父类方法
子类中如何重写父类方法
在子类中重新定义并编写与父类中相同命名的方法即可
导入类
类编写规范
驼峰命名建议
代码组织
进阶学习
类多重继承方法和注意事项
类的内置属性和方法的使用
不同Python版本下类的不同之处
理解Python中可变对象和不可变对象的区别