一、 Python 基础知识笔记 —— 《Python编程:从入门到实践(第二版)》学习笔记
前言
先安利这本书《Python编程:从入门到实践(第二版)》,作者埃里克-马瑟斯,很适合新手入门,我的python入门学习就是以这本书为核心;
再安利一个网站:菜鸟教程-Python3教程,内容很全面,但感觉不适合纯新手;
要善用谷歌,至于怎么用,大家自行琢磨吧(手动狗头保命),某度娘搜搜广告和娱乐八卦还行,搜专业知识就一言难尽了…
本文是自己学完Python基础知识后的一篇总结性的笔记,主要是为了理一理自己的思路,记录下一些知识点,内容对纯新手的朋友可能不太友好,Python基础教程,Python入门教程(非常详细),这一篇文章是面向纯新手的,很详细。
总而言之,好好学习,不要等,不要急!
一、Python环境
系统
我的系统是Ubuntu21.04版本,为了尝鲜,系统有些太新,如果要学习开发,个人不建议安装太新的系统,因为会遇到一些稀奇古怪的bug,还很难解决,而且最网上很多有用的教程都是针对老版本系统的,虽然更新的系统同样大都兼容,但遇到一两个不适用的还是很头疼;
太老的版本个人也不建议安装,虽然现在很多人还在用18和16的版本;
目前(2021.05.11),最新的稳定发行版是Ubuntu20.04,我比较推荐这个。
如果学Python只是为了高效办公,系统最好还是使用Windows10;
但如果你是打算从Python入手,深入学习开发,建议你在学习的过程中就开始使用Linux吧,首先是开发用Linux真的香,多用会就能感受到了,虽然刚上手有些麻烦;再者是当你学好开发,以后面对的服务器十有八九是Linux,趁早上手Linux,熟悉其使用环境、命令行,肯定没坏处;
Ubuntu中文官网传送门
平时我会将自己在使用Ubuntu中遇到的问题与解决办法持续更新在Ubuntu 基础使用配置这篇笔记里。
Python环境(后文的所有代码和特性来自于3.6以上的版本)
Ubuntu默认安装了Python3和Python2,我们学习和使用的是Python3;
Windows没有预装,需要去Python官网下载Python安装包;
Python官网传送门
Anaconda,是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项,后面开始学做项目的时候还是装这个,现在就不再多说了。
Anaconda官网传送门
IDE
Python的IDE,我选择pycharm,刚开始学习的时候下载免费的社区版就够用了,后面开始做项目的时候再考虑专业版,如果你是大学生,学校又开放了教育邮箱的话可以申请免费的教育版,这个和专业版的功能基本是一样的。
PyCharm中文官网传送门
python环境搭建和pycharm的安装配置及汉化(零基础小白版)这是一位大佬写的教程,很详细。
小结
“不要急、不要等”,这是接下来学习过程中要时刻要告诫自己的话,学习技术本就是一个极其枯燥的过程,特别是入门前的这一阶段;
旁征博引,这是手段。以一本基础教程为核心,是为了确立自己的学习进度,但不要只揪着一本教程不放,多看看大佬们的技术博客,多参考参考其他的教程,才能更快的入门进阶;
要会折腾、要愿意折腾。技术更新速度是很快的,学习过程中总会碰到许多新的东西,要试着主动去接触他们,学习过程中总会碰到许多稀奇古怪的问题,要善于查资料、动手实验试着靠自己的解决他们,实在没办法再去问大佬,虽然后者更方便简单,前者更麻烦,但自己解决能够培养自己解决问题的思路与能力,查资料的过程中能够看到不同人的思路方法、接收到更多的知识,动手有助于理解其原理;
安装软件要去官网! 不要百度一搜,就去了第三方的下载站,不仅不安全,还会被捆绑下载到一些莫名其妙的软件,特别是在Windows系统中,Ubuntu中这样的问题很少,就是注意设置更新源的时候选一些知名的镜像网站,比如清华大学开源镜像、阿里云开源镜像、华为云开源镜像,桌面版Ubuntu可以直接在 系统设置—>关于—>软件更新—>下载自 中选择对应的源。
二、基础数据类型
变量
定义:变量是可以赋给值的标签,或者说变量指向特定的值。
变量命名规则
- 变量名只能包含字母、数字和下划线;
- 变量名能以字母或下划线打头,但不能以数字打头;
- 变量名不能包含空格,可以使用下划线分隔单词(或者驼峰命名法区分单词,如大驼峰:PyCharm,小驼峰:pyCharm);
- 不得用Python关键字和函数名作变量名;
- 变量名应既简短又具有描述性;
- 慎用字母I,字母O,容易被错看成数字1和0。
给多个变量同时赋值
x, y, z = 0, 1, 2
常量
常量类似于变量,但其值在程序的整个生命周期内保持不变。
Python没有内置的常量类型,但常量命名应当使用全大写来特殊标记。
MAX_CONNECTIONS = 5000
注释
Python中,单行注释用井号(#)标识。# 后面的内容都会被解释器忽略;
多行注释为三引号(“‘ ’”)
# 你好python
print("hello python")
'''
里边的内容也会被解释器忽略
'''> hellow python
字符串
定义:就是一系列字符。
Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号。
("Hello Python")
('Hello Python')
字符串函数方法
- 修改每个单词的首字母大写
字符串变量名.title()
例:
test = "hello python"
print(test.title())> Hello Python
- 修改每个单词全为大写
字符串变量名.upper()
例:
test = "hello python"
print(test.upper())> HELLO PYTHON
- 修改每个单词全为小写
字符串变量名.lower()
例:
test = "HELLO PYTHON"
print(test.lower())> hello python
- 格式化合并字符串(高于3.6的Python版本)
fist_name = "ma"
last_name = "yun"
full_name = f"{fist_name} {last_name}"
print(full_name)
print(full_name.title())> ma yun
> Ma Yun
- 制表符与换行符
print("HelloPython")
print("Hello\tPython") # 插入一个制表符(一个制表符等于四个空格)
print("Hello\nPython") # 插入一个空格> HelloPython
> Hello Python
> Hello
> Python
- 剔除空白
test = " hello python "
print(test)
print(test.strip()) #剔除两端的空格
print(test.rstrip()) #剔除右侧的空格
print(test.lstrip()) #剔除左侧的空格> hello python
> hello python
> hello python
> hello python
整数(int)与浮点数(float)
加 | 减 | 乘 | 除 | 乘方 |
---|---|---|---|---|
+ | - | * | / | ** |
- 任意两个数相除,结果总是浮点数;
- 任何运算中有浮点数,结果也为浮点数;
- 写很大的数时,可使用下划线将其中的数字分组,使其更清晰易读,但打印时,Python不会打印其中的下划线:
number = 3.14_159_265_35
print(number)> 3.1415926535
三、列表
定义
- 列表由一组元素按特定顺序排列组成;
- 可以将任何东西加入列表中,元素之间可以没有任何关系;
- 列表通常包含多个元素,列表名通常建议设定为复数;
- 用方括号 [ ] 表示列表,用逗号分隔其中的元素
lists = [value1, value2, value3, ... ]
列表访问
print(lists[key])
当key值为正数时
我个人的理解是列表其实是一种特殊的字典,键不用专门申明,默认为一组有序数列(我看过的书里并没有这么说过,所以我并不知道这样理解对不对)
可以使用字符串的方法对读取出的列表值进行加工
tests = [abc, bcd, defs]
print(tests[0].title())> Abc
列表修改
lists = [value1, value2, value3]
# 修改特定位置的值
lists[0] = valueX
# 修改0位置上的 value1 为 valueX
附加元素
lists = [value1, value2, value3]
# 将元素附加到列表的最后
lists.append(valueX)
# 将 valueX 附加到列表的末尾
插入元素
lists = [value1, value2, value3]
# 将元素插入到列表的指定位置
lists.insert(key, valueX)
# 将 valueX 插入到列表的key位置
删除元素
del删除
lists = [value1, value2, value3]
# 删除指定位置的值
del lists[key]
# 删除了指定位置,索引key处的值
使用del删除后,后面的代码就无法再访问这个值了。
pop()弹出删除
lists = [value1, value2, value3]
# 弹出删除列表指定位置的值
lists.pop(key)
# 括号内不传递参数默认弹出列表最后一个元素,也可以指定索引值弹出指定位置的元素
pop()方法删除的值依旧可以调用
lists = [value1, value2, value3]
print(lists)
# 弹出删除列表末尾的值,并将其值赋予变量pop_value
pop_value = lists.pop()
print(pop_value)
print(lists)> [value1, value2, value3]
> value3
> [value1, value2]
一个未经证实的个人理解:del删除时同时直接将对应的值从内存中删除,所以被删除的值无法再次被调用,而pop()方法,即“弹出”,是将指定位置的值从列表中弹出,也就是只解除了列表名对这个值的指向,但并未从内存中删除,所以可以继续调用。
remove()删除
del 与 pop( ) 都是根据列表索引值来删除对应位置上的值,需要向其传递需要删除元素对应的索引值;
remove( ) 则是直接删除指定的值,需要向其传递具体的元素内容删除;
remove( ) 删除后无法访问被删除的值;
lists = [value1, value2, value3]
# 删除列表指定值
lists.remove(value1)
# 删除了列表中的value1
但是
lists = [value1, value2, value3, value1]
print(lists.remove(value1))> [value2, value3, value1]
# 当列表中元素重复时,remove()方法并不能同时删除全部重复元素,只默认删除重复元素中的第一个元素
# 需要全部删除时就得执行循环
列表排序
lists = [4, 6, 8, 2, 5, 9]
lists.sort() #按照顺序排列
lists.sort(reverse=Ture) #按照逆序排列
sort( )方法是永久重新排列
lists = [4, 6, 8, 2, 5, 9]
lists.sort() #按照顺序排列
lists.sort(reverse=Ture) #按照逆序排列
lists = [4, 6, 8, 2, 5, 9]
sorted(lists) # 临时顺序排序,不影响原列表
sorted(lists, reverse = Ture) # 临时逆序排序,不影响原列表
sorted( )方法是临时性的,不影响原列表
lists = [4, 6, 8, 2, 5, 9]
lists.reverse() #翻转排序
reverse( )方法只是将原列表进行翻转,且是永久性的,不过因为只是翻转,所以二次翻转,列表就恢复原样了。
列表长度
len(lists)
确定列表内含有多少个元素。
遍历列表
for list in lists
lists是你需要遍历的列表,
遍历就是程序将列表中的元素一个一个的一次读取出来
list就是用来临时存储每次读取出来的元素
之前说过,由于列表通常是存储多个元素,所以列表名的设定约定俗成的设定为复数,那么接受遍历读取出元素的临时变量我们就可以设定为列表名的单数形式,这样指向性更强,易于识别。
自动创建数组
range(a, b) # 创建一个从 a 到 b-1 的数组range(b) # 创建一个从 0 到 b - 1 的数组
可以组合使用遍历
for number in range(1, 4)
print(number)> 1
> 2
> 3
使用range()创建数字列表
numbers = list(range(3))
print(number)> [0, 1, 2]
为range()设定步长
# 输出10以内的偶数
even_numbers = list(range(2, 11, 2))
print(even_numbers)> [2, 4, 6, 8, 10]
range() 的组合应用
# 输出1 - 10的平方列表
squares = []
for number in range(1, 11):squares.append(number**2)
print(squares)> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
列表解析
# 输出1 - 10的平方列表
squares = [number*2 for number in range(1, 11)]
print(squares)> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
对数字列表的简单统计计算
min(lists) #列表lists内最小值
max(lists) #列表lists内最大值
sum(lists) #列表lists内数字之和
列表切片
lists[a:b]
# 切取列表lists内从索引 a 到 b-1位置的元素
# a 未赋值默认从头开始
# b 未赋值默认到末尾lists[:]
# 对lists列表进行完整切片,相当于临时复制了lists列表,对切片的操作不会影响原列表
对 a 与 b 也可以指定负值,代表从末尾开始切片
lists[-5:-2]
# 从列表lists倒数第五的元素到倒数第二的元素切片
切片的遍历
for list in lists[:3]
# 遍历列表前三个元素
即索引0,1,2指向的三个元素
四、 元组
元组和列表极其相似,只有两个点需要注意
- 定义方法不同
元组是由圆括号与逗号定义的
dimensions = (a, b, c)#如果元组只有一个元素也必须附上逗号
dimensions = (a,)
- 元组无法修改
也就是说列表的怎删改的语法对元组无效
虽然无法修改元组内的元素,但可以对元组重新赋值
其他查询遍历语法一致
五、字典
定义
- 字典是一系列键值对;
- 每个键都与一个值相关联,使用键来访问相关联的值;
- 与键相关联的值可以是数、字符串、列表乃至字典等等;
- 字典用放在花括号 { } 中的一系列键值对表示。
dic = {"key": "value", "key2": "value2"}
访问字典的值
dic = {"key": "value", "key2": "value2"}
print(dic["key"])> value
增修键值对
dic = {"key": "value", "key1": "value1"}
print(dic)
dic["key"] = "value2"
print(dic)> {"key": "value", "key1": "value1"}
> {"key": "value", "key1": "value1", "key2": "value2"}# 修改键值对和增加的用法一样,区别是增加时使用的的键是字典中没有的,修改时
# 使用的是字典中已有的键,也就是字典对键值对的修改就是覆盖。
删除键值对
dic = {"key": "value", "key1": "value1"}
print(dic)
del dic["key"]
print(dic)> {"key": "value", "key1": "value1"}
> {"key1": "value1"}
查找键值对
get(查找对象的键,未查找到对应键时的返回值)dic.get("key3", "no that")
# 如果字典dic中有“key3”这个键,那么输出对应的值,如果字典中没有对应的
# 键值对那么输出“no that”
# 返回内容可以指定,也可以不填
遍历字典
键值对全部遍历
for key,value in dic.items()
# itme()会返回一个键值对,再通过for循环将值赋给设定好的变量
分别遍历全部键与值
# 遍历全部键
for key in dic.keys()
# keys()会返回一个包含了所有键的列表,再通过for循环将其赋给设定好的变量
# 遍历全部值
for values in dic.values()
六、流程控制
if语句
# 基本if语句:
if 控制条件:符合条件应该执行的内容
else:不符合条件时应该执行的内容
# if-elif-else结构
if 条件1:符合条件1应该执行的内容
elif 条件2:不符合条件1,符合条件2应该执行的内容
else:全都不符合条件应该执行的内容# elif可以嵌套多个
# else也可以省略
while语句
while 条件满足条件时需要执行的内容
# 退出方法
1. if 条件判断退出
2. while 设置标志退出
3. break 退出(不执行后续代码)
4. continue 跳过
一、 Python 基础知识笔记 —— 《Python编程:从入门到实践(第二版)》学习笔记相关推荐
- 《Python编程从入门到实践 第二版》第十八章练习
18-2:简短的条目 当前,Django在管理网站或shell中显示Entry 实例时,模型Entry 的方法__str__() 都在其末尾加上省略号.请在方法__str__() 中添加一条if 语句 ...
- python从入门到实践笔记_Python编程从入门到实践二至七章笔记
Python 第二章变量和简单数据类型 一. 改变字符大小写 1. 首字母大写 .title() 或者 .capitaliza() 输入: print("xiao ming!".t ...
- python编程从入门到实践第二版答案(第三章)
3-1 names = ['day', 'lxd', 'wzy', 'zzz'] print(names[0]) print(names[1]) print(names[2]) print(names ...
- 《Python编程从入门到实践 第二版》第九章练习
9-1 餐馆 创建一个名为Restaurant 的类,为其方法__init__() 设置属性restaurant_name 和cuisine_type.创建一个名为describe_restauran ...
- 《Python编程从入门到实践 第二版》第七章练习
7-1 汽车租赁 编写一个程序,询问用户要租赁什么样的汽车,并打印一条消息,下面是一个例子. Let me see if I can find you a Subaru. car = input('W ...
- Docker技术入门与实战 第二版-学习笔记-9-Docker Compose 项目-2-Compose 命令说明
Compose 命令说明 1)命令对象与格式 对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中 的服务或者容器.如果没有特别的说明,命令对象将是项目,这意味着项目中所有 ...
- Docker技术入门与实战 第二版-学习笔记-3-Dockerfile 指令详解
前面已经讲解了FROM.RUN指令,还提及了COPY.ADD,接下来学习其他的指令 5.Dockerfile 指令详解 1> COPY 复制文件 格式: COPY <源路径> .. ...
- Docker技术入门与实战 第二版-学习笔记-2-镜像构建
3.利用 commit 理解镜像构成 在之前的例子中,我们所使用的都是来自于 Docker Hub 的镜像. 直接使用这些镜像是可以满足一定的需求,而当这些镜像无法直接满足需求时,我们就需要定制这些镜 ...
- Docker技术入门与实战 第二版-学习笔记-9-Docker Compose 项目-1-举例说明
Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用 Compose 通过一个配置文件来管理多个Docker容器,在配置文件中 ...
- Docker技术入门与实战 第二版-学习笔记-7-数据管理(volume)
Docker 数据管理 为什么要进行数据管理呢?因为当我们在使用container时,可能会在里面创建一些数据或文件,但是当我们停掉或删除这个容器时,这些数据或文件也会同样被删除,这是我们并不想看见的 ...
最新文章
- 什么?分布式事务现在不是都在用么?你还不会?
- 持续交付流水线的敏捷利器:环境配置管理与应用部署自动化
- 计算机视觉:目标检测的发展历程与基础概念
- python list删除元素_python中List添加、删除元素的几种方法
- 在配置类上写@CompentScan注解来进行包扫描
- 重力加速度换算_中考物理重难点汇总——公式换算大全
- 2011年度最佳开源软件:Bossie奖结果公布
- 1-1 Go抽奖系统导学
- OpenGL与EGL最简流程(十八)
- 3h精通OpenCV(一)- 读取图像视频与网络摄像头
- 使用jdbc连接数据库的步骤
- java中希腊字母表_希腊字母,希腊字母
- 编程推荐的好看、护眼字体
- 安卓WebView 屏蔽所有类型JS弹窗
- Linux内核ncsi驱动源码分析(二)
- AndroidLibrary上传至maven仓库和Jcenter教程,看这一篇就够了!
- 通过exif.js简单处理手机照片拍摄图片旋转问题
- 索尼美能达50微-版本区别及实拍测评(sony/minolta)50 f2.8 macro
- 基于Android的手机音乐播放器的设计
- replace()中的/g是什么意思?