Python_basic
Python-basic for AI course
实验课要求:
课件:https://github.com/pqcu77/2025AI/tree/main
python基础
https://www.runoob.com/python3/python3-tutorial.html
常用conda命令:
conda env list查看conda环境列表conda create –n env_id python=3.9创建新py3.9虚
拟环境
conda activate env_id激活对应python环境conda deactivate关闭对应python环境
print():
- 输入参数为要打印的对象,对象可以有多个
- sep参数,默认值为” “—默认用空格隔开
- end参数,默认值为 “\n”
input():
- 输入参数可以作为提示字符串。会打印出来“提示”用户
- 返回值是读入的字符串
基本数据类型:
简单/基本数据类型
数字
整数
浮点数
布尔值:True / False (注意大写)
- int(True)返回1,int(False)返回0
字符串
- ※空值:a = None
计算
- 整数:加(+)、减(-)、乘(*)、除(/)、整除(//)、幂(**)、模(%)
- 浮点数:加(+)、减(-)、乘(*)、除(/)、整除(//)、幂(**)
- 四舍五入保留k位:round(x,k)
函数:
- 绝对值:abs()
- 最大,最小值:max(),min()
- math模块
**运算符:如+=,=等。python没有++,--运算符
字符串
引号括起的。可以是单引号也可以是双引号
拼接:
- 用
+来拼接—慢 - 用
*来重复自拼接。如print(”hello”*4)
- 用
大小写转换
- title():首字母转换为大写
- lower()
- upper()
常用函数
- 删除空白:
- str.strip() 删除字符串前后的空白字符
- str.rstrip() 删除字符串**后面(右边)**的空白字符
- str.lstrip() 删除字符串**前面(左边)**的空白字符
- 分割
- print(sentence.split())
- print(sentence.split(“,”))
- 替换
sentence = “Life is short, you need Python.”
print(sentence.replace(“h”, “XD”))
print(sentence.replace(“short”, “long”).replace(“Python”, “C++”))
- 删除空白:
类型转换
- datatype() →如:int(),float(),str()…
print(int(4/3))
控制结构
- 代码块与缩进;用缩进来区分关系
- 比较运算符
| 运算符 | 描述 | 实例 |
|---|---|---|
| == | 等于 - 比较对象是否相等 | (a == b) 返回 False |
| != | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 True |
| > | 大于 - 返回x是否大于y | (a > b) 返回 False |
| < | 小于 - 返回x是否小于y | (a < b) 返回 True |
| >= | 大于等于 - 返回x是否大于等于y | (a >= b) 返回 False |
| <= | 小于等于 - 返回x是否小于等于y | (a <= b) 返回 True |
逻辑控制符:and or not
| 运算符 | 逻辑表达式 | 描述 | 实例 |
|---|---|---|---|
| and | x and y | 布尔”与” - 如果 x 为 False,x and y返回 x 的值,否则返回 y 的计算值。 | (a and b) 返回 20 |
| or | x or y | 布尔”或” - 如果 x 是 True,它返回 x的值,否则它返回 y 的计算值。 | (a or b) 返回 10 |
| not | not x | 布尔”非” - 如果 x 为 True,返回False。如果 x 为 False,它返回 True。 | not (a and b) 返回False |
分支结构:
if和elif,后面加冒号,无大括号while1
2
3
4
5
6
- break和continue;用法类似c++
```python
while condition:
do somethingfor:常与迭代器一同使用range(n)—从0遍历到n-1,步长为1range(a,b)—从a遍历到b-1。左闭右开range(start,stop,step)—从start遍历到stop-step,步长为step,step默认为1
数据结构
列表list
- 类似与数组,由一系列按特定顺序排列的元素构成
- list里的元素可以是不同类型
- 访问元素:
- 索引访问:可以是非负索引也可以是负索引
- 修改—可以动态增删&修改
- 添加
append()在末尾添加insert()插入
- 删除
del xxx—使用del语句删除remove()—按值删除元素pop()
- 长度:
len() - 翻转:
reverse()—原地操作,永久修改 - 排序
- 切片
list[start:end]list[start:end:step]
- 赋值(浅复制),指向同一块内存
- 可以用id()函数来获取对象的内存地址
- 身份运算符
is:x is y ⇒id(x)==id(y) 表示二者指向同一块内存。 is和==是不一样的,后者是用于判断引用变量的值是否相等
- 复制
- 深复制
- 浅复制
- 遍历:
for ele in list:前面这个是遍历全体,或者是range来选定一个范围
元组tuple
- 不可变的列表
- 圆括号标识
集合set
- 无序不重复的元素序列
字典dict
- 键值对
- 访问字典中的值,dic(”key”);
- 修改值
- 添加键值对
- 删除键值对:del
- 遍历所有的键值对
for key,value in dic.items(): - 遍历所有键
for key in dic.keys(): - 遍历所有值
for value in dic.values():
两个字典同时遍历:
- 以key同时遍历两个字典(两个字典长度一样,否则以最短的次数输出)
1 | |
- 以key、value同时遍历两个字典(两个字典长度一样,否则以最短的次数输出)
1 | |
- 逐项同时遍历两个字典(两个字典长度一样,否则以最短的次数输出)
1 | |
原文链接:https://blog.csdn.net/wsq119/article/details/115221881
函数
结构:def开头,函数名,括号,冒号结尾,紧跟的所有缩进构成函数体
- 可以处理一组数据,并返回一个或一组值
1 | |
- 用一个或多个变量存储返回的值,或直接使用返回的值
传递实参
- 位置实参:基于实参的顺序,将实参关联到啊哈怒火定义中的形参
- 默认值:具有默认值的形参需排列在参数列表后面(才能达到可以省略的目的)
- 关键字实参:无需考虑实参顺序。将形参变量名写出来,然后赋值

- 对某些数据类型来说,在函数内部对传入变量做的修改,会导致函数外的值夜发生修改,产生副作用(列表、字典会改,但数值、字符串不改)
- 对于数值、字符串等,可以通过返回值传到函数外
如果希望不影响函数外的话:向函数传递列表副本
- 利用切片创建副本 list_name[:]
- 形参前加
*号,可以传递任意数量的实参 - 形参前加
**号,可以传递任意数量的关键字实参
类
1 | |
方法
_init_():构造函数,创建新对象自动调用self:
- 必须写在所有方法参数列表的第一位
- 指代这个对象本身
- 以self为前缀的成员变量可供类中所有方法使用–属性
- self.variable可以访问、创建与修改属性值
python的类属性默认是公有属性,要标记为私有的则要在变量名或函数名前加上两个下划线 “
__”属性修改:最好写一个update的方法
- 也可以直接修改,但破坏了封装
继承
class 子类名(父类名)super()–在子类中通过
super()指向父类允许父类调用子类的方法
子类可以重写父类的方法,可以添加新的属性和方法,继承所有父类的方法
文件与异常
- 读取文件:read()
- open() :参数是文件路径(相对路径和绝对路径都可以)
- open(“文件路径”,“模式”),对于模式参数:
- ‘r’:读取模式(默认)
- ‘w’:写入模式, 如果该文件已存在则打开文件,并从开头开始编辑
,即原有内容会被删除。如果该文件不存在,创建新文件。 - ‘a’:追加模式. 如果该文件已存在,文件指针将会放在文件的结尾
。也就是说,新的内容将会被写入到已有内容之后。如果该文件不
存在,创建新文件进行写入
- open(“文件路径”,“模式”),对于模式参数:
- with():在不再需要访问文件后将文件关闭,无需调用close()
- 逐行读取 readlines()
- 只能将字符串写入文件,如果需要换行,记得写换行符
file 对象
file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:
| 序号 | 方法及描述 |
|---|---|
| 1 | file.close()关闭文件。关闭后文件不能再进行读写操作。 |
| 2 | file.flush()刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。 |
| 3 | file.fileno()返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。 |
| 4 | file.isatty()如果文件连接到一个终端设备返回 True,否则返回 False。 |
| 5 | file.next()**Python 3 中的 File 对象不支持 next() 方法。**返回文件下一行。 |
| 6 | [file.read(size])从文件读取指定的字节数,如果未给定或为负则读取所有。 |
| 7 | [file.readline(size])读取整行,包括 “\n” 字符。 |
| 8 | [file.readlines(sizeint])读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。 |
| 9 | [file.seek(offset, whence])移动文件读取指针到指定位置 |
| 10 | file.tell()返回文件当前位置。 |
| 11 | [file.truncate(size])从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小。 |
| 12 | file.write(str)将字符串写入文件,返回的是写入的字符长度。 |
| 13 | file.writelines(sequence)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。 |
举例:
- 读取文件:
1 | |
情况1:
1 | |
情况2.1:
1 | |
情况2.2:
1 | |
- 写文件
1 | |
模块
将函数与类存储在被称为模块的独立文件中,与主程序分离
模块式拓展名为
.py的文件,包含要导入到程序中的代码模块导入
- 导入整个模块
import module - 导入部分函数或类
from module_name import funcfrom module_name import class_name import module_name as nicknamefrom module_name import funcName as nickNamefrom moduleNmae import *
- 导入整个模块
导入一个模块时,该模块文件的无缩进代码将直接执行
在编写自己的模块时,模块测试代码等要记得缩进于
if __name__ =='__main__':if name == ‘main‘ 如何正确理解? - 知乎