认识Python
- 发展历史
自从20世纪90年代初Python语言诞生至今,它已被逐渐广泛应用于系统管理任务的处理和Web编程。 - 版本选择
- python2.7是python2的最后一个版本,到2020年将不再维护
- python3.6是python3最新的版本,是python方向的未来
- py2与py3不兼容,现在我们选择py3进行讲解,以后会对比py2和py3的区别
- 就业方向
- WEB后端、爬虫、运维、数据分析、机器学习、人工智能
安装环境
- python安装:
- 自定义安装(将安装目录添加系统环境变量PATH下、为所有用户安装),然后一路NEXT即可
- 测试:启动终端(win + r => cmd),在终端中输入python然后敲回车,看到>>>表示启动成功
- 退出环境:exit()
- pycharm安装
- 社区版,一路NEXT即可完成安装
- 启动测试:在快速启动栏中选择pycharm,看到欢迎页面表示成功
- 说明:若缺啥*.dll文件,去Windows官网下载相关软件包安装即可。
第一个程序
- 打开pycharm
- 新建一个工程
- 新建一个文件hello.py(后缀.py),输入:print(‘Hello world!’)
- 运行:
- 右键 =》 Run ‘hello’
- 终端:python hello.py
- 记得文件的路径要写对
- python执行方式
- 交互式:直接终端启动python环境,然后输入一条解析执行一条命令;关闭后无法保留执行过的代码。
- 退出:exit() 或 quit()
- 脚本式:将所有要执行的代码放到一个文件中,然后统一执行
- 说明:为了保留代码,以后我们都采用此方式
- 交互式:直接终端启动python环境,然后输入一条解析执行一条命令;关闭后无法保留执行过的代码。
- 额外说明:代码中所有的控制语句都是英文字符
变量定义
- 什么是变量?
- 在程序运行过程中,其值可以改变的量。(具有名字的一段存储空间)
- 标识符命名规范
- 只能由数字、字母、下划线组成
- 不能以数字开头
- 不能是系统关键字(有特殊意义的语法字符串)
- 命名原则
- 尽量做到见名知意
- 尽量使用英文,实在不行使用全拼
- 推荐命名方式:采用小写+下划线,如:user_name
#此处会报NameError错
print(a)
- 使用常量
- python中没有常量,通常我们会使用大写加下划线的方式模拟常量,如:USER_NAME = ‘xiaoming’
代码注释
- 什么是注释?
- 所谓注释就是写给开发人员看的提示说明内容;注释是给人看的,解析器会直接忽略。
- 为什么写注释?
- 对自己能够很快回忆起思路,对于合作伙伴可以非常方便的读懂你的意思。
- 怎么写注释?
- 单行注释
#单行注释 - 多行注释(模拟)
‘’‘注释’’’
“”“注释”""
- 单行注释
输入输出
- 输出:将特定的内容打印出来
- 输入:程序运行后,等待用户的输入,然后才能进行下一步的操作
存储单位
- 最小数据单位是比特bit,表示一位二进制的0或1,写作’b’,是网络数据传输的基本单位
- 最小存储单位是字节byte,写作’B’,1B = 8b
- 1KB = 1024B
- 1MB = 1024KB
- 1GB = 1024MB
- 1TB = 1024GB
- 2^32 = 2^10 * 2^10 * 2^10 * 2^2 = 4G
数据类型
进制转换
- 十进制
- 基数0~9,逢10进1
- 示例:123 = 1 * 10^2 + 2 * 10^1 + 3 * 10^0 = 100 + 20 + 3 = 123
- 二进制
- 基数0和1,逢2进1
- 示例:0b110100 = 2^5 + 2^4 + 2^2 = 32 + 16 + 4 = 52
- 十进制转二进制:除2取余,倒序书写
- 22 = 0b10110
- 八进制
- 基数0~7,逢8进1
- 示例:0o123 = 1 * 8^2 + 2 * 8^1 + 3 * 8^0 = 64 + 16 + 3 = 83
- 八进制转二进制:八进制的1位可以表示3位二进制数
- 0o123 = 0b 001 010 011
- 十六进制
- 基数09、AF,逢16进1
- 示例:0xAB = 10 * 16^1 + 11 * 16^0 = 160 + 11 = 171
- 十六进制转二进制:十六进制的1位可以表示4位二进制数
- 0xABC = 0b 1010 1011 1100
计算机中是以哪种进制存储数据的,为什么?
-
二进制,因为计算机只识别二进制。具体原因:
-
稳定性高(只有0和1)、成本低(技术上容易实现)、与生活中的真假逻辑相吻合(便于解决生活中的实际问题)
-
原码反码补码
-
如何存储负数?
- 最高位作为符号位:0表示正数、1表示负数
- 虽然牺牲了最高位,但是解决了负数的表示问题,简化了硬件设计
-
原码反码和补码:是针对负数而言的(正数的三码一致)
- 负数的反码等于数据原码的符号位不变,数据位取反
- 负数的补码等于对应的反码加1
-
计算机中的数据都是以补码的形式存储的
数据类型
- 说明:编程语言中不同的数据类型都是为了解决生活中的实际问题而出现的,每种类型都有相关的运算。
- python中常用数据类型:整形、浮点、布尔、字符串、列表、元组、字典、集合等
- 整型(int):就是数学中的整数
- 浮点(float):就是数学中的小数
- 复数(complex)
- 布尔(bool):对应于生活中的真假逻辑,只有两个值True/False
- 空(NoneType):空类型,只有一个值None
- 字符串(str):使用引号括起来的一串字符
- 定义:一对单引号、一对双引号、三对单引号、三对双引号
- 转义:使用’’,使原来有特殊含义的字符变成普通字符,也可以在定义字符串的前面加一个’r’
- 列表(list):通过[]进行定义,可以存放一系列的任意数据,是一种容器类型
- 元组(tuple):通过()进行定义,可以作为容器存放任意数据,元素是不可修改的
- 集合(set):通过{}进行定义,可以作为容器存放任意数据,但是元素是不能重复的,且是无序的
字典(dict):通过{}进行定义
- 元素是由键值对组成的
- 键和值之间是有’:'进行连接
- 键是唯一的,而值可以是任意的
类型转换
- 隐式类型转换:混合运算、条件判断
- 强制类型转换:使用专门的函数进行转换
int:转换为整型
float:转换为浮点
str:转换为字符串
list:转换为列表
tuple:转换为元组
set:转换为集合
dict:转换为字典
运算符与分支结构
运算符
-
赋值运算
- 用 = 表示,左边只能是变量
-
算术运算符
- +、-、*、:加、减、乘
- /:除法
- //:除法,结果是浮点数
- %:求余
- **:求幂,也可以使用函数pow
-
复合运算符
- +=、-=、*=、…
-
关系运算符
- .>、>=、<、<=、==、!= ( . 没有任何意义只是用来固定 >)
- 表达式:由运算符和操作数构成的式子
- 关系表达式:由关系运算和操作数构成的式子
- 关系表达式是有值的:符合数学逻辑值为真(True),不符合则为假(False)
-
逻辑运算符
- 说明:逻辑运算就是用来合并或取反表达式的
- 运算:与、或、非
- 与(and):两边的表达式同时为真,结果才为真
- 或(or):两边的表达式一个为真,结果就为真
- 非(not):用于取反表达式,真变假、假变真
- 使用not是为了简化表达式的书写
- 经常伴随着隐式类型转换
-
成员运算符
- in、not in:判断一个值是否在另一个里面
- 说明:经常用在字符串、列表、元组、集合、字典等成员的判断
-
位运算符
- &:按位与,对应的数据位同时为1,结果上对应的位才为1
- |:按位或,对应的数据位一个为1,结果上对应的位就为1
- ^:按位异或,对应数据位相同时结果为0,不同时结果为1
- ~:按位取反,数据的每一位0变1,1变0
- <<:按位左移,左移一位相当于诚意2
- . >>:按位右移,右翼一位相当于除以2( . 没有任何意义只是用来固定>>)
-
运算符的优先级与结合性
- 语法中没有明确的规定优先级与结合性,即使是明确说明了也记不住
- 建议:使用时不用刻意记录优先级结合性,当需要明确指定时添加括号即可
流程控制
- 说明:
- 按照代码的执行流程,程序可以分为三种结构:顺序结构、分支结构、循环结构
- 顺序结构:代码按照从上到下的顺序依次执行的结构,没有语法要求
- 代码层次:python中的代码层次不是通过大括号表示的,而是通过缩进体现的
- 分支结构:
- 适合于解决生活中的条件执行问题
- 适合于解决声中的非此即彼的问题
- 适合于解决生活中的多种选择问题
- 循环结构(while):
- 格式:
while 表达式:
语句块
- 说明:
- 表达式:也叫循环条件
- 语句块:也叫循环体
- 死循环:循环条件一直成立
- break:跳出循环
- continue:结束本次循环,进入下次循环
- else:对应的语句块,循环正常退出时会执行,非正常退出(break)时不执行
循环结构(for in )
- 说明:也是一种循环结构,经常用于遍历可迭代对象,如:字符串,列表、元组、字典等
for x in y:
语句块
列表生成式
- range
for i in range():
print(i)
#可以转换为列表
print(list(range(2,10)))
- 列表生成式
print([i for i in range(2,11)])
循环嵌套
- 循环可以嵌套
- 示例:
for i in range(1,10):
for j in range(i):
print(*,end=' ')
print()