学习来源说明:本文档是博主在Python速成考试期间,观看B站UP主「林粒粒呀」的视频《3小时超快速入门Python | 动画教学【2025新版】【自学Python教程】【零基础Python】【计算机二级Python】【Python期末速成】》所做的学习笔记。

视频链接https://www.bilibili.com/video/BV1Jgf6YvE8e/?share_source=copy_web&vd_source=01a7e384949d1d48dd1888b92196b285

图片声明:本文档中的所有图片均来自上述视频截图。

更多print

image-20250222001913376

字符串连接

1
print(“Hel1o” + “ world” +  “!”)

输出结果:Hello world!

单双引号转义

即通过 \ 告诉计算机 “ or ‘ 是纯符号 不算字符串

1
print("He said \"Let\'s go!\"")

输出结果:He said "Let's go!”

换行

1
print("Hello! \nHi!")

输出结果:Hello!

​ Hi!

三引号跨行字符串

1
2
print("""君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪

Python变量

不能空格 不能数字开头 不能有引号

形式 对错 原因
my_love
my love × 空格
1my_love × 数字开头
“1my_love” × 引号
my_love! × 有其他符号

Python命名规则

Python3支持中文命名 但在输出时可能会乱码

下划线命名法

1 字母全部小写
2 不同单词用下划线分隔

user_age user_gender

驼峰命名法

单词用首字母大写分隔
UserAge UserGender

Python数学运算

名称 符号
+
-
**
/
取整除 - 往小的方向取整数 //
取余 %
次方 **

import math 导入数学库

math.函数名(…)

Python注释

#号 单行注释 “”” “”” 三引号多行注释

vscode中按 ctrl + / 进行快速注释

Python数据类型

例子 类型
“Hello” 字符串 str
6 整数 int
6.0 浮点数 float
True 布尔类型 bool
None 空值类型 NoneType

Python交互模式

命令行模式

平时的python文件

交互模式

读一行执行一行

image-20250222170251289

Python input

其实就是C++的cout

但在python中是可以用变量去承接用户输入的内容 但这个变量会默认是字符串 即使你输入的是数字

1
2
3
4
5
user_age = input("请输入你的年龄:")
print(“知道了,你今年” + user_age + “岁了!”)
# 输出
# 请输入你的年龄:20
# 知道了,你今年20岁了!

但我们无法控制用户仅输入数字 可以给用户提示信息 但可能会有人觉得不美观

这时我们可以引入一个库 用正则表达re.search(r'\d+', user_input) 从用户输入的字符串中查找第一个连续的数字序列 \d+ 表示匹配一个或多个数字

1
2
3
4
5
6
7
8
9
10
11
12
import re

while True:
user_input = input("请输入你的年龄:")
match = re.search(r'\d+', user_input)
if match:
user_age = int(match.group())
user_age_after_10_year = user_age + 10
print("您十年后会是" + str(user_age_after_10_year) + "岁")
break
else:
print("输入无效,请输入一个有效的年龄!")

Python条件语句

和C++的条件判断差不多 但需要注意缩进

名称 符号
赋值 =
相等 ==
恒等(在python中不存在) ===
海象运算符 :=
不等于 !=
大于等于 >=
小于等于 <=
1
2
3
4
5
6
7
8
# 海象运算符讲解
# 假设你有一个场景,需要计算一个值,然后用这个值做判断。通常你会这样写:
x = some_function() # 先计算并赋值
if x > 10: # 再用这个值做判断
print("x 大于 10")
# 使用海象运算符,可以把这两步合并成一步:
if (x := some_function()) > 10: # 在判断的同时赋值
print("x 大于 10")
1
2
3
4
5
6
if[条件]:
[执行语句]
[执行语句]
else:
[执行语句]
[执行语句]

Python嵌套/多条件判断

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#嵌套
if[条件-]:
if[条件二]:
[语句A]
else:
[语句B]
else:
[语句C]

#多条件判断
if[条件一]:
[语句A]
elif[条件二]:
[语句B]
elif[条件三]:
[语句C]
else:
[语句D]

image-20250223125050347

Python逻辑运算

运算优先级 not > and > or

名称 符号
and
or
not

Python列表

相当于C++中的数组,并且自带相关方法

方法与函数的区别:方法是 对象.方法名(…) 函数是 函数名(对象)

1
shopping_list =["键盘","键帽”]
方法 or 函数 作用
shopping_list.append(“显示器”) 往列表里面添加东西
shopping_list.remove(“显示器”) 删除列表的东西
sorted(num_list) 将列表排序好

Python字典

存储键值对

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 常见形式
comtacts = {"键":"值","小明":"123456789"}

# 获取键的值
comtacts["小明"]

# 但有时候,我们不可避免的会发现,有些键是一样的(通讯录 同样是小明),我们该怎么区分
# 这种是不行的 原因是因为键是不可变的 但如果用列表当键的话 键是可变的
comtacts = {"[小明,23]":"147258369","[小明,27]":"147258369","[小明,33]":"789456123"}
# 这种是ok的 tuple元组 里面的内容不可变
comtacts = {"(小明,23)":"147258369","(小明,27)":"147258369","(小明,33)":"789456123"}

# 往字典添加数据
contacts["小张"] = "124578963"
# 删除字典内的数据
del contacts["小明"]
# 查询字典内是否存在相关键 会返回布尔值
"小明" in contacts

Python for循环

和C++中的for循环有很大的区别 C++中你是可以通过i去控制其循环的方式的 但python不能(这里的不能指的是不能中途去改变i的值)

1
2
3
4
5
6
7
# Python:无法在循环中直接修改迭代对象,但c++可以
水果篮 = ["🍎", "🍌", "🍊", "🍇", "🍓"]
for i in range(len(水果篮)):
if 水果篮[i] == "🍌":
i += 1 # 试图跳过下一个(但实际无效!)
print("我吃:" + 水果篮[i])
# 输出:🍎 🍌 🍊 🍇 🍓(无法跳过🍊)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
for 变量名 in 可迭代对象:
# 对每个变量做些事情

# 如果使用字典.items需要注意 变量名是两个
temperature_dict = {"111":36.4, "112":36.6, "113":36.2}
for staff_id, temperature in temperature_dict.items()
if temperature >= 38
print(staff_id)
# 等价于
for temperature tuple in temperature_dict.items():
staff id = temperature_tuple[0]
temperature = temperature tuple[1]
if temperature >= 38:
print(staff_id)

# 通过步长去控制for循环
## for i in range(10)这时候会默认起始值为0
for i in range(5, 10)
print(i)
# 输出:5 6 7 8 9 10(实际上空格是换行 这里省略)
for i in range(5, 10, 2)
print(i)
# 输出:5 7 9
方法 功能
字典.keys() 所有键
字典.values() 所有值
字典.items() 所有键值对

Python while循环

和C++的差不多

image-20250223174342343

Python 格式化字符串

format方法

里面的数字表示会用里面的第几个参数去替换

或者是直接用变量名

其中format方法可以直接将数字转为字符串 并且通过.xf控制精确到第几位小数点

image-20250223174708038

image-20250223174733288

image-20250223174909965

f-字符串

Python函数(上)

也是和C++的差不多 但是通过def去定义

image-20250223175322905

Python函数(下)

记得往里面加return 不加的话 默认是返回None

Python引入模块

第三种不推荐 因为有时候两个模块(包)可能会有重复的函数名 会冲突 或者引入了用不上的函数

引用第三方库 pip instal 库名

image-20250223175851282

Python创建类(上)

和C++的差不多 先创类 然后 ____init(self)相当于构造函数 self不用传入对象进去 相当于说是对象本身

image-20250224000209107

Python创建类(下)

和C++的区别是 方法是在类中定义的 不需要声明 并且有个小知识点是 “字符串” * X就打印X次字符串

image-20250224000649877

Python类继承

和C++差不多 但这里人和猫的尾巴属性不一样 如果我们在子类使用 ____init(self) 就会优先调用子类的构造函数而不是调用父类的构造函数 如果在子类的构造函数上加年龄和性别的话又会代码重复 这时我们就会选择super. __init(self)告诉程序 你给我去调用父类函数的构造函数先 class 类名(父类名)

image-20250224000949119

Python文件路径

绝对路径和相对路径

Python文件操作(上)

1
2
3
4
5
6
7
8
9
10
# open是方法 然后到路径 权限 编码
open("./data.txt", "r" encoding="utf-8")
read() # 读取文件的内容 以字符串的形式返回 会一次性读
read(10) # 只会读取1-10个字节的文件内容 如果再调用read(10)会读取11-20个字节的文件内容
readline() # 返回一行文件内容的字符串 包括回车 常与while使用 如果监测到返回的是空字符串就表示读完了
readlines() # 返回全部文件内容组成的列表 比方说一首四有四行 调用后返回list["第一行/n", "第二行/n"] 常与for使用
close() # 关闭文件
# 自动关闭文件
with open("路径") as f:
print(f.read())

image-20250224002015708

Python文件操作(下)

w是写 如果之前就存在文件 会覆盖之前的文件 补修覆盖就使用a(附加)但这两个都不能读 这时候r+就表示读写

1
2
open("./data.txt", "r" encoding="utf-8") as f # 指如果没有这个文件 就会创建这个文件并命名为f
write() # 写方法 但不会自动换行 需要自己加上/n

Python异常处理

名称 意义
IndentationError 缩减错误
ImportError 导入模块错误
ArithmeticError 计算错误
SyntaxError 语法错误
IndexError 索引错误
ZeroDivisionError 分母为零错误
AttributeError 属性错误
ValueError 值错误
KeyError 键错误
ZeroDivisionError 分母为零错误

通过try except去拦截报错 会从上至下执行

image-20250224004426971

Python测试(上)

调库进行测试

python中自带assert 后面跟表达式 如果是False 会返回AssertionError断言错误 一旦有这个错误就会终止

import unittest 引用unittest这个库

from 文件名 import 函数名/类名

继承unittest中的一个类 并在其中写方法 命名要以test_ 开头 unittest会自动检索test_ 开头的文件

在终端输入python -m unittest

image-20250224005107255

Python测试(下)

image-20250224005518779

Python高阶和匿名函数

高阶函数就算往一个函数里面传函数 calculate_and_print(3, calculate_square)

匿名函数就是有些函数 只用一次 去定义的话就很麻烦 直接只写一次 写完就扔

image-20250224010052670