Python学习笔记

python学习笔记(基础知识大全) 本文总结了之前小组的内容,属于python大全,包含了:字面量、注释、变量、数据类型、数据类型转换、标识符、运算符、字符串的多种操作、数据输入、布尔类型和比较运算符、if、while、for、range函数、break和continue、函数基础定义、函数参数、函数返回值、None、函数说明文档、函数嵌套、数据容器、列表、元组、字符串、序列的切片、集合、字典、数据容器总结、函数进阶、文件、异常、模块、类、数据库等等 阅读详情
AI摘要

该博客是Python学习笔记,涵盖名词解释、数据类型及转换、标识符、运算符等基础内容,还介绍了字符串扩展、数据输入、控制语句、函数等,详细讲解了各类数据容器及其操作,最后提及文件编码的读写和追加操作。

目录

一、名词解释

二、数据类型(变量名无类型,变量值有类型)

三、数据类型转换(万物皆可转字符串) 

四、标识符

五、运算符

六、字符串扩展

七、数据输入

八、if语句

九、while语句

十、for循环语句

十一、函数

十二、数据容器

1、List列表

2、tuple元组

3、字符串 

4、序列的常用操作-切片

5、set集合

6、dict字典

7、数据容器相互转换

8、通用操作

十三、文件编码


一、名词解释

1、字面量

  • 被写在代码中的固定的值称为字面量,示例如下:

    100  
    100.01  
    "hello world"  
      
    print(100)  
    print(100.01)  
    print("hello world")

2、注释

  • 对代码进行解释说明的文字

  • 注释不是代码,不会被程序执行 

# 单行注释,#号开头

"""
多行注释,首尾三个引号,一般写在文件开头
"""

3、变量

  • 变量就是在程序运行时,记录数据用的

  • 变量名 = 变量值

  • 局部变量:定义在函数体内部的变量,只在函数体内部生效

  • 全局变量:定义在函数体外部的变量,函数体内外都生效

# 定义变量money,值为50,并打印出来
money = 50
print("钱包还有:",money)

# 买了一个冰淇淋花费10元
money = money - 10
print("买了一个冰淇淋花费10元,还剩余:",money,"元")
二、数据类型(变量名无类型,变量值有类型)
数字类型(Number)
int: 整数(有符号),存放整数 如-1,10,0等
float: 浮点数(有符号),存放小数,如-3.13,6.66
complex: 复数,如:4+3j,以j结尾表示复数
bool: 布尔,True是真,False是假,本质上是一个数字记作1,False记作0

字符串(String): 用引号引起来的数据都是字符串
列表(List): 有序的可变序列,Python中使用最频繁的数据类型,可有序记录一堆数据
元组(Tuple): 有序的不可变序列,可有序记录一堆不可变的Python数据集合
集合(Set): 无序不重复集合,可无序记录一堆不重复的Python数据集合
字典(Dictionary): 无序Key-Value集合,可无序记录一堆Key-Value型的Python数据集合

查看类型:type(被查看类型的数据)
  • 示例

# 定义一个变量name,值为张三
name = "张三"

# 得到变量name的值的类型
name_type = type(name);

print("变量值:",name,",类型:",name_type)
print("字面量:",111,",类型:",type(111))

# 定义一个int类型变量值
num = int(111)
print("num:",num,",类型:",type(num))
三、数据类型转换(万物皆可转字符串) 
数据类型之间,在特定的场景下,是可以相互转换的,如字符串转数字、数字转字符串等。

如:
从文件中读取的数字,默认是字符串,我们需要转换成数字类型
后续学习的input()语句,默认结果是字符串,若需要数字也需要转换
将数字转换成字符串用以写出到外部系统

int(x): 将x转换为一个整数
float(x): 将x转换为一个浮点数
str(x): 将对象x转换为字符串
  • 示例

# 将数字类型转换成字符串
num1 = str(11.1)
num2 = int(10)
num3 = str(num2)

print("num1:",type(num1),",num2:",type(num2),"num3:",type(num3))

# 将字符串转换成数字
num4 = float("1.345")
num5 = int("100")
print(type(num4),num4,type(num5),num5)
四、标识符
标识符包括变量的名字、方法的名字、类的名字等等,用来做内容的标识。

1、规则

标识符命名中只允许出现英文、中文、数字、下划线这四类元素,其余内容都不被允许。
不推荐使用中文。
数字不可以开头。
大小写敏感,admin和Admin能够区分。
不可使用关键字。

2、变量的命名规范:见名知意,下划线命名法,英文字母全小写。


name = "张三"
user_name = "李四"

3、关键字

False    True    None  and    as     assert   break   class 
continue def     del   elif   else   except   finally for
from     global  if    import in     is       lambda  nonlocal
not      yield   pass  raise  return try      while   with     or 

4、示例

# 错误示例 数字不可以开头,运行报错
1_num = 10

# 错误示例 使用四类之外元素,运行报错
$_num =10

# 错误示例 大小写敏感,运行报错
admin = "张三"
print(Admin)

# 错误示例 不可使用关键字,运行报错
False = 100
五、运算符

1、算术(数学)运算符示例

a = 10
b = 3

