Python笔记(更新中)
1. 第一个python程序:
1.1 在cmd窗口执行python代码
-
打开\(CMD\)(命令提示符)程序,输入\(Python\)并回车
然后,在这里输入代码回车即可立即执行
-
我们可以将代码写入一个\(.py\)后缀的文件里,然后在\(CMD\)中使用\(python\)命令运行它
-
使用第三方\(IDE\)(集成开发工具),如
pyCharm
1.2 pyCharm常用快捷键:
1.3 打印输出语句:
print("Hello World")
输出不换行语句:
print("Hello",end = '')
注:
- 括号和引号必须是英文
1.4 解释器
将\(py\)代码翻译成01代码方便让计算机去识别并执行的程序
1.5 常见问题
-
进入\(CMD\)之后要输入python才可以编写\(py\)代码,'\(python\)'不是内部或外部命令,也不是可运行的程序或批处理文件
-
\(CMD\)出现:无法初始化设备\(PRN\); 这是因为没有进入到\(python\)解释器环境内执行代码
-
执行出现\(SyntaxError:invalid character (U+201C)\); 这是因为,代码的符号是中文符号
2 基础语法
2.1 常用字面量(代码中固定的值):
-
数字
- 整数(\(int\)):\(10\),\(-10\)
- 浮点数(\(float\)):\(13.14\)
- 复数(\(complex\)):\(4 + 3i\)
- 布尔(\(bool\)):\(TRUE\),\(FALSE\)
-
字符串:由任意数量的字符组成
-
列表:有序的可变序列
-
元组:有序的不可变序列
-
集合:无序不重复集合
-
字典:无序\(Key-Value\)集合
2.2 注释(增加可读性):
- 单行注释:#右边都是注释
建议#和内容用一个空格隔开
- 多行注释:以三个引号引起来
2.3 变量:
在程序运行时,能储存计算结果或能表示值的抽象概念简单的说,变量就是在程序运行时,记录数据用的
变量定义格式:变量名称 = 变量的值
特征:
变量的值可以改变
如何输出多份内容:
print(内容1,内容2)
2.4 数据类型
type(被查看的数据)
:可以查看数据的类型(有返回值)
使用方式:
-
使用
print
直接输出类型信息print(type(1)) print(type(3.14)) print(type("字符串"))
输出如下:
-
使用变量存储
type()
语句结果string_type = type("string") print(string_type)
输出如下:
-
使用
type()
语句,查看变量中存储的数据类型信息num = 10 print(type(num))
输出如下:
\(type()\)查看的是变脸存储的数值类型。因为,变量无类型,但是它存储的数据有
2.5 数据类型的转换
-
int(x)
:将\(x\)转换为一个整数 -
float(x)
:将\(x\)转换为一个浮点数 -
str(x)
:将\(x\)转换为字符串
注:
-
都带有返回值
-
万物皆可转字符串,但想将字符串转数字一定要确保字符串内容都得是数字
-
浮点数转整数会丢失精度
2.6 标识符
定义:是用户在编程的时候所使用的一系列名字,用于给变量,类,方法等命名
例如:
-
变量的名字
-
方法的名字
-
类的名字
命名规则:
-
内容限定
-
只允许出现英文,中文,数字,下划线这四类元素(不推荐使用中文)
-
数字是不可以用在开头的
-
-
大小写敏感
-
不可使用关键字
命名规范:
变量名,类名,方法名不同的标识符有不同的规范
变量命名规范:
-
见名知意
-
下划线命名法
-
英文字母全小写
2.7 运算符
-
常见算术运算符有:
加(+),减(-),乘(×),除(/),整除(//),取余(%),求平方(**) -
赋值运算符:
-
标准赋值:\(=\)
-
复合赋值:\(+=,-=,*=,/=,//=,%=,**=\)
2.8 字符串
2.8.1 字符串定义:
-
单引号定义:
name = 'Eric'
-
双引号定义:
name = "Eric"
-
三引号定义:
name = """Eric"""
使用变量接收他就是字符串,不接收就是多行注释
如何字符串包含单引号,双引号本身:
-
在字符串内 可以用单引号包含双引号
name = 'Eric""'
-
可以用双引号包含单引号
name = "Eric''"
-
使用转义字符 \ 解除引号的效用
name = "Eric\'"
2.8.2 字符串拼接
- 字符串和字面量之间的拼接(仅限于字符串和字符串的拼接)
print("123" + "456")
缺点:
-
变量多,拼接起来麻烦
-
字符串无法和数字或其他类型完成拼接
2.8.3 字符串格式化
name = "李华"
message = "我喜欢 %s" % name
print(message)
age = 19
salary = 20000
float_num = 13.14
message = "我是%s今年%d岁月薪%d 较去年增长了%f" % (name, age, salary, float_num)
print(message)
输出如下:
-
%:表示要占位
-
s:表示将变量变成字符串放入占位的地方
-
d:表示将变量变成整数放入占位的地方
-
f:表示将变量变成浮点数放入占位的地方
-
多个变量占位的话,要用括号包起来,并按照占位顺序逗号隔开
-
这里数字也能用%s占位是因为将数字转换成了字符串
2.8.4 字符串格式化的精度控制
语法:\(m.n\)的形式控制,如%5d,%5.2f,%.2f,%5,2s(m和.n均可以省略)
-
如果\(m\)比数字本身小,则\(m\)不起作用
-
\(.n\)对小数部分做精度限制,同时会对小数部分做四舍五入
int_num = 12
float_num = 3.84
print("%5d" % int_num)
print("%5d" % float_num)
print("%5.2f" % int_num)
print("%5.2f" % float_num)
print("%.2f" % int_num)
print("%.2f" % float_num)
\(output\):
2.8.5 快速字符串格式化
语法:f"内容{变量}"
优点:
-
不理会类型
-
不做精度的控制
-
适合对精度没有要求的时候快速使用
age = 18
name = '李华'
school = 'Python'
print(f"我是{name},今年{age}岁,正在学{school}")
\(output\):
2.8.6 表达式格式化
表达式:一条具有明确执行结果的代码语句
语法:f"{表达式}"
例:
1 * 1
,4 + 2
, name = 'Eric'
print(f"打印结果{1 * 1}")
print("打印结果%d" % (1 * 1))
print("字符串在python的类型是%s" % type("123"))
\(output\):
2.9 数据输入
-
input()
的功能是获取键盘的输入 -
可以使用:\(input\)(提示信息),用以在使用者输入内容之前显示提示信息
-
要注意,无论键盘输入什么类型的数据,获取到的数据永远都是字符串类型
2.10 布尔类型和比较表达式
布尔(bool):被划分为数字类型,底层用\(1\)表示\(True\),\(0\)表示\(false\)
-
true:表示真
-
false:表示假
定义变量存储布尔类型数据:变量名称 = 布尔类型字面量
布尔类型不仅可以自行定义,同时也可以通过计算得来,也就是使用比较运算符进行比较运算得到布尔类型的结果
比较运算符:
<,>,>=,<=,!=,==
result = 1 == 1
print(result, type(result))
result = 2 > 3
print(result, type(result))
\(output\):
2.11 if_else语句
格式:
if age >= 18:
print("YES")
else :
print("NO")
-
\(if\)后的条件不满足的时候\(else\)才执行
-
\(else\)后不需要判断条件
-
判断条件的结果一定是布尔类型
-
不要忘记判断条件后的:冒号
-
归属于\(if\)语句的代码块,需在前方填充4个空格缩进,\(else\)同理
age = 19
if age >= 30:
print("中年人")
elif age >= 20:
print("青年人")
else :
print("年轻人")
-
判断是互斥且有序的,上一个满足后面的就不会判断了
-
缩进和\(if,else\)同理
-
\(elif\)可以写多个
-
可以在条件判断中,直接写\(input\)语句,节省代码量
age = 19
if age >= 18:
if age >= 30:
print("You are old enough to vote")
else:
print("You are old enough to vote")
else:
print("You are old enough to vote")
-
嵌套判断语句可以用于多层次,多条件的逻辑判断
-
嵌套判断语句可以根据需求,自由组合\(if elif else\)来构建多层次判断
-
嵌套判断语句,一定要注意空格缩进,\(python\)通过空格缩进来决定层次关系
2.12 循环语句
2.12.1 while语句
while i < 100:
j = 0
while j < 10:
print(i, j)
注意:
-
\(while\)条件需要布尔类型,\(True\)表示继续循环,\(False\)表示结束循环
-
需要设置循环终止的条件,如\(i += 1\)配合\(i < 100\),就能确保\(100\)次后停止,否则将无限循环
-
同判断语句的嵌套一样,循环的嵌套语句注意空格缩进
-
避免出现无限循环
2.12.2 for语法
语法:
# 将name的内容,挨个取出赋于x临时变量
# 就可以在循环体内对x进行处理
for 临时变量 in 待处理数据集
循环满足条件执行的代码
-
与\(while\)不同,\(for\)无法定义循环条件,循环次数只取决于被处理的数据集中,依次取出内容进行处理
-
\(for\)循环嵌套和\(while\)或者\(if\)同理,同样需要注意通过缩进确定层次关系
-
\(for\)循环和\(while\)循环可以相互嵌套使用
2.12.3 range语句:
语法1:
range(num)
:
获取一个从\(0\)开始,到\(num\)结束的数字序列(不含\(num\))
如range(5) = [0,1,2,3,4]
语法2:
range(num1,num2)
:
获得一个从\(num1\)开始,到\(num2\)结束的数字序列(不含num2本身)
如,range(5,10)
取得的数据是:[5,6,7,8,9]
语法3:
range(num1,num2,step)
:
获得一个从\(num1\)开始,到\(num2\)结束的数字序列(不含\(num2\)本身)数字之间的步长,以\(step\)为准(斯\(step\)默认为\(1\))
如,range(5,10,2)
取得的数据就是[5,7,9]
2.12.4 for循环临时变量作用域
for i in range(5):
print(i)
print(i)
-
\(for\)循环中的临时变量,其作用域限定为:循环内
-
这种限定:
-
是编程规范的限定,非强制要求
-
不遵守也能运行,但是不建议这样做
-
如需访问临时变量,可以预先在循环外定义它
-
2.12.5 break和continue
-
continue
作用:中断所在循环的当此执行,直接进行下一次 -
break
作用:直接结束所在的循环
注意:
-
\(continue\)和\(break\),在\(for\)和\(while\)循环中作用一致
-
在嵌套循环中,只能作用在所在的循环上,无法对上层循环起作用
3. 函数
3.1 函数定义
函数:是组织好的,可重复使用的,用来实现特定功能的代码段
语法:
def 函数名(传入参数):
函数体
return 返回值
-
要先定义函数,后调用函数
-
参数不需要可以省略,返回值不需要可以省略
-
将功能封装在函数内,可供随时重复使用
-
提高代码复用性,减少重复代码,提高开发效率
3.2 带参函数
功能:在函数进行计算的时候,接受外部(调用时)提供的数据
def add(a,b):
return a+b
-
函数定义中的参数,称之为形式参数
-
函数调用中的参数,称之为实际参数
-
函数的参数数量不限,使用逗号分隔开
-
传入参数的时候,要和形式参数一一对应,逗号隔开
3.3 返回值
利用return
语句返回函数计算好的数据
如果函数没有返回值类型,可以返回None
类型,其类型为<class 'NoneType'>
,无返回值的函数,实际上就是返回None
这个字面量(None
代表空,无含义)
\(None\):
-
用在函数无返回值
-
用在\(if\)判断上
-
在if判断中,
None
等同于false
-
一般用于在函数中主动返回
None
,配合if
判断做相关处理
-
-
用在声明无内容的变量上
- 定义变量,但暂时不需要变量有具体值,可以用
None
- 定义变量,但暂时不需要变量有具体值,可以用
3.3 函数说明文档
作用:
对函数进行说明解释,帮助更好理解函数的功能
def add(a,b):
"""
add函数可以接收2个参数,进行两个数的相加操作
:param x: 形参x表示要相加的其中一个数
:param y: 形参y表示要相加的另一个数
:return: 返回值是两数相加的结果
"""
return a+b
-
:param
用于解释参数 -
:return
用于解释返回值
3.4 变量在函数中的作用域
变量作用域指的是变量的作用范围(变量在哪里可以用,在哪里不可以用)主要分两类:局部变量和全局变量
-
局部变量:是定义在函数体内部的变量,即在函数体内部生效
-
全局变量:在函数内部和外部均可以使用
-
用
global
关键字可以将函数内定义的变量声明为全局变量
4. 容器
4.1 数据容器介绍
\(Python\)中的数据容器:
一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素。每一个元素,可以是任意类型的数据,如字符串,数字,布尔等
容器根据
-
是否支持重复元素
-
是否可以修改
-
是否有序,等分为5类:
列表(\(list\)),元组(\(tuple\)),字符串(\(str\)),集合(\(set\)),字典(\(dict\))
4.2 列表
基本语法:
-
字面量:
[元素1,元素2,元素3,...]
-
定义变量:变量名 =
[元素1,元素2,元素3,...]
-
定义空列表:变量名 =
[]
/list()
-
根据索引取元素:
列表[下标元素]
正向索引:
反向索引:
二维列表:
要注意下标索引的取值范围,超出范围无法取出元素,并且会报错
注意:
列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套和下标索引
补充知识
制表符\t
:效果等同于tab
键,它可以让我们的多行字符串进行对齐