内容涵盖 数据结构、控制流、函数定义与调用、异常处理 四大核心模块,语言简洁、示例清晰,适合初学者或需要快速复习的读者。
目标:掌握 Python 基础语法,能够熟练操作常用数据结构、编写逻辑控制流程、定义和调用函数,并处理常见运行时错误。
python中常用的代码注释的方法有2种,
#,#后面的内容不会被执行'''或""",注意要成对出现
'''
这里的内容不会被执行
这里的内容不会被执行
'''
"""
这里的内容不会被执行
这里的内容不会被执行
"""
| 类型 | 示例 | 说明 |
|---|---|---|
| int | 42, -7 | 任意精度整数(无大小限制) |
| float | 3.14, -2.5e3 | 双精度浮点数(64位,遵循 IEEE 754) |
| complex | 3+4j, 1j | 复数,real + imag*j |
bool:只有两个值 True或False 实际上是 int 的子类(True == 1, False == 0)
use_gpu=True
use_cpu=False
str:Unicode 字符串(不可变) 字符串类型的变量不能变化,但是你可以给他重新赋值。
name="zhangsan"
location="Changzhou"
序列中的数字可以不使用引号,但是字符串必须使用引号
name_list=["zhaowu","lisi"]
age_list=[18,21,"ten"]
status=(1,100,"bad")
range(0,10,2)
注意python中的索引的下标是从0开始。
这里的seq就是定义的序列的变量名
seq=(True,1001,1552,"mazi")
seq[0], seq[-1]seq[1:3], seq[:-1] 切片时注意区间是左闭右开,即输出不包含右边所在位置的值。len(seq)x in seqtype(变量名)
name="zhangsan"
type(name)
<class 'str'>
isinstance()
isinstance(name,str) #True
isinstance(100,int) #True
isinstance(name,(list,tuple)) #False 可以一次检查是否为多个类型之一。
isinstance(变量名,变量类型)这种检测方法会返回逻辑值True或False。所以一般优先使用isinstance函数。
Python 提供了多种内置数据结构,用于高效存储和操作数据。
特点:有序、可变、允许重复元素。 创建:
fruits = ["apple", "banana", "cherry"]
numbers = [1, 3, 5, 4]
mixed = [1, "hello", 3.14, True]
常用操作:
访问元素(索引从0开始)
print(fruits[0]) # "apple"
修改元素
fruits[1] = "orange"
添加元素
fruits.append("grape") # 末尾添加
fruits.insert(1, "kiwi") # 在指定位置插入
删除元素
fruits.remove("apple") # 按值删除
last = fruits.pop() # 弹出最后一个元素
del fruits[0] # 按索引删除
切片(slice)
sub = fruits[1:3] # ["orange", "cherry"]
特点:有序、不可变、允许重复。 用途:存储不应被修改的数据(如坐标、RGB 值)。 示例:
point = (10, 20)
colors = ("red", "green", "blue")
print(point[0]) # 10
point[0] = 5 # ❌ 报错!元组不可修改
特点:无序(Python 3.7+ 保持插入顺序)、键值对、键必须唯一且不可变。 创建与操作:
student = {"name": "张三", "age": 20, "major": "计算机"}
访问
print(student["name"]) # "张三"
修改/新增
student["age"] = 21
student["gpa"] = 3.8
删除
del student["major"]
安全访问(避免 KeyError)
print(student.get("phone", "未提供")) # "未提供"
遍历
for key, value in student.items():
print(f"{key}: {value}")
特点:无序、不重复、支持数学集合运算。 用途:去重、成员检测、交并差集。 示例:
a = {1, 2, 3}
b = {3, 4, 5}
print(a|b) # 并集: {1, 2, 3, 4, 5}
print(a & b) # 交集: {3}
print(a - b) # 差集: {1, 2}
print(a ^ b) # 对称差集:{1, 2, 4, 5}
a.add(4)
a.discard(1) # 安全删除(不存在不报错)
| 运算 | 数学符号 | Python 方法 | Python 运算符 |
|---|---|---|---|
| 并集(Union) | A ∪ B | A.union(B) | A | B |
| 交集(Intersection) | A ∩ B | A.intersection(B) | A & B |
| 差集(Difference) | A − B | A.difference(B) | A - B |
| 对称差集 | A Δ B | A.symmetric_difference(B) | A ^ B |
控制程序执行顺序的语句。
score = 85
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
else:
grade = "D"
print(f"成绩等级: {grade}") # B
注意:Python 使用 缩进(通常 4 空格或tab)表示代码块,没有花括号 . 不同的缩进代表不同的代码块等级。tab和空格缩进不要混用,否则会出错。
遍历列表
for fruit in ["apple", "banana", "cherry"]:
print(fruit)
遍历字典
for key in student:
print(key)
使用 range()
for i in range(5): # 0, 1, 2, 3, 4
print(i)
for i in range(2, 6): # 2, 3, 4, 5
print(i)
count = 0
while count < 3:
print("Hello")
count += 1
循环控制关键字
break:立即退出循环
continue:跳过本次循环,进入下一次
else(可选):循环正常结束时执行(未被 break 中断)
for i in range(10):
if i == 5:
print(f"停止运行在数字:{i}")
break
else:
print(i)
上面的示例中,else输出的i只能到4,因为满足条件i==5时里面有个break,会直接中断循环。
+ 加- 减* 乘/ 除** 乘方(幂) 2的3次方2**3 2的100次方2**100// 整除,向下取整 14//3 返回是4,-8//3返回是-3% 整除求余数,返回余数 14//3 返回是2
注意:/返回的值始终是float,//对附属也向下取整
== 等于!= 不等于> 大于< 小于>= 大于等于<= 小于等于
注意:等于是2个等号,一个等号是赋值,而且==两端必须数据类型一样,字符串和数值是不相等的
and 与or 或not 非= 赋值,右侧的值赋给左侧。 x = 5+= 加等 x+=1 实际等价于x=x+1-= 减等 y-=2 实际等价于y=y-2*=
/=
//=
%=
**=
以上几种格式都是类似的等价格式
位运算是对整数的二进制位进行操作。
& 按位与| 按位或^ 按位异或~ 按位取反<< 左移>> 右移in 存在于not in 不存在于
name_list=("zhangsan","mike","test","admin",)
for i in name_list:
print(i)
if "admin" not in name_list:
print("no admin")
else:
print("admin exist")
name="Zhangsan"
if "Zhang" in name:
print("姓氏是:Zhang")
成员运算符用来判断是否存在某个成员,对字典,列表,字符串,元组,集合都可以使用。
比较两个对象是否是同一个对象(内存地址相同)
is 是一个对象is not 不是同一个对象从高到低,从左到右,括号最高。
| 优先级 | 运算符 | 说明 |
|---|---|---|
| 1 | () | 括号(最高优先级) |
| 2 | ** | 幂运算(右结合) |
| 3 | +x, -x, ~x | 正、负、按位取反 |
| 4 | *, /, //, % | 乘除模 |
| 5 | +, - | 加减 |
| 6 | <<, >> | 位移 |
| 7 | & | 按位与 |
| 8 | ^ | 按位异或 |
| 9 | | | 按位或 |
| 10 | <, <=, >, >=, ==, !=, in, not in, is, is not | 比较、成员、身份 |
| 11 | not | 逻辑非 |
| 12 | and | 逻辑与 |
| 13 | or | 逻辑或 |
| 14 | := | 海象运算符(赋值表达式,Python 3.8+) |
函数是组织代码、实现复用的基本单元。
def greet(name, greeting="Hello"):
"""
打印问候语(带文档字符串)
参数:
name: 姓名
greeting: 问候语,默认为 "Hello"
返回:
欢迎用户
"""
return f"{greeting}, {name}!"
def 关键字定义函数"""注释的内容"""三个括号里面的内容是对这个函数的功能注释
message = greet("李四")
print(message) # Hello, 李四!
message2 = greet("王五", "Hi")
print(message2) # Hi, 王五!
args:接收任意数量的位置参数(元组)
def sum_all(args):
return sum(args)
new_tuple=(1,3,6)
print(sum_all(new_tuple)) # 10
kwargs:接收任意数量的关键字参数(字典)
def print_info(kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
person={"name":"赵六","age":22} #创建一个字典
print_info(person)
name: 赵六 age: 22
用法:lambda 命令名: 表达式
square = lambda x: x ** 2
print(square(4)) # 16
#与 sorted 结合
points = [(1, 2), (3, 1), (5, 0)]
sorted_points = sorted(points, key=lambda p: p[1])
print(sorted_points) # [(5, 0), (3, 1), (1, 2)]
上面这个这里是对points这个list进行排序,后面的key指定规则,规则是按照输入值的第1个元素 从小到大排序
sorted遍历points这个list时,首先获得的输入是tuple (1,2),然后按照规则获取第1个元素是2.因为下标是从0开始的。
依次获得值是2,1,0,然后对这3个数字按照从小到大的顺序,对list里的tuple进行排序。
所以最终输出的是[(5, 0), (3, 1), (1, 2)]
语法:map(函数,元素)
square = lambda x: x ** 2 #定义1个求平方的匿名函数
numlist= [1,3,5]
list(map(square,numlist)) #[1, 9, 25]
注意:map函数返回的值是迭代器,需要使用list()函数转还能才能看到全部结果
numlist= [1,3,5]
#定义1个求平方的匿名函数
square = lambda x: x ** 2
#运行map对list里的每个值执行square函数
numlist2=list(map(square,numlist)) #[1, 9, 25]
#运行map对2个list的每个值,依次执行匿名函数相乘。
list(map(lambda x,y : x * y,numlist,numlist2)) #[1, 27, 125]
用法:filter(函数,元素) filter返回的是布尔值,也是迭代器,需要使用list转换。
nums=[100,85,65,15,25,89,31]
badscore=list(filter(lambda x : x<60 , nums))
print(badscore)
用法:sorted(元素,key=function,reverse=False)
nums=[100,85,65,15,25,89,31,-21]
sorted(nums) #[-21, 15, 25, 31, 65, 85, 89, 100]
sorted(nums,reverse=True) #倒序排列 [100, 89, 85, 65, 31, 25, 15, -21]
sorted(nums,key=lambda x : x**2) #按照输入的元素的平方,从小到大排序
捕获并处理程序运行中的错误,防止崩溃。
| 异常 | 触发场景 |
|---|---|
| ValueError | 值类型正确但值不合适(如 int("abc")) |
| IndexError | 列表索引越界 |
| KeyError | 字典键不存在 |
| ZeroDivisionError | 除以零 |
try:
num = int(input("请输入一个整数: "))
result = 10 / num
except ValueError:
print("输入不是有效整数!")
except ZeroDivisionError:
print("不能除以零!")
else:
# 无异常时执行
print(f"结果是: {result}")
finally:
# 无论是否异常都会执行(常用于清理资源)
print("程序结束。")
def divide(a, b):
if b == 0:
raise ValueError("除数不能为零!")
return a / b
#调用
try:
print(divide(10, 0))
except ValueError as e:
print("错误:", e)
下一节课,第2节将会学习NumPy、Pandas的使用。