print("a+b = ", a + b)  # 加,两个对象相加a+b输出结果13  
print("a-b = ", a - b)  # 减,得到负数或是一个数减去另一个数a-b输出结果7  
print("a*b = ", a * b)  # 乘,或是返回一个被重复若干次的字符串,输出结果30  
print("a/b = ", a / b)  # 除,b/a输出结果3.3333333333333335  
print("a//b = ", a // b)  # 取整除,保留整数,舍去小数,输出结果3  
print("a%b = ", a % b)  # 取余,返回除法的余数b%a输出结果1  
print("a**b = ", a ** b)  # 指数,a**b为10的3次方,输出结果1000

2、赋值运算符示例

# 把 = 号右边的结果赋给左边的变量,如num=1+2*3,结果num的值为7
num = 1+2*3
print("num: ",num)

3、复合赋值运算符

a += b  # 加法赋值运算符,等效于a = a+b  
print("a = ", a)  # 输出结果13  
  
a -= b  # 减法赋值运算符,等效于a = a-b  
print("a = ", a)  # 输出结果10  
  
a *= b  # 乘法赋值运算符,等效于a = a*b  
print("a = ", a)  # 输出结果30  
  
a /= b  # 除法赋值运算符,等效于a = a/b  
print("a = ", a)  # 输出结果10.0  
  
a %= b  # 取模赋值运算符,等效于a = a%b  
print("a = ", a)  # 输出结果1.0  
  
a **= b  # 幂赋值运算符,等效于a = a**b  
print("a = ", a)  # 输出结果1.0  
  
a //= b  # 取整赋值运算符,等效于a = a//b  
print("a = ", a)  # 输出结果0.0

4、比较运算符

a = 3  
b = 4  
print("a==b:", (a == b))  # 判断a是否等于b,是为True,否为False,结果:False  
print("a!=b:", (a != b))  # 判断a是否不等于b,是为True,否为False,结果:True  
print("a>b:", (a > b))  # 判断a是否大于b,是为True,否为False,结果:False  
print("a<b:", (a < b))  # 判断a是否小于b,是为True,否为False,结果:True  
print("a>=b:", (a >= b))  # 判断a是否大于等于b,是为True,否为False,结果:False 
print("a<=b:", (a <= b))  # 判断a是否小于等于b,是为True,否为False,结果:True
六、字符串扩展

1、字符串在Python中有很多种

# 单引号定义法  
name = '张三'  
print(type(name))  
  
# 双引号定义法  
name = "张三"  
print(type(name))  
  
# 三引号定义法,支持换行操作,使用变量接收为字符串,否则为多行注释  
name = """张三\n张三"""  
print(type(name))

 2、字符串本身包含单引号、双引号自身

# 单引号定义法,可以内含双引号  
name = '"张三"'  
print(name)  
  
# 双引号定义法,可以内含单引号  
name = "'张三'"  
print(name)  
  
# 可以使用转义字符\来将引号解除效用,变成普通字符串  
name = "\"张三\""  
print(name)  
name = '\'张三\''  
print(name)

3、字符串拼接

# 通过+号完成,字面量拼接
print("你好" + "张三")  
  
# 字面量和变量拼接  
name = "张三"  
print("你好" + name)

# 错误示例,和数字拼接,执行报错,无法和非字符串拼接
num = 100  
print("你好张三" + num)
print("你好张三" + 100)

4、字符串格式化

# %s 字符串占位符 %d 整数占位符 %f 浮点数占位符  
name = "张三"  
num = 100  
fraction = 99.8  
print("你好%s%d,成绩:%f" % (name, num, fraction))  # 输出结果:你好张三100,成绩:99.800000

# f"{变量}" # 输出结果:你好张三,成绩:99.8  
print(f"你好{name},成绩:{fraction}")

5、格式化的精度控制(m.n)

# m,控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效,空格占位
num = 3  
num1 = 11.2345  
print("%5d" % num)  # 输出结果:    3
print("%5d" % num1) # 输出结果:   11
print("%d" % num)   # 输出结果:3

# .n,控制小数点精度,要求是数字,会进行小数的四舍五入
num = 1.235  
print("%5.2f" % num)  # 输出结果: 1.24
print("%.2f" % num)   # 输出结果:1.24

6、对表达式进行格式化

print("1+1=%d" % (1 + 1))  
print(f"1+1={1 + 1}")  
print("类型为:%s" % type('字符串'))
七、数据输入
name = input("请输入姓名:")  
age = int(input("请输入年龄:"))  

# if语句,内容四个空格缩进
if age < 18:  
    print("年龄小于18岁")  
  
print("输出的姓名为:%s" % name)  
print("输出的年龄为:%d" % age)
八、if语句
name = input("请输入姓名:")  
age = int(input("请输入年龄:"))  
  
# 随机数  
import random  
num = random.randint(1, 10)  
  
if age < 18:  
    print("年龄小于18岁,随机数为:",num)  
elif age == 18:  
    print("年龄等于18岁")  
elif int(input("年龄输入错误,请重新输入:")) > 18:  
    print("年龄输入错误,结束!")  
else:  
    if age < 18:  
        print("年龄小于18岁,结束!")  
    else:  
        print("年龄等于18岁,结束!")  
  
print("输出的姓名为:%s" % name)  
print("输出的年龄为:%d" % age)
九、while语句
count = int(input("请输入随机次数:"))  
  
if count > 1:  
    print("开始随机,随机次数:", count)  
elif (count := int(input("随机次数不符合规则,请重新输入:"))) < 1:  
    print("随机数不符合规则,结束!")  
else:  
    print("开始随机,随机次数:", count)  
  
# 随机数  
import random  
  
# 循环随机  
i = 0  
while i < count:  
    if i > 15:  
        break  
    elif i > 11:  
        continue  
  
    # 循环1-10之间的数字  
    num = random.randint(1, 10)  
    print("i=", i, ",num=", num)  
    i += 1
十、for循环语句

1、循环处理字符串

name = input("请输入名称:")  
  
print("打印name:")  # 结果:每个字符换行打印  
for s in name:  
    if s == 'a':  
        print("打印:", s)  
        continue  
    if s == 'n':  
        print("打印:", s)  
        break  
    print(s)  
  
# 规范上不允许,实际能打印s  
print(s)

2、range语句

# range(5)获取一个0-4的数字序列,结果:换行打印0 1 2 3 4 
print("range(5):")  
for i in range(5):   

    print(i)  

# range(5, 8)获取一个5-7的数字序列,结果:换行打印5 6 7  
print("range(5,8)")  
for i in range(5, 8):  
    print(i)  

 #  range(5, 11, 2)获取一个5-10的数字序列,数字之间步长为2,结果:换行打印5 7 9  
print("range(5,11,2)")  
for i in range(5, 11, 2): 
    print(i)
十一、函数
def关键字,可以定义带有名称的函数,可以基于名称重复使用
lambda关键字,可以定义匿名函数(无名称),只可以临时使用一次

1、定义函数my_len

def my_len(data):  
    """  
    统计字符串长度  
    :param data: 参数data  
    :return: 返回值  
    """   
    count = 0  
    for i in data:  
        count += 1  
    print("字符串:", data, ",长度:", count)  
    return count
  
  
# 调用my_len函数计算打印字符串长度  
count = my_len("admin")  
print("得到长度:", count)

2、返回None

def check(data):  
    """  
    检查函数  
    :param data: 参数data  
    :return: 返回值  
    """    
    if data == "":  
        return None  
    else:  
        return "Success"  
  
result = check("")  
if not result:  
    print("参数为空")

3、函数的多返回值

# 该种方式只能返回第一个值  
def return_num():  
    return 1  
    return 2  
print("函数的多返回值:",return_num()) # 结果:1  
  
# 多个返回值  
def test_return():  
    return 1,'a',True  
x,y,z=test_return()  
print("返回值x=",x,",类型:",type(x)) # 返回值x= 1 ,类型: <class 'int'>
print("返回值y=",y,",类型:",type(y)) # 返回值y= a ,类型: <class 'str'>
print("返回值z=",z,",类型:",type(z)) # 返回值z= True ,类型: <class 'bool'>

4、函数的多种参数使用形式

# 位置参数:调用时根据函数定义的参数位置来传递参数,传递时顺序和个数必须一致  
def add_user(txt, name, age):  
    print(txt, ":", name, ",", age)  
add_user('位置参数', '张三', 18)  
  
# 关键字参数:函数调用时通过“键=值”形式传递参数,位置参数必须在关键字参数之前  
add_user('关键字参数', age=19, name='李四')  # 关键字参数 : 李四 , 19  
# 缺省参数:缺省参数也叫默认参数,用于定义函数时为参数提供默认值,调用函数时可不传该默认参数的值,  
# 所有位置参数必须出现在默认参数前,包括函数定义和调用  
def update_user(name, age, gender='男'):  
    print("缺省参数:", name, ",", age, ",", gender)  
update_user("张三", 18)  # 缺省参数: 张三 , 18 , 男  
update_user("李四", 28, '女')  # 缺省参数: 李四 , 28 , 女  
  
# 位置不定长(*args):传递以*号标记一个形式参数,以元组形式接收参数,形式参数一般命名为args  
def add_user(*args):  
    print("位置不定长: ", args, ",类型:", type(args))  
add_user("张三", 18)  # 位置不定长:  ('张三', 18) ,类型: <class 'tuple'>  
# 关键字不定长(**kwargs):以**号标记一个形式参数,以字典的形式接收参数,形式参数一般命名为kwargs,参数为key=value形式  
def add_user(**kwargs):  
    print("关键字不定长: ", kwargs, ",类型:", type(kwargs))  
add_user(name="张三", age=18) # 关键字不定长:  {'name': '张三', 'age': 18} ,类型: <class 'dict'>

5、函数作为参数传递

def test_func(compute):  
    print(compute(1, 2))  
  
def compute(x, y):  
    return x + y  
  
test_func(compute)  # 结果:3

 6、lambda匿名函数:lambda 传入参数:函数体(一行代码)

def test_func(compute):  
    print(compute(1, 2))  
    
test_func(lambda a, b: a + b)
十二、数据容器
一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素,
每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。

数据容器根据特点的不同,如:是否支持重复元素,是否可以修改,是否有序等分为5类:
列表(list),元组(tuple),字符串(str),集合(set),字典(dict)

列表、元组、字符串:支持下标索引,支持重复元素 -序列类型
列表、集合、字典:支持修改

通用操作:len(容器)、max(容器)、min(容器)
通用排序功能: sorted(容器,reverse=True)
1、List列表
"""  
List操作  
append,extend,insert,del,pop,remove,clear,count,index,len  
特点  
可容纳多个元素,上限为2**63-1,9223372036854775807个  
可以容纳不同类型的元素(混装)  
数据是有序存储的(有下标序号)  
允许重复数据存在  
可以修改(增加或删除元素)  
"""  
# 字面量  
[1, 'a', True]  
  
# 定义空列表  
user_list = []  
user_list = list()  
# 追加元素  
user_list.append('a')  
user_list.append('b')  
# 在指定下标添加元素 -1 会添加到倒数第二的位置 -0无效  
user_list.insert(2, 'c')  
  
# 将其他列表数据追加到列表尾部  
user_list.extend([1, 2, 3])  
  
# 删除指定下标元素  
del user_list[0]  
# 得到指定下标元素并从列表移除元素,不给下标默认删除末尾元素  
user_list.pop(0)  
# 删除某元素在列表中的第一个匹配项  
user_list.remove('c')  
# 清空列表  
user_list.clear()  
  
print(user_list)  
  
# 定义变量  
user_list = ['张三', 666, True]  
print(user_list)  
print(type(user_list))  
# 得到指定元素下标,列表中的第一个匹配项,不存在报错  
print("下标: ", user_list.index(666))  
# 统计列表内某元素的数量  
print("个数: ", user_list.count(666))  
# 统计列表中全部元素数量  
print("总数: ", len(user_list))  
  
# 顺序下标取值,0为开始索引  
print(user_list[0])  
  
# 反向下标取值(倒序取值),从最后一个元素开始,-1,-2,-3  
print(user_list[-1])  
  
# while遍历  
i = 0  
while i < len(user_list):  
    print("while遍历元素: ", user_list[i])  
    i += 1  
  
# for遍历  
for i in user_list:  
    print("for遍历元素: ", i)  
  
# 嵌套列表  
user_list = [[1, 2, 3], [4, 5, 6]]  
print(user_list)  
print(user_list[0][2])  # 结果:3  
print(user_list[-1][-1])  # 结果:6
2、tuple元组
"""  
定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型  
特点:  
可以容纳多个数据  
可以容纳不同类型的数据(混装)  
数据是有序存储的(下标索引)  
允许重复数据存在  
不可以修改(增加或删除元素等)  
支持for循环  
多数特性和list一致,不同点在于不可修改的特性。  
"""  
# 元组字面量  
(1, 'a', True)  
  
# 空元组  
tuple_data = ()  
tuple_data = tuple()  
  
# 元组变量  
tuple_data = (1, 2, 3, 3)  
print("下标: ", tuple_data.index(3))  
print("个数: ", tuple_data.count(3))  
print("总数: ", len(tuple_data))  
  
# while遍历  
i = 0  
while i < len(tuple_data):  
    print("while遍历元素: ", tuple_data[i])  
    i += 1  
  
# for遍历  
for i in tuple_data:  
    print("for遍历元素: ", i)  
  
# 嵌套元组  
tuple_data = ((1, 2, 3), ('a', 'b', 'c'))  
print(tuple_data)  
print(tuple_data[1][1])  # 结果:b  
print(tuple_data[-1][1])  # 结果:b
3、字符串 
"""  
字符串是字符的容器,一个字符串可以存放任意数量的字符。  
在程序中,字符串所用的所有字符如:大小写英文单词、数字、特殊符号都有其对应的ASCII码表值  
每一个字符都能对应上一个:数字的码值  
字符串进行比较就是基于数字的码值大小进行比较的  
字符串是按位比较,也就是一位位进行对比,只要有一位大,那么整体就大,那么后面就无需比较  
"""  
# 字符串比较,结果:ab>a =  True  
print("ab>a = ",'ab'>'a')  
  
# 通过下标获取特定位置的字符  
name = "admin"  
# 获取指定下标元素  
print(name[0])  
# 倒序获取指定下标元素 结果:n  
print(name[-1])  
# 替换元素 结果:bdmin  
print(name.replace("a", "b"))  
# 查找特定字符串的下标索引 结果:3  
print(name.index("in"))  
  
# 字符串分隔,得到一个新的List列表  
name = " abc def d "  
strList = name.split(" ")  
print(strList)  # 结果:['', 'abc', 'def', 'd', '']  
print(type(strList))  
  
# strip无参 去掉首尾空格 结果:abc def d  
print(name.strip())  
  
# strip带参,去除首尾包含的这个元素及空格,先去元素再去空格  
print(name.strip(" abc"))  # def d  
print(name.strip(" abc").split(" "))  # ['def', 'd']  
  
# 统计特定字符的出现次数  
print("个数: ", name.count("d"))  
  
# 统计字符串的长度  
print("个数: ", len(name))
4、序列的常用操作-切片
"""  
序列支持切片,即:列表、元组、字符串,均支持进行切片操作  
切片:从一个序列中,取出一个子序列  
语法:序列[起始下标:结束下标:步长]  
起始下标表示从何处开始,可以留空,留空视作从头开始  
结束下标(不含)表示何处结束,可以留空,留空视作截取到结尾  
步长表示,依次取元素的间隔  
步长1表示,一个个取元素  
步长2表示,每次跳过1个元素取  
步长N表示,每次跳过N-1个元素取  
步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)  
"""  
  
# 对list列表进行切片  
user_list = [1, 2, 3, 4, 5, 6]  
sub_list = user_list[1:4]  # 切下标1到4,步长1,结果:[2, 3, 4]  
print("user_list: ", user_list, ",sub_list: ", sub_list)  
  
sub_list = user_list[1:6:2]  # 切下标1到6,步长2,结果:[2, 4, 6]  
print("user_list: ", user_list, ",sub_list: ", sub_list)  
  
sub_list = user_list[-1:-6:-2]  # 切下标-1到-6,步长-2,结果:[6, 4, 2]  
print("user_list: ", user_list, ",sub_list: ", sub_list)  
  
# 对tuple元组进行切片  
tuple_data = (1, 2, 3, 4, 5, 6)  
sub_tuple = tuple_data[1:4]  # 切下标1到4,步长1,结果:(2, 3, 4)  
print("tuple_data: ", tuple_data, ",sub_tuple: ", sub_tuple)  
  
sub_tuple = tuple_data[1:6:2]  # 切下标1到6,步长2,结果:(2, 4, 6)  
print("tuple_data: ", tuple_data, ",sub_tuple: ", sub_tuple)  
  
sub_tuple = tuple_data[-1:-6:-2]  # 切下标-1到-6,步长-2,结果:(6, 4, 2)  
print("tuple_data: ", tuple_data, ",sub_tuple: ", sub_tuple)  
  
# 对str字符串进行切片  
num_str = "123456"  
sub_num = num_str[1:4]  # 切下标1到4,步长1,结果:234  
print("num_str: ", num_str, ",sub_num: ", sub_num)  
  
sub_num = num_str[1:6:2]  # 切下标1到6,步长2,结果:246  
print("num_str: ", num_str, ",sub_num: ", sub_num)  
  
sub_num = num_str[-1:-6:-2]  # 切下标-1到-6,步长-2,结果:642  
print("num_str: ", num_str, ",sub_num: ", sub_num)
5、set集合
"""  
特点:  
可以容纳多个数据  
可以容纳不同类型的数据(混装)  
数据是无序存储的(不支持下标索引)  
不允许重复数据存在  
可以修改(增加或删除元素等)  
支持for循环  
"""  
# 字面量  
{1, 'a', True}  
  
# 空集合  
set_data = set()  
  
# 定义集合变量  
set_data = {1, 2, 3}  
print(set_data)  
print(type(set_data))  
  
# 添加新元素,重复元素不能添加  
set_data.add(3)  
set_data.add(4)  # 结果:{1, 2, 3, 4}  
  
# 移除元素  
set_data.remove(4)  # 结果:{1, 2, 3}  
  
# 统计集合元素数量  
print("总数: ", len(set_data))  
  
# 取出集合第一个元素并从集合中移除  
print(set_data.pop())  
print(set_data)  
  
# 清空集合  
set_data.clear()  
print(set_data)  
  
# 两个集合的差集/并集  
set1 = {1, 2, 3}  
set2 = {3, 4, 5}  
  
# 差集,取出集合1有而集合2没有的集合数据 结果:{1, 2}  
print("差集: ", set1.difference(set2))  
  
# 差集,取出集合2有而集合1没有的集合数据 结果:{4, 5}  
print("差集: ", set2.difference(set1))  
  
# 在集合中,删除集合2中存在的元素,集合1被修改,集合2不变  
print("差集: ", set1.difference_update(set2))  # 结果:None  
print(set1)  # 结果: {1, 2}  
print(set2)  # 结果: {3, 4, 5}  
  
# 并集,将集合1和集合2组成新集合 结果:{1, 2, 3, 4, 5}  
print("并集: ", set1.union(set2))  
  
# 遍历  
for s in set2:  
    print("for遍历:", s)
6、dict字典
"""  
特点:  
可以容纳多个数据  
可以容纳不同类型的数据  
每一份数据是key:value键值对  
可以通过key获取到value,key不可重复(重复会覆盖)  
不支持下标索引  
可以修改(增加或删除更新元素等)  
支持for循环,不支持while循环  
"""  
# 字面量  
{"name": "张三", "age": 18}  
  
# 空字典  
dict_data = {}  
dict_data = dict()  
  
# 定义字典变量  
dict_data = {"name": "张三", "age": 18}  
print(dict_data)  
print(type(dict_data))  
  
# 根据Key取Value值 结果:张三  
print(dict_data["name"])  
  
# 添加元素 结果: {'name': '张三', 'age': 18, 'status': False}  
dict_data["status"] = False  
print(dict_data)  
  
# 修改元素  
dict_data["name"] = "张三1"  
  
# 从字典中根据Key获取元素值并从字典中移除对应key:value  
print(dict_data.pop("name"))  
  
# 字典中的元素数量  
print("总数:", len(dict_data))  
  
# 获取全部key  
keys = dict_data.keys()  
  
# 遍历  
for s in keys:  
    print("for遍历: ", s, ",值: ", dict_data[s])  
  
for key in dict_data:  
    print("for遍历2: ", key, ",值: ", dict_data[key])  
  
# 清空元素  
dict_data.clear()  
  
print(dict_data)
7、数据容器相互转换
"""  
五大数据容器:list,tuple,str,set,dict  
list,tuple,str,set之间可以互转,但不可以转为dict  
dict可以转为其他四种类型,str类型key:value全转,其他类型只转keys  
"""  
  
# list转其他数据容器,不能转dict  
user_list = [1, 2, 3]  
print(f"list转tuple: {tuple(user_list)}")  # (1, 2, 3)  
print(f"list转str: {str(user_list)}")  # [1, 2, 3]  
print(f"list转set: {set(user_list)}")  # {1, 2, 3}  
# print(f"list转dict: {dict(user_list)}")  
  
# tuple转其他数据容器,不能转dict  
tuple_data = (1, 2, 3)  
print(f"tuple转list: {list(tuple_data)}")  # [1, 2, 3]  
print(f"tuple转str: {str(tuple_data)}")  # (1, 2, 3)  
print(f"tuple转set: {set(tuple_data)}")  # {1, 2, 3}  
# print(f"tuple转dict: {dict(tuple_data)}")  
  
# str转其他数据容器,不能转dict  
str_data = (1, 2, 3)  
print(f"str转list: {list(str_data)}")  # [1, 2, 3]  
print(f"str转tuple: {tuple(str_data)}")  # (1, 2, 3)  
print(f"str转set: {set(str_data)}")  # {1, 2, 3}  
# print(f"str转dict: {dict(str_data)}")  
  
# set转其他数据容器,不能转dict  
set_data = {1, 2, 3}  
print(f"set转list: {list(set_data)}")  # [1, 2, 3]  
print(f"set转tuple: {tuple(set_data)}")  # (1, 2, 3)  
print(f"set转str: {str(set_data)}")  # {1, 2, 3}  
# print(f"set转dict: {dict(set_data)}")  
  
# dict转其他数据容器,不能转dict  
dict_data = {1: 'a', 2: 'b', 3: 'c'}  
print(f"dict转list: {list(dict_data)}")  # [1, 2, 3]  
print(f"dict转tuple: {tuple(dict_data)}")  # (1, 2, 3)  
print(f"dict转str: {str(dict_data)}")  # {1: 'a', 2: 'b', 3: 'c'}  
print(f"dict转set: {set(dict_data)}")  # {1, 2, 3}
8、通用操作
"""  
五大数据容器:list,tuple,str,set,dict  
通用操作:len(容器,),min(容器,),max(容器,),  
倒序操作:sorted(容器,reverse=True) 返回值为list,dict只返回key  
"""  
  
# list使用通用操作 结果:长度: 3,最小值: 1,最大值: 3  
# 倒序: [3, 2, 1],原数据:[1, 2, 3],倒序类型: <class 'list'>  
list_data = [1, 2, 3]  
print(f"list\n长度: {len(list_data)},最小值: {min(list_data)},最大值: {max(list_data)}")  
print(f"倒序: {sorted(list_data, reverse=True)},原数据:{list_data}")  
print(f"倒序类型: {type(sorted(list_data, reverse=True))}\n")  
  
# tuple使用通用操作 结果:长度: 3,最小值: 1,最大值: 3  
# 倒序: [3, 2, 1],原数据:(1, 2, 3),倒序类型: <class 'list'>  
tuple_data = (1, 2, 3)  
print(f"tuple\n长度: {len(tuple_data)},最小值: {min(tuple_data)},最大值: {max(tuple_data)}")  
print(f"倒序: {sorted(tuple_data, reverse=True)},原数据:{tuple_data}")  
print(f"倒序类型: {type(sorted(tuple_data, reverse=True))}\n")  
  
# str使用通用操作 结果:长度: 3,最小值: a,最大值: c  
# 倒序: ['c', 'b', 'a'],原数据:abc,倒序类型: <class 'list'>  
str_data = "abc"  
print(f"str\n长度: {len(str_data)},最小值: {min(str_data)},最大值: {max(str_data)}")  
print(f"倒序: {sorted(str_data, reverse=True)},原数据:{str_data}")  
print(f"倒序类型: {type(sorted(str_data, reverse=True))}\n")  
  
# set使用通用操作 结果:长度: 3,最小值: 1,最大值: 3  
# 倒序: [3, 2, 1],原数据:{1, 2, 3},倒序类型: <class 'list'>  
set_data = {1,2,3}  
print(f"set\n长度: {len(set_data)},最小值: {min(set_data)},最大值: {max(set_data)}")  
print(f"倒序: {sorted(set_data, reverse=True)},原数据:{set_data}")  
print(f"倒序类型: {type(sorted(set_data, reverse=True))}\n")  
  
  
# dict使用通用操作 结果:长度: 3,最小值: 1,最大值: 3  
# 倒序: [3, 2, 1],原数据:{1: 'a', 2: 'b', 3: 'b'},倒序类型: <class 'list'>  
dict_data = {1: 'a', 2: 'b', 3: 'b'}  
print(f"dict\n长度: {len(dict_data)},最小值: {min(dict_data)},最大值: {max(dict_data)}")  
print(f"倒序: {sorted(dict_data, reverse=True)},原数据:{dict_data}")  
print(f"倒序类型: {type(sorted(dict_data, reverse=True))}\n")
十三、文件编码
编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。  
编码有许多种,最常用的是UTF-8编码  
  
文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别

1、读取操作

"""  
open()打开函数  
open(name,mode,encoding)  
name:目标文件名的字符串(可包含文件所在的具体路径)  
mode:设置打开文件的模式(访问模式)  
	只读(r):以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。  
	写入(w):打开一个文件只用于写入。如果该文件已存在则打开文件,并从头开始编辑,原有内容会被删除,如果不存在则创建新文件。  
	追加(a):打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后,如果该文件不存在,创建新文件进行写入。
encoding:编码格式(推荐使用UTF-8),encoding的顺序不是第三位,所以要用关键字参数直接指定。
"""  
import time  
  
# 内容:name = "张三"  
f = open('main.py', 'r', encoding='UTF-8')  
print(type(f))  
  
# read()方法,无参读全部数据,传参读取,参数为字节数,代表读取长度  
print(f.read(3))  # 结果:nam  
print(f.read())  # 结果:e = "张三" age = 18  
  
# 关闭文件对象  
f.close()  
  
# 通过with open语法打开文件,可以自动关闭  
with open('main.py', 'r', encoding='UTF-8') as f:  
    # 读取全部文件  
    list_data = f.readlines()  
    print(list_data)  # 结果:['name = "张三"\n', 'age = 18']  
    # print(f.readline()) # 读取一行  
  
    # for循环文件行,一次循环得到一行数据  
    for l in list_data:  
        print("for遍历:", l)  
  
# 程序睡眠  
time.sleep(500000)

2、写入操作

"""  
直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区  
当调用flush时,内容会真正写入文件  
这样做是避免频繁的操作硬盘,导致效率下降  
w模式,文件不存在,会创建新文件,存在,会清空原有内容  
close()方法,带有flush()方法的功能  
"""  
# 打开文件  
f = open('test.txt', 'w', encoding="UTF-8")  
  
# 写入内容  
f.write('hello world')  
  
# 刷新内容到硬盘中  
f.flush()  
  
# 关闭文件  
f.close()  
  
# 打开一个存在的文件  
f = open('test.txt', 'w', encoding="UTF-8")  
f.write("张三")  
f.close()

3、追加操作

"""  
a模式,文件不存在会创建文件,存在,会在最后追加写入文件  
"""  
# 打开文件  
f = open('test.txt', 'a', encoding="UTF-8")  
  
# 文件写入  
f.write("王五")  
  
# 关闭文件  
f.close()

【超详细】Python基础笔记大全 python基础语法 字面量 常用的值类型 注释 变量 数据类型 type() 数据类型转换 标识符 运算符 字符串 表达式格式化 数据输入 阅读详情

相关推荐

Python基础学习笔记

前言:本片笔记是本人之前学习时所记录的笔记,通篇纯手打,部分图片借鉴黑马与开源程序员ppt课件与开源中国网站 一、python基础 1.1 基础知识 1.1.1 注释 注释:在程序中对程序代码进行解释说明的文字。 作用:注释不是程序,不能被执行,只是对程序代码进行解释说明,让别人可以看懂程序代码的作用,能够大大增强程序的可读性。 单行注释:以  #开头,#右侧 的所有文字当做说明,而不是真正要执行的程序,起辅助说明作用; 多行注释:以一对三个双引号引起来(“”“注释内容”“”)来解释说明一段代码

shgg2917的博客 2141

一篇贼全的Python基础学习笔记

Python的基础知识总结,自学后整理。

yueliangmua的博客 1万+

手把手教你设计低噪声前置放大电路:从光电二极管到X射线探测器的实战配置

本文实战指南详细解析了低噪声前置放大电路的设计,重点针对光电二极管和X射线探测器等微弱信号源。文章深入对比了跨阻放大器与电荷灵敏放大器的核心架构、噪声优化策略及PCB布局技巧,手把手指导从电路选型、仿真验证到调试测试的全流程,助力工程师构建精准可靠的信号链。

tech5的博客 514

python 基础 详细,python基础重点

大家好,小编为大家解答python 基础 详细的问题。很多人还不知道python基础重点,现在让我们一起来看看吧!参考视频和资料:2022新版黑马程序员python教程,8天python从入门到精通,学python看这套就够了_哔哩哔哩_bilibili最后有知识的思维导图! 解释器:pycharm一、Pycharm快捷键和基础 二、python基础语法2.注释单行注释:#多行注释:””” ****“””3.变量命名规则4.数据类型 5.type()函数type(被查看类型的数据)6.字符串定义的三种方式

npy199331的博客 1569

TeXstudio完整安装配置教程(2025最新版)

至此,你已经完成了TeXstudio的完整安装和配置!现在你可以:✅ 使用TeXstudio编写LaTeX文档✅ 正确编译中英文混排的文档✅ 掌握基本的编辑和配置技巧LaTeX的学习曲线较陡,但一旦掌握,你会发现它在学术写作中的强大之处。建议从简单的文档开始练习,逐步掌握更高级的功能。祝你LaTeX写作顺利!如果有任何问题,欢迎在评论区留言交流。关键词:TeXstudio安装、LaTeX环境配置、中文LaTeX、TeX Live、学术论文写作更新日期:2025年10月。

weixin_51241407的博客 4502

STM32/GD32以太网开发避坑指南:ZLG EPORTM模块调试实战(含YT8512H配置)

本文针对STM32/GD32平台使用ZLG EPORTM模块进行以太网开发时遇到的常见问题,提供了详细的调试实战指南。重点解析了从传统PHY驱动迁移到YT8512H芯片的核心步骤,包括软件复位延时、RMII时钟配置等关键陷阱,并分享了LWIP集成与稳定性验证的实用经验,帮助开发者高效避坑。

rice5的博客 1163

python超详细的常用笔记

python超详细的常用笔记

weixin_54691198的博客 4561

当AI学会自我验证:Chain-of-Verification如何杜绝错误决策?

2025年,大模型"幻觉"问题已成为企业落地AI的最大障碍之一——金融风控中1.2%的误判率可能导致千万级损失,医疗诊断中3%的错误可能危及生命,法律文书中5%的事实偏差可能引发合规风险。MetaAI与Google联合提出的**Chain-of-Verification(CoVe,验证链)**技术,让AI具备"自我审视"能力,通过结构化验证流程将幻觉率降低68%+,在复杂决策场景准确率提升至95%+。本文系统拆解CoVe的技术原理、实施路径与行业实战,为企业提供AI决策可靠性保障的完整方案。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1082

python学习笔记

python学习笔记

weixin_43638249的博客 165

基于IMX429-IMX430-IMX432-IMX437系列传感器的SLVS-MIPI桥接方案设计与实现

本文详细介绍了针对索尼IMX429、IMX430、IMX432及IMX437系列传感器的SLVS-MIPI桥接方案设计与实现。针对工业视觉、车载摄像头等应用中主流SoC仅支持MIPI接口的痛点,提出基于FPGA(如Lattice Crosslink-NX)的透传桥接方案,将传感器输出的SLVS信号无损转换为MIPI CSI-2信号,确保数据完整性与低延迟,并探讨了硬件选型、逻辑设计及多传感器兼容性等关键问题。

weixin_29230901的博客 464

全网首发!Yolov8_obb旋转框训练、测试、推理手把手教学(DOTA1.0数据集map50已达80%)

其中,images/train和images/val放置原始图片文件,labels/train_original和labels/val_original分别放置原始的标签文件,labels/train和labels/val为空,然后运行步骤(3)的代码,运行结束转换后的标签会保存在labels/train和labels/val中,格式如下。(4)新建yolov8-obb.yaml,修改nc和scales,我使用的是yolov8n.(2)构建数据集,安装下面目录格式,其他test可为空,一定要对应。

小嘤熊的博客 2万+

【Python】Python学习笔记10

【代码】【Python】Python学习笔记10。

Treasure031227的博客 608

FPGA实现PI控制

FPGA实现PI控制

m0_57319166的博客 3897

python数据可视化学习笔记

学习笔记,有待更新

weixin_45679438的博客 921

Fiddler Everywhere保姆级教程:10分钟搞定手机HTTPS抓包(附证书配置避坑指南)

本文提供Fiddler Everywhere移动端HTTPS抓包的保姆级教程,涵盖环境配置、代理设置、证书安装及常见问题排查。重点解析如何正确安装并信任Fiddler根证书以解密HTTPS流量,帮助开发者快速搭建抓包环境,高效分析应用网络行为,提升调试效率。

git9versioner的博客 705

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Python 学习笔记

这里转几份网上搜索到的学习笔记,帮助自己学习Python。

xuan0506的博客 126

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Python学习笔记资源下载

Python学习笔记资源下载 去发现同类优质开源项目:https://gitcode.com/ 简介 本仓库提供了《Python学习笔记》文档的下载,该文档详细记录了Python语言的学习要点和实战经验,适合初学者和进阶者使用。 文件信息 文件名:Python学习笔记.docx 文件描述:Python学习笔记 使用说明 下载文件后,请使用Microsoft Word或兼容的文档编辑器打开。 ...

gitblog_06742的博客 447

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Python学习笔记(全是干货)

Python学习笔记(全是干货) 【下载地址】Python学习笔记全是干货分享 本资源文件是《Python学习笔记(全是干货)》的完整内容,由作者根据自身学习编程的经验和体会精心整理而成。为了帮助大家更好地掌握Python编程,作者还录制了相应的系列视频教程《手把手教你学Python》 ...

gitblog_06637的博客 960

python 学习笔记

python 学习笔记

缥缈的云 专栏 687

【Python】Python学习笔记4

【代码】【Python】Python学习笔记4。

Treasure031227的博客 460

Python学习笔记一

Python学习笔记一

xiaojkql的博客 324
上一篇: Redis学习笔记
cherishSpring
博客等级 码龄11年 134粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值