Python_basic

Python-basic for AI course

实验课要求:

课件:https://github.com/pqcu77/2025AI/tree/main

python基础

资料:https://python.iswbm.com/

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

分支结构:

  • ifelif,后面加冒号,无大括号

  • while
    
    1
    2
    3
    4
    5
    6

    - breakcontinue;用法类似c++

    ```python
    while condition:
    do something
  • for :常与迭代器一同使用

    • range(n)—从0遍历到n-1,步长为1
    • range(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
2
3
4
dict_map = {1:'hello', 2:'world'}
dict_map1 = {3: 'hi', 4: 'test'}
for key1, key2 in zip(dict_map.keys(), dict_map1.keys()):
print(key1, dict_map[key1], key2, dict_map1[key2])
  • 以key、value同时遍历两个字典(两个字典长度一样,否则以最短的次数输出)
1
2
3
4
dict_map = {1:'hello', 2:'world'}
dict_map1 = {3: 'hi', 4: 'test'}
for (key, value) in zip(dict_map.items(), dict_map1.items()):
print(key, value)
  • 逐项同时遍历两个字典(两个字典长度一样,否则以最短的次数输出)
1
2
3
4
dict_map = {1:'hello', 2:'world'}
dict_map1 = {3: 'hi', 4: 'test'}
for kv in zip(dict_map.items(), dict_map1.items()):
print(kv)

原文链接:https://blog.csdn.net/wsq119/article/details/115221881

函数

结构:def开头,函数名,括号,冒号结尾,紧跟的所有缩进构成函数体

  • 可以处理一组数据,并返回一个或一组值
1
2
3
4
5
6
7
def get_formatted_name(first_name, last_name, middle_name=''):
if middle_name:
full_name = first_name + ' ' + middle_name + ' ' + last_name
return full_name.title()
else:
full_name = first_name + ' ' + last_name
return first_name.title(), last_name.title()
  • 用一个或多个变量存储返回的值,或直接使用返回的值

传递实参

  • 位置实参:基于实参的顺序,将实参关联到啊哈怒火定义中的形参
  • 默认值:具有默认值的形参需排列在参数列表后面(才能达到可以省略的目的)
  • 关键字实参:无需考虑实参顺序。将形参变量名写出来,然后赋值

func

  • 对某些数据类型来说,在函数内部对传入变量做的修改,会导致函数外的值夜发生修改,产生副作用(列表、字典会改,但数值、字符串不改)
    • 对于数值、字符串等,可以通过返回值传到函数外

如果希望不影响函数外的话:向函数传递列表副本

  • 利用切片创建副本 list_name[:]
  • 形参前加*号,可以传递任意数量的实参
  • 形参前加**号,可以传递任意数量的关键字实参

Dog
1
2
3
4
5
6
7
8
class Dog():
def __init__(self, name, age):
self.name = name
self.age = age
def sit(self):
print(self.name.title() + " is now sitting.")
def roll_over(self):
print(self.name.title() + " rolled over!")
  • 方法_init_():构造函数,创建新对象自动调用

  • self:

    • 必须写在所有方法参数列表的第一位
    • 指代这个对象本身
    • 以self为前缀的成员变量可供类中所有方法使用–属性
    • self.variable可以访问、创建与修改属性值
  • python的类属性默认是公有属性,要标记为私有的则要在变量名或函数名前加上两个下划线 “__

  • 属性修改:最好写一个update的方法

    • 也可以直接修改,但破坏了封装

继承

  • class 子类名(父类名)

  • super()–在子类中通过super()指向父类

  • 允许父类调用子类的方法

  • 子类可以重写父类的方法,可以添加新的属性和方法,继承所有父类的方法

文件与异常

  • 读取文件:read()
  • open() :参数是文件路径(相对路径和绝对路径都可以)
    • open(“文件路径”,“模式”),对于模式参数:
      • ‘r’:读取模式(默认)
      • ‘w’:写入模式, 如果该文件已存在则打开文件,并从开头开始编辑
        ,即原有内容会被删除。如果该文件不存在,创建新文件。
      • ‘a’:追加模式. 如果该文件已存在,文件指针将会放在文件的结尾
        。也就是说,新的内容将会被写入到已有内容之后。如果该文件不
        存在,创建新文件进行写入
  • 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
2
3
4
5
6
7
8
9
10
11
12
13
14
def main():
with open('num.txt') as file:
#1.打印整个文档
# num=file.read()
# print(num)

#2.逐行读取并打印
for line in file.readlines():
# print(line)#这里由于没有去除换行符,会导致换行符单独占据一行
print(line.rstrip()) #这样子会去掉换行符



main()

情况1:

1
2
1 2 3
4 5 6

情况2.1:

1
2
3
1 2 3

4 5 6

情况2.2:

1
2
1 2 3
4 5 6
  • 写文件
1
2
3
4
5
6
def main():
with open('num.txt','w') as file: #这里设置为write模式
file.write("hello world\n")

with open('num.txt','a') as file: #设置为append模式
file.write("appending...")

模块

  • 将函数与类存储在被称为模块的独立文件中,与主程序分离

  • 模块式拓展名为.py的文件,包含要导入到程序中的代码

  • 模块导入

    • 导入整个模块 import module
    • 导入部分函数或类 from module_name import func from module_name import class_name
    • import module_name as nickname
    • from module_name import funcName as nickName
    • from moduleNmae import *
  • 导入一个模块时,该模块文件的无缩进代码将直接执行

  • 在编写自己的模块时,模块测试代码等要记得缩进于if __name__ ==

    '__main__':if name == ‘main‘ 如何正确理解? - 知乎


Python_basic
https://pqcu77.github.io/2025/03/03/python-basic/
作者
linqt
发布于
2025年3月3日
许可协议