第一节:Python 快速入门编程基础-1
文章目录
课程目标
- 理解Python的基本语法
- 学习变量和基本数据类型
- 掌握简单的输入输出操作
- 高级数据结构
课程内容
1. Python简介
-
Python是什么?
- Python是一种高级编程语言,由Guido van Rossum于1989年发明。
- Python以其清晰的语法和代码可读性而著称,非常适合初学者。
-
为什么选择Python?
- 易于学习
- 强大的库支持
- 广泛的应用领域(如数据分析、人工智能、网站开发等)
2. 环境搭建
-
安装Python
- 访问Python官网,下载并安装适合你操作系统的Python版本。
- 修改清华镜像源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
-
安装代码编辑器
3. 输入输出
- 输入
- 使用
input()
函数获取用户输入。
name = input("请输入你的名字:") print("你好," + name)
- 使用
- 输出
- 使用
print()
函数输出内容。
print("Hello, world!")
- 使用
4. 变量和数据类型
-
变量
- 变量是一个存储数据值的容器,它可以在程序中被使用和修改。
- 定义变量:
name = "子衿"
-
基本数据类型
- 整数:
int
,如5
,-3
- 浮点数:
float
,如3.14
,-0.001
- 字符串:
str
,如"Hello, world!"
,'Python'
- 布尔值:
bool
,如True
,False
- 整数:
5. 注释
- 单行注释:
# 这是一个注释
- 多行注释:
"""这是一个多行注释"""
6. 列表和元组
-
列表
- 可变序列,可以添加、删除或更改元素。
- 示例:
numbers = [1, 2, 3, 4, 5] numbers.append(6) # 添加元素 print(numbers)
-
元组
- 不可变序列,一旦创建就不能更改。
- 示例:
point = (10, 20) print(point)
7. 字典
-
创建字典
- 使用花括号
{}
创建字典。 - 示例:
person = {"name": "失速引擎", "age": 30}
- 使用花括号
-
访问字典元素
- 使用键访问字典中的元素。
- 示例:
print(person["name"])
附录
机器码
汇编指令 | 描述 | 机器码(示例,x86架构) |
---|---|---|
MOV EAX, 1 | 将立即数1移动到寄存器EAX | B8 01 00 00 00 |
ADD EAX, EBX | 将EBX寄存器的值加到EAX寄存器 | 01 D8 |
SUB EAX, EBX | 将EBX寄存器的值从EAX寄存器减去 | 29 C0 |
PUSH EAX | 将EAX寄存器的值压入堆栈 | 50 |
POP EBX | 从堆栈中弹出值到EBX寄存器 | 5B |
JMP label | 无条件跳转到标签label | E9 XX XX XX XX |
JE label | 如果上一个条件为真(ZF=1),则跳转到标签label | 0F 84 XX XX XX XX |
CALL function | 调用函数function | E8 XX XX XX XX |
RET | 从函数返回,将控制权返回给调用者 | C3 |
INT 0x80 | 调用操作系统中断处理程序(Linux系统调用) | CD 80 |
字节码
指令 | 操作码 | 说明 |
---|---|---|
LOAD_CONST | 100 | 从常量池中加载常量 |
LOAD_GLOBAL | 116 | 从全局命名空间中加载名称 |
STORE_FAST | 125 | 将值存储到局部变量 |
POP_TOP | 1 | 弹出栈顶元素 |
ROT_TWO | 23 | 交换栈顶两个元素 |
ROT_THREE | 24 | 交换栈顶三个元素 |
DUP_TOP | 25 | 复制栈顶元素 |
UNARY_POSITIVE | 10 | 单目正号操作符 |
UNARY_NEGATIVE | 11 | 单目负号操作符 |
UNARY_NOT | 12 | 逻辑非操作 |
BINARY_POWER | 19 | 幂运算 |
BINARY_MULTIPLY | 20 | 乘法 |
BINARY_TRUE_DIVIDE | 21 | 真除法 |
INPLACE_MULTIPLY | 26 | 原地乘法 |
GET_ITER | 68 | 获取迭代器 |
FOR_ITER | 93 | 进行循环迭代 |
CALL_FUNCTION | 64 | 调用函数 |
MAKE_FUNCTION | 83 | 创建函数 |
BUILD_SLICE | 90 | 构建切片 |
EXTENDED_ARG | 144 | 扩展参数,用于处理大于255的参数数 |
RAISE_VARARGS | 144 | 引发异常 |
RETURN_VALUE | 83 | 从函数返回值 |
JUMP_FORWARD | 110 | 无条件跳转 |
JUMP_IF_TRUE_OR_POP | 92 | 如果条件为真,则跳转,否则弹出栈顶元素 |
JUMP_IF_FALSE_OR_POP | 93 | 如果条件为假,则跳转,否则弹出栈顶元素 |
字符串操作
方法/属性 | 说明 | 示例 |
---|---|---|
str.lower() | 将字符串转换为小写 | "HELLO".lower() 返回 "hello" |
str.upper() | 将字符串转换为大写 | "hello".upper() 返回 "HELLO" |
str.capitalize() | 将字符串的首字母大写 | "hello".capitalize() 返回 "Hello" |
str.title() | 将每个单词的首字母大写 | "hello world".title() 返回 "Hello World" |
str.strip() | 移除字符串首尾的空白字符 | " hello ".strip() 返回 "hello" |
str.lstrip() | 移除字符串左侧的空白字符 | " hello ".lstrip() 返回 "hello " |
str.rstrip() | 移除字符串右侧的空白字符 | " hello ".rstrip() 返回 " hello" |
str.find(sub) | 查找子字符串,返回子字符串的最低索引 | "hello".find("lo") 返回 3 |
str.rfind(sub) | 从右侧开始查找子字符串,返回子字符串的最高索引 | "hello".rfind("l") 返回 2 |
str.replace(old, new) | 替换字符串中的子字符串 | "hello".replace("l", "x") 返回 "hexxo" |
str.split(sep) | 以指定分隔符分割字符串 | "hello world".split() 返回 ["hello", "world"] |
str.join(iterable) | 将序列中的元素以指定的字符串连接生成一个新的字符串 | " ".join(["hello", "world"]) 返回 "hello world" |
str.startswith(prefix) | 检查字符串是否以指定前缀开始 | "hello".startswith("he") 返回 True |
str.endswith(suffix) | 检查字符串是否以指定后缀结束 | "hello".endswith("lo") 返回 True |
str.isalpha() | 检查字符串是否只包含字母 | "hello".isalpha() 返回 True |
str.isdigit() | 检查字符串是否只包含数字 | "123".isdigit() 返回 True |
str.isalnum() | 检查字符串是否只包含字母和数字 | "hello123".isalnum() 返回 True |
str.islower() | 检查字符串是否全部为小写 | "hello".islower() 返回 True |
str.isupper() | 检查字符串是否全部为大写 | "HELLO".isupper() 返回 True |
str.istitle() | 检查字符串是否符合标题格式 | "Hello World".istitle() 返回 True |
str.len() | 获取字符串长度 | len("hello") 返回 5 |
str.count(sub) | 计算子字符串出现的次数 | "hello".count("l") 返回 2 |
str.format(*args, **kwargs) | 格式化字符串 | "{} is {}".format("hello", "world") 返回 "hello is world" |
列表操作
操作 | 说明 | 示例代码 |
---|---|---|
append(x) | 在列表末尾添加一个元素 x | lst.append(1) |
extend(iterable) | 将一个可迭代对象(如另一个列表)的所有元素添加到列表末尾 | lst.extend([2, 3]) |
insert(i, x) | 在指定位置 i 插入一个元素 x | lst.insert(0, 0) |
remove(x) | 移除列表中第一个值为 x 的元素 | lst.remove(1) |
pop([i]) | 移除列表中指定位置 i 的元素,并返回该元素。如果不指定位置,默认移除并返回列表中的最后一个元素 | lst.pop() 或 lst.pop(0) |
clear() | 清空列表中的所有元素 | lst.clear() |
index(x[, start[, end]]) | 返回列表中第一个值为 x 的元素的索引,可以指定搜索的起始和结束位置 | lst.index(2) 或 lst.index(2, 1, 5) |
count(x) | 返回 x 在列表中出现的次数 | lst.count(2) |
sort(key=None, reverse=False) | 对列表中的元素进行排序 | lst.sort() 或 lst.sort(reverse=True) |
reverse() | 反转列表中的元素顺序 | lst.reverse() |
copy() | 返回列表的浅拷贝 | new_lst = lst.copy() |
len(lst) | 返回列表长度 | length = len(lst) |
min(lst) | 返回列表中的最小值 | min_value = min(lst) |
max(lst) | 返回列表中的最大值 | max_value = max(lst) |
sum(lst) | 返回列表中所有元素的和 | total = sum(lst) |
字典操作
操作 | 说明 | 示例代码 |
---|---|---|
创建字典 | 创建一个空字典或带有初始键值对的字典 | my_dict = {} 或 my_dict = {"name": "Alice", "age": 25} |
添加元素 | 向字典中添加新的键值对 | my_dict["gender"] = "female" |
删除元素 | 根据键删除字典中的元素 | del my_dict["age"] |
更新元素 | 更新字典中已存在的键的值 | my_dict["age"] = 26 |
访问元素 | 通过键访问字典中的值 | name = my_dict["name"] |
检查键存在 | 检查键是否存在于字典中 | if "name" in my_dict: |
获取所有键 | 获取字典中所有的键 | keys = my_dict.keys() |
获取所有值 | 获取字典中所有的值 | values = my_dict.values() |
获取所有键值对 | 获取字典中的所有键值对 | items = my_dict.items() |
清空字典 | 清空字典中的所有元素 | my_dict.clear() |
复制字典 | 创建字典的浅拷贝或深拷贝 | copy = my_dict.copy() 或 deep_copy = deepcopy(my_dict) |
字典推导式 | 使用推导式创建字典 | {key: key * 2 for key in my_dict} |
合并字典 | 将两个或多个字典合并为一个 | {**dict1, **dict2} |
遍历字典 | 遍历字典中的键、值或键值对 | for key, value in my_dict.items(): |