一、基础信息
- 保存文件必须加“.py”后缀。
- windows+r 一> cmd 一> 调出默认系统程序运行。
- 文件编码采用UTF-8 # (encoding=utf-8)
- {ctrl+/} 将程序转换为注释,反之亦然
- tab 键 整体向右缩进,shift+tab 向左缩进
- ‘main’: 的作用就是控制这两种情况执行代码的过程,在if __name__ == '__main__’: 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的。
二、基础知识
2.1 标识符
- 就是变量、函数、属性、类、模块等可以由程序员指定名称的代码元素。
- Python中标识符的命名规则如下:
- 1 区分大小写:Myname与myname是两个不同的标识符。
- 2 首字符可以是下画线(_)或字母(包含亚洲的一些字符),但不能是数字。
- 3 除首字符外的其他字符必须是下画线、字母和数字。
- 4 关键字不能作为标识符。
- 5 不要使用Python的内置函数作为自己的标识符。
2.2 33个关键字
False, None, True # 大写三个
assert '生效', def , lambda, nonlocal,
pass, break, continue, return...等 # 30个小写
2.3 变量
在Python中为一个变量赋值的同时就声明了该变量,该变量的数据类型就是赋值数据所属的类型,该变量还可以接收其他类型的数据。(可以多重赋值)
变量由三部分组成:
- 标识:表示对象所存储的内存地址,使用内置函数id(obj)来获取。
- 类型:表示的是对象的数据类型,使用内置函数type(obj)来获取。
- 值:表示对象所存储的具体数据,使用print(obj)可以将值进行打印输出。
2.4 语句
在Python中,一行代码表示一条语句,在一般情况下语句结束时不加分号。
2.5 代码注释
在使用#(井号)时,#位于注释行的开头,#后面有一个空格,接着是注释的内容。
多行注释:通常使用三引号进行注释‘’‘ ’‘’。
2.6 模块
在Python中一个模块就是一个文件,模块是保存代码的最小单位
在模块中可以声明变量、函数、属性和类等Python代码元素
2.7 实现两个模块间的代码元素访问
# 通过这种方式会导入m2模块的所有代码元素,在访问时需要加相应的前缀,如“m2.”
import<'模块名'>:
# 通过这种方式会导入m2中的x变量,在访问时不需要加前缀“m2”
from<'模块名'>import<'代码元素'>:
# 可以给要导入的代码元素(m2中的x)一个别名x2
from<'模块名'>import<'代码元素'>as<'代码元素别名'>:
三、数据类型
3.1 Python中的数据类型
- 在Python中有6种主要的内置数据类型:数字、字符串(str)、列表、元组、集合、字典(后四个为容器类型)。
-
Python中的数字类型有4种:整数类型(无小数点)、浮点类型 、复数类型、布尔类型(True/False ),布尔类型也是数字类型,它事实上是整数类型的一种。
3.2 整数类型(int)
- Python中的整数类型为int类。
- 默认为十进制、包含二进制、八进制、十六进制。
- 不论是几进制,如果没有特殊标注,输出时默认转换为十进制。
# 默认为十进制、包含二进制、八进制、十六进制 # 前面+(int )转为十进制
0b() (0为阿拉伯数字及英文字母B或b)为二进制开头 # 前面+(bin)转为二进制
0o() (0为阿拉伯数字及英文字母O或o)为八进制 # 前面+(oct)转为八进制
0x() (0为阿拉伯数字及英文字母X或x)为十六进制 # 前面+(hex)转为十六进制
3.3 浮点类型(float)
- 小数做精确计算时需要导入Decimal模块。
- 浮点类型主要用来存储小数数值,Python的浮点类型为float类。
- 可以采用科学计数法表示浮点类型。
round(a,x) 数学函数进行四舍五入,其中a是对象,x是四舍五入保留几位小数
3.4 复数类型(complex)
- 整数和浮点数(小数)在数学中被统称为实数。
- 与实数对应的是复数,复数在数学中被表示为:a+bi,其中a被称为实部,b被称为虚部,i被称为虚数单位。
3.5 布尔类型(bool)
- ( True/False )任何类型都可以转换为布尔类型。
- Python一切皆对象,所有对象都有一个布尔值:
- 以下对象的布尔值为False:False, 0, None, 空字符串, 空列表, 空元组, 空字典, 空集合。
3.6 数字类型的相互转换
在Python的数字类型中,除复数外,其他三种数字类型如整数、浮点和布尔都可以相互转换,分为隐式类型的转换和显式类型的转换。
- 隐式类型的转换:自动转换, 数字之间可以进行数学计算,在进行数学计算时若数字类型不同,则会发生隐式类型的转换。
- 显式类型的转换:
- eval 将“input”输入的函数直接转换为真实的数据类型。
- 通过int( )、float( )、bool( )进行转换。
- float转为整数,只取其中整数部分,小数部分直接舍去。 # int(3.9) 一> 3
- True为1,可以直接做算术运算。
3.7 字符串又被称为不可变的字符序列
- 可以使用单引号’’, 双引号””, 三引号’’’ ’’’ 或””” ”””来定义。
- 单引号和双引号定义的字符串必须在一行,可以通过“\n”执行跳行操作
- 三引号定义的字符串可以分布在连续的多行。
3.8 内置函数 range()
range()函数通常输出最后一位为"stop-1",不包括‘stop’,三种创建方式:
range(stop) # 默认从0开始到 stop-1 的位置
range(start,stop) # range(1,5) 表示1-4的序列,中间用逗号
range(start,stop,step)
3.9 random函数
可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等:
random.randint() # 随机生一个**整数int类型**,可以指定这个整数的范围,同样有上限和下限值
random.choice() # 随机从字符,列表,元组中取出一个元素
第4章 运算符
4.1 算术运算符
算术运算符用于组织整数类型和浮点类型的数据,有一元运算符(+/-)和二元运算符之分:
+, -, *, / # (加减乘除)
% # (取余数)
** # (求a的b次幂)
// # (求小于a与b的商的最大整数, 注意负数的取余,一正一负,向下取余)
4.2 比较运算符
比较运算符用于比较两个表达式,其结果是布尔类型的数据,即True或False:
# is表示是否存储在同一地址文件
[==, !=, >=, >, <, <=, is, is not, not True]
4.3 逻辑运算符
逻辑运算符用于对布尔型变量进行运算,其结果也是布尔型(True/False), 逻辑运算符有短路特征, 掐断后续运算:(可做短路验证)
# not 逻辑非, not a 判断时根据a值是否为False进行判断
# and 逻辑与(且), 同时为true才为true
# or 逻辑或, 有一个为or, 结果为true
[not, and, or, in, not in]
4.4 位运算符
位运算是以二进位(bit)为单位进行相互比较运算的,操作数和结果都是整数类型的数据。
# ~ 位反 ~x 将x的指按位取反
# & 位与 x&y 将x与y的值按与计算
# | 位或 x|y 将x与y的值按或计算
# ^ 位异或 x^y 将x与y的值按异或计算
# >> 右移 x>>y 将x右移a位,高位采用符号位补位 数值变小
# << 左移 x<<y 将x左移z位,低位采用0补位 数值变大
4.5 赋值运算符
+= # 加赋值 a+=b
-= # 减赋值 a-=b
*= # 乘赋值 a*=b
/= # 除赋值 a/=b
%= # 取余赋值 a%=b 在原值上取余
**= # 幂赋值 a**=b 在原值上取幂
//= # 地板除法 a=a//b 取商的整数值
&= # 位与赋值 a=a&b
|= # 位或赋值 a=a|b
^= # 位异或赋值 a=a^b
<<= # 左移赋值 a=a<<b
>>= # 右移赋值 a=a>>b'''
4.6 运算符的优先级
# 1.小括号
()
# 2.算数运算
** # 几次方
~ # 位反 (奇怪的算法) {~a=(a+1)*-1}
+, - # 正负
*/%//
+, - # 加减
# 3.位运算
>> << # 位移
& # 位与 ( and )
^ # 位或与
| # 位或 ( or )
# 4.比较运算
<, <=, >=, <>, !=, ==
not # 逻辑非
# 5.布尔运算
and, or # 逻辑与、逻辑或
# 6.赋值运算符
=
4.7 input()函数、赋值运算符
input输入文件类型为字符串类型(str), 如果需要计算需要对其进行转换, 赋值运算符为从右向左赋值。
a=b=c=20 # 支持链式赋值
a+=20 # 支持参数赋值
a,b,c=1,2,3 # 支持解包赋值, 元组对元组, 元组对列表也可赋值
4.8 对象None
对象None用于表示数据值的不存在,但在内存中占用一定的空间, 经常用于变量的初始化,或将变量重置为 "数据不存在状态", 主要用于 重置为数据值不存在状态。
第5章 程序流程控制
1996年,计算机科学家证明了这样的事实:**任何简单或复杂的算法**都可以由**顺序结构**、**选择结构**、**循环结构**这三种基本结构组合而成。
5.1 分支语句
5.1.1 if结构
必须以英文冒号结尾, 如果满足就执行,否则结束, if语句,下一行用四个半角空格。
5.1.2 if-else结构
x if '判断条件' else y # 条件表达式
5.1.3 if-elif-else结构
elif可以有多次使用,完成多次循环, 可以没有else, 但一个if条件语句下只能使用一个else。
5.1.4 嵌套if
可以相互嵌套使用。
5.15 pass语句
该语句什么都不做,只是一个占位符。
5.2 循环语句
Python支持两种循环语句:while和for:
5.2.1 while语句
四步循环法:初始化变量、 条件判断、条件执行体(循环体)、改变变量。
break, return # 有异常会打断程序
print() # print输出时中间可以用逗号取代加号,但中间会留空格
# 且加号只能用于类型相同的数据类型,类型不同时只能用逗号分隔
5.2.2 for语句
for ... in ... 表达从(字符串、序列等)中依次取值,又称为遍历, 如果不需要使用自定义的变量,可以将自定义变量写为“_”,只执行循环次数。
break, return # 有异常会打断程序,不会通过else语句
for '变量' in '集合': # 可迭代对象(包含字符串、列表、元组、集合和字典等)
{i*i for i in range(a, b)} # 用于遍历
5.3 跳转语句
跳转语句能够改变程序的执行顺序,包括break、continue、raise、return(函数和方法时使用)。 # break和continue用于循环体中,而return用于函数中
- raise Exception 主动抛出自定义异常,抛出异常后,程序会全部退出,后续不再执行。
'break语句'
if '条件':
break # break语句用于强行退出循环体,通常与分支结构if一起使用
'continue语句'
for i in range(x):
if '某条件':
continue # continue用于结束本次循环,跳过未执行的语句,继续下一次循环
'raise'
raise Exception # 主动抛出自定义异常,抛出异常后,程序会全部退出,后续不再执行
'return'
def ass:
return 'xxxx' # return 直接跳出函数, (用于函数中)