一.函数
函数是组织好的、实现单一功能或相关联功能的代码段。我们可以将函数视为一段有名字的代码,这类代码可以在需要的地方以“函数名()”的形式调用。
例题:打印边长星号的正方形
n=int(input('请输入正方形的边数:'))
print(' * '*n)
for i in range(n-2):
print(' *',' '*(n-2),'*')
print(' * '*n)
例题2:99乘法表
a=range(1,10)
for p in a:
for q in range(1,p+1):
m= p*q
print("{}*{}={}".format(q,p,m),end=" ")
print()
函数的定义:前面使用的print()函数和input()都是Python的内置函数,这些函数由Python定义。开发人员也可以根据自己的需求定义函数,Python中使用关键字def来定义函数
例题1:定义一个函数3个数之间的积
def add():
szw=52*63*88
print(szw)
如何调用函数:
def add_modify(c,d):
szw=c+d
add()
print(szw)
add_modify(23,30)
函数在定义时可以在其内部嵌套定义另外一个函数,此时嵌套的函数称为外层函数,被嵌套的函数称为内层函数。
def add_modify(a, b):
result = a + b
print(result)
def test():
print("我是内层函数")
add_modify(10, 20)
函数的返回值
函数在被调用时会将实参按照相应的位置依次传递给形参,也就是说将第一个实参传递给第一个形参,将第二个实参传递给第二个形参,以此类推
def get_max(a, b):
if a > b:
print(a,"是较大的值!")
else:
print(b,"是较大的值!")
get_max(8, 5)
def get_max(a, b): if a > b: print(a,"是较大的值!") else: print(b,"是较大的值!") get_max(8, 5)
关键字参数的传递是通过“形参=实参”的格式将实参与形参相关联,将实参按照相应的关键字传递给形参。
def connect(ip, port):
print(f"设备{ip}:{port}连接!")
connect(ip="127.0.0.1", port=8080
无论实参采用位置参数的方式传递,还是关键字参数的方式传递,每个形参都是有名称的,怎么区分用哪种方式传递呢 .用符号"/"
例题:def func(a, b, /, c):
print(a, b, c)
正确的调试:func(10, 20, c=30)
局部变量:函数内部定义的变量,只能在函数内部被使用 函数执行结束之后局部变量会被释放,此时无法再进行访问
例题:
def test_one():
number = 10 # 局部变量
print(number) # 函数内部访问局部变量
test_one()
print(number)
全局变量:全局变量可以在整个程序的范围内起作用,它不会受到函数范围的影响
例题:number = 10 # 全局变量
def test_one():
print(number) # 函数内部访问全局变量
test_one()
print(number)
global关键字
使用global关键字可以将局部变量声明为全局变量,其使用方法如下:
number = 10 # 定义全局变量
def test_one():
global number # 使用global声明变量number为全局变量
number += 1
print(number)
test_one()
print(number)
nonlocal关键字
使用nonlocal关键下:字可以在局部作用域中修改嵌套作用域中定义的变量,其使用方法如
例题:
def test():
number = 10
def test_in():
nonlocal number
number = 20
test_in()
print(number) test()
递归函数:
递归函数的执行可以分为以下两个阶段:
1.递推:递归本次的执行都基于上一次的运算结果。
2.回溯:遇到终止条件时,则沿着递推往回一级一级地把值返回来。
def函数名([参数列表]):
if 边界条件:
rerun 结果
else:
return 递归公式
例题1:
写一个修改文件的程序,要求是原来的内容不能被覆盖,修改之后字符之间的空格不能变化
user.txt ↓
马一特 18 male
刘德华 50 male
林志玲 20 female
代码:
with open('user.txt', mode='wr', encoding='utf-8') as f:
data = f.read()
data = data.replace('马一特', '马一特[Albert]')
with open('user.txt', mode='w', encoding='utf-8') as f:
f.write(data)
运行结果:
例题2:
生成100个MAC地址并写入文件中,MAC地址前6位(16进制)为01-AF-3B
01-AF-3B
01-AF-3B-xx
01-AF-3B-xx-xx
01-AF-3B-xx-xx-xx
生成结果:
函数的代码实现
例题:输出1-100所有的偶数
二.异常
异常概述:程序开发或运行时可能出现异常,开发人员和运维人员需要辨别程序的异常,明确这些异常是源于程序本身的设计问题,还是由外界环境的变化引起,以便有针对性地处理异常
如何认识异常:
程序运行出现异常时,若程序中没有设置异常处理功能,解释器会采用系统的默认方式处理异常,即返回异常信息、终止程序。
1.NameError是程序中使用了未定义的变量时会引发的异常。
例题:
2. IndexError是程序越界访问时会引发的异常
例题:
3.FileNotFoundError是未找到指定文件或目录时引发的异常
例题
4.异常捕获语句
Python既可以直接通过try-except语句实现简单的异常捕获与处理的功能,也可以将try-except语句与else或finally子句组合实现更强大的异常捕获与处理的功能。
5.怎么使用try-excep语句
使用例题如下:
try:
可能出错的代码
except [异常类型 [as error]]: # 将捕获到的异常对象赋error
捕获异常后的处理代码
6.如何使用try-except语句可以捕获与处理程序的单个、多个或全部异常?
使用例题如下:
num_one = int(input("请输入被除数:"))
num_two = int(input("请输入除数:"))
try: print("结果为", num_one / num_two)
except ZeroDivisionError:
print("出错了")
7.异常结构关于else子句
else子句可以与try-except语句组合成try-except-else结构,若try监控的代码没有异常,程序会执行else子句后的代码。
例题如下:
try: 可能出错的代码
except [异常类型 [as error]]: # 将捕获到的异常对象赋值error 捕获异常后的处理代码
else:
捕获异常后的处理代码
8.finally子句可以和try-except一起使用,语法格式如下:
try: 可能出错的代码
except [异常类型 [as error]]: # 将捕获到的异常对象赋值error
捕获异常后的处理代码
finally: 一定执行的代码
9.无论try子句监控的代码是否产生异常,finally子句都会被执行 finally子句多用于预设资源的清理操作,如关闭文件、关闭网络连接
try:
file = open('./file.txt', mode='r', encoding='utf-8')
print(file.read())
except FileNotFoundError as error:
print(error)
finally:
file.close()
print('文件已关闭')
10.使用raise语句可以显式地抛出异常,reise语句的语法格式如下:
例题
raise 异常类
# 格式1:使用异常类名引发指定的异常 raise 异常类对象
# 格式2:使用异常类的对象引发指定的异常 raise
11.assert语句又称为断言语句,其语法格式如下所示:
例题:
num_one = int(input("请输入被除数:"))
num_two = int(input("请输入除数:"))
assert num_two != 0, '除数不能为0' #
assert语句判定num_two不等于0
result = num_one / num_two
print(num_one, '/', num_two, '=', result)
12.异常传递
如果程序中的异常没有被处理,默认情况下会将该异常传递到上一级,如果上一级仍然没有处理异常,那么会继续向上传递,直至异常被处理或程序崩溃。
13.什么是自定义异常?
有时我们需要自定义异常类,以满足当前程序的需求。自定义异常的方法比较简单,只需要创建一个继承Exception类或Exception子类的类(类名一般以“Error”为结尾)即可。
例题:class ShortInputError(Exception):
'''自定义异常类'''
def __init__(self, length, atleast):
self.length = length
# 输入的密码长度
self.atleast = atleast
# 限制的密码长度 try:
text = input("请输入密码:")
if len(text) < 3:
raise ShortInputError(len(text), 3)
except ShortInputError as result:
print("ShortInputError:
输入的长度是%d,长度至少应是 % d" %
(result.length, result.atleast)) else:
print("密码设置成功")
13.异常的总结
本章主要讲解了Python异常的相关知识,包括异常概述、异常捕获语句、抛出异常和自定义异常,同时结合精彩实例演示了异常的用法。通过本章的学习,希望大家掌握如何处理异常。
三.字符串
1.字符串是一种用来表示文本的数据类型,它是由符号或者数值组成的一个连续序列。
Python支持使用单引号、双引号和三引号定义字符串,其中单引号和双引号通常用于定义单行字符串,三引号通常用于定义多行字符串。
使用单引号:'hello itcast'
使用双引号:"hello itcast"
使用三引号:""my name is itcast my name is itcast"""
Python使用反斜杠“\”转义。例如,在字符串中的引号前添加“\”,此时Python解释器会将“\”之后的引号视为解释为一个普通字符,而非特殊符号。
化字符串是指将指定的字符串转换为想要的格式。Python字符串可通过%格式符格式化输出。
format % values
虽然使用%可以对字符串进行格式化,但是这种方式并不是很直观,一旦开发人员遗漏了替换数据或选择了不匹配的格式符,就会导致字符串格式化失败。为了能更直观、便捷地格式化字符串,Python为字符串提供了一个格式化方法format()。
f-string提供了一种更为简洁的格式化字符串的方式,它在形式上以f或F引领字符串,在字符串中使用“{变量名}”标明被替换的真实数据和其所在位置。
f('{变量名}') 或F('{变量名}')
十进制是实际应用中最常使用的计数方式,除此之外,还可以采用二进制、八进制或十六进制计数。 本实例要求编写代码,实现将用户输入的十进制整数转换为指定进制的功能。
字符串的查找与替换
Python中提供了实现字符串查找操作的find()方法,该方法可查找字符串中是否包含子串,若包含则返回子串首次出现的位置,否则返回-1。
Python中提供了实现字符串替换操作的replace()方法,该方法可将当前字符串中的指定子串替换成新的子串,并返回替换后的新字符串。
split()方法可以按照指定分隔符对字符串进行分割,该方法会返回由分割后的子串组成的列表。、
join()方法使用指定的字符连接字符串并生成一个新的字符串。
删除字符串的指定字符
字符串中可能会包含一些无用的字符(如空格),在处理字符串之前往往需要先删除这些无用的字符。Python中的strip()、lstrip()和rstrip()方法可以删除字符串中的指定字符。
字符串对齐
在使用Word处理文档时可能需要对文档的格式进行调整,如标题居中显示、左对齐、右对齐等。Python提供了center()、ljust()、rjust()这3个方法来设置字符串的对齐方式。
过滤敏感词
敏感词通常是指带有敏感政治倾向、暴力倾向、不健康色彩的词或不文明的词语,对于文章中出现的敏感词常用的处理方法是使用特殊符号(如“*”)对敏感词进行替换。 本实例要求编写代码,实现具有过滤敏感词功能的程序。
文字排版工具
文字排版工具是一款强大的文章自动排版工具,它会将文字按现代汉语习惯及发表出版要求进行规范编排。文字排版工具一般具备删除空格、英文标点替换、英文单词大写功能, 本实例要求编写代码,实现具有上述功能的文字排版工具。
例题1:文本进度条
例题2:
四.认识组合数据类型
1.什么是认识组合数据类型?
映射类型以键值对的形式存储元素,键值对中的键与值之间存在映射关系。字典(dict)是Python唯一的内置映射类型,字典的键必须遵守以下两个原则
2.创建列表的两种方法
list_one = [] # 使用[]创建空列表
li_two = list() # 使用list()创建空列表
4.扩展知识:在Python中,支持通过for…in…语句迭代获取数据的对象就是可迭代对象。目前,我们学习过可迭代的类型有字符串和列表,后续学习的集合、字典、文件也是可迭代类型的对象。使用isinstance()函数可以判断目标是否为可迭代对象,返回True表示为可迭代对象
5. 添加列表元素:向列表中添加元素是非常常见的一种列表操作,Python提供了append()、extend()和insert()这几个方法。
例题:
list_one = ["apple", "banana", "芒果", "大象"]
6.元素排序
列表的排序是将元素按照某种规定进行排列。列表中常用的排序方法有sort()、reverse()、sorted()。
例题:
li_one = [6, 2, 5, 3]
7.如何让删除元素?
删除列表元素的常用方式有del语句、remove()方法、pop()方法和clear()方法。
例题:
list_one.sort()
remove(3)
8.列表推导式
列表推导式是符合Python语法规则的复合表达式,它用于以简洁的方式根据已有的列表构建满足特定需求的列表
例题:
[exp for x in list]
补充:列表推导式还可以结合if判断语句或for循环嵌套,生成更灵活的列表。
9.什么是元组?
元组的表现形式为一组包含在圆括号“()”中、由逗号分隔的元素,元组中元素的个数、类型不受限制。除了使用()构建元组外,还可以使用内置函数tuple()构建元组。
例题:
t1 = () # 使用()构建元组
t2 = tuple() # 使用tuple构建元组
10.当使用圆括号“()”创建元组时,如果元组中只包含一个元素,那么需要在该元素的后面添加逗号,从而保证Python解释器能够识别其为元组类型。
例题:
t1 = ('python')
t2 = ('python',)
print(type(t1))
print(type(t2))
11.元组支持以索引和切片方式访问元组的元素,也支持在循环中遍历元组。
例题:
tuple_demo = ('p','y','t', 'h', 'o','n')
使用索引:tuple_demo[2]
使用切片:tuple_demo[2:5]
偏历元组:for i in tuple_demo: print(i)
12.什么是集合?
Python的集合(set)本身是可变类型,但Python要求放入集合中的元素必须是不可变类型。大括号“{}”或内置函数set()均可构建集合
例题:
s1 = {1} # 使用{}构建集合
s2 = set([1,2]) # 使用set构建元组
13.集合注意事项:集合是可变的,集合中的元素可以动态增加或删除。Python提供了一些内置方法来操作集合,常见内置方法如下:
14.集合也可以利用推导式创建,集合推导式的格式与列表推导式相似,区别在于集合推导式外侧为大括号“{}”
例:{exp for x in set if cond}
15.如何创建字典:
字典的表现形式为一组包含在大括号“{}”中的键值对,每个键值对为一个字典元素,每个元素通过逗号“,”分隔,每对键值通过“:”分隔,除了使用“{}”创建字典还可以使用内置函数dict创建字典。
例题:
d1 = {'A': 123, 12: 'python'} # 使用{}构建集合
d2 = dict({'A': '123', 'B': '135'}) # 使用dict构建元组
16.如何访问字典?
字典的值可通过“键”或内置方法get()访问。
例题:
d2 = dict({'A': '123', 'B': '135'}
17.如何访问字典?
字典涉及的数据分为键、值和元素(键值对),除了直接利用键访问值外,Python还提供了内置方法keys()、values()和items()。
例题:info = {'name': 'Jack','age':23,'height':185}
18如何修改元素或添加元素?
字典支持通过为指定的键赋值或使用update()方法添加或修改元素,下面分别介绍如何添加和修改字典元素。
例题:使用update()添加元素:dict.update(key=value
19..组合数据类型与运算
Python中针对数字类型的运算符对组合数据类型同样适用,包括+、*、in、not in。
20.本章小结
pythin中列表、元组、集合和字典的创建和使用,并结合实例帮助大家巩固这些数据类型,最后介绍了组合数据类型与运算符的相关知识。通过本章的学习,希望大家能掌握并熟练运用Python中的组合数据类型。
例题1:
当前目录下有一个文件名为 a.txt 的文本文件,存放着某班学生的计算机课成绩,共有学号、平时成绩、期末成绩三列。
请根据平时成绩占 40%,期末成绩占 60%的比例计算总评成绩(取整数) ,并分学号、总评成绩两列写入另一文件 score2.txt 。
同时在屏幕上输出学生总人数, 按总评成绩计 90 以上、80~89、70~79、60~69、60 分以下各成绩档的人数 和班级总平均分(取整数)
运行结果:
五.面向对象
1.类的定义与使用
面向对象编程有两个非常重要的概念:类和对象。 对象映射现实中真实存在的事物,如一本书。 具有相同特征和行为的事物的集合统称为类。 对象是根据类创建的,一个类可以对应多个对象。 类是对象的抽象,对象是类的实例。
2:类的定义(分为3类)
类的名称:大驼峰命名法,首字母一般大写,比如Person。
类的属性:用于描述事物的特征,比如性别。
类的方法:用于描述事物的行为,比如抬腿。
3.类的定义
class 类名:
属性名 = 属性值
def 方法名(self):
方法体
例题:
class Car:
wheels = 4
def drive(self):
print('行驶')
4.对象的创建与使用
根据类创建对象的语法格式如下:
对象名 = 类名() car = Car()
5.什么是类的成员?
属性分为两类:
1.类属性 2.实例属性
6.类属性
声明在类内部、方法外部的属性。
可以通过类或对象进行访问,但只能通过类进行修改
例题:
car = Car( # 创建对象
car print(Car.wheels)# 通过类
Car访问类属性 print(car.wheels) # 通过对象
car访问类属性 Car.wheels = 3 # 通过类Car修改类属性wheels
print(Car.wheels)
print(car.wheels)
car.wheels = 4 # 通过对象car修改类属性wheels print(Car.wheels)
print(car.wheels)
7.实例属性
实例属性是在方法内部声明的属性。
Python支持动态添加实例属性。
class Car:
def drive(self):
self.wheels = 4 # 添加实例属性
car = Car() # 创建对象
car car.drive()
print(car.wheels) # 通过对象car访问实例属性
print(Car.wheels
8.Python中的方法按定义方式和用途可以分为三类:实例方法、类方法和静态方法。
1.实例方法 形似函数,但它定义在类内部。 以self为第一个形参,self参数代表对象本身 只能通过对象调用
2.2类方法 类方法是定义在类内部 使用装饰器@classmethod修饰的方法 第一个参数为cls,代表类本身 可以通过类和对象调用
3.静态方法 静态方法是定义在类内部 使用装饰器@staticmethod修饰的方法 没有任何默认参数
9.Python通过在类成员的名称前面添加双下画线(__)的方式来表示私有成员,语法格式如下
例题:
class Car:
__wheels = 4 # 私有属性
def __drive(self): # 私有方法
print("开车")
10.私有成员:私有成员在类的内部可以直接访问,在类的外部不能直接访问,但可以通过调用类的公有成员方法的方式进行访问。
例题:
class Car:
__wheels = 4 # 私有属性
def __drive(self): # 私有方法
print("行驶")
def test(self):
print(f"轿车有{self.__wheels}个车轮")
# 公有方法中访问私有属性
self.__drive()
11.特殊方法(分为构造方法和析构方法)
构建方法:构造方法指的是__init__()方法。 创建对象时系统自动调用,从而实现对象的初始化。 每个类默认都有一个__init__()方法,可以在类中显式定义__init__()方法。 __init__()方法可以分为无参构造方法和有参构造方法。
注意事项:
当使用无参构造方法创建对象时,所有对象的属性都有相同的初始值。
当使用有参构造方法创建对象时,对象的属性可以有不同的初始值。
例题:
class Car:
def __init__(self): # 无参构造方法
self.color = "红色"
def drive(self):
print(f"车的颜色为:{self.color}")
car_one = Car() # 创建对象并初始化
car_one.drive()
car_two = Car() # 创建对象并初始化 car_two.drive()
析构方法:是销毁对象时系统自动调用的方法 每个类默认都有一个__del__()方法,可以显式定义析构方法
例题:
class Car:
def __init__(self):
self.color = "蓝色"
print("对象被创建")
def __del__(self):
print("对象被销毁")
car = Car()
print(car.color) del car
print(car.color)
如何定义一个类,提供可以重新设置私有属性name的方法,限制条件为字符串长度小于10,才可以修改
如下图例题代码:
12.单继承:
单继承即子类只继承一个父类。现实生活中,波斯猫、折耳猫、短毛猫都属于猫类,它们之间存在的继承关系即为单继承,如图所示。
单继承例题:
class Cat(object):
def __init__(self, color):
self.color = color
def walk(self):
print("走猫步~")
继承:子类不会拥有父类的私有成员,也不能访问父类的私有成员。
多继承:程序中的一个类也可以继承多个类,如此子类具有多个父类,也自动拥有所有父类的公有成员。
例图:
多继承例题:
# 定义一个表示房屋的类 class House(object):
def live(self): # 居住
print("供人居住")
# 定义一个表示汽车的类 class Car(object):
def drive(self): # 行驶
print("行驶")
# 定义一个表示房车的类
class TouringCar(House, Car):
pass tour_car = TouringCar() tour_car.live() # 子类对象调用父类House的方法 tour_car.drive()
13.重写:子类重写了父类的方法之后,无法直接访问父类的同名方法,但可以使用super()函数间接调用父类中被重写的方法。
例题:# 定义一个表示中国人的子类 class Chinese(Person):
def say_hello(self):
super().say_hello() # 调用父类被重写的方法
print("吃了吗?")
14.运算符重载
如图:
特殊方法 | 运算符 |
__add__() | + |
__sub__() | - |
__mul__() | * |
__truediv__() | / |
__mod__() | % |
__pow__() | ** |
__contains__() | in |
__eq__()、__ne__()、__lt__()、 __le__()、__、gt__()、__ge__() | ==、!=、<、<=、>、>= |
__and__()、__or__()、__invert__()、__xor__() | &、|、~、^ |
__iadd__()、__isub__()、__imul__()、__itruediv__() | +=、-=、*=、/= |
15.本章小结
本章主要讲解了面向对象的相关知识,包括面向对象概述、类的定义和使用、类的成员、特殊方法、封装、继承、多态、运算符重载,并结合众多精彩实例演示了面向对象的编程技巧。通过本章的学习,希望读者能理解面向对象的思想与特性,掌握面向对象的编程技巧,为以后的开发奠定扎实的面向对象编程基础
例题: 定义一个水果类,然后通过水果类,创建苹果对象、橘子对象、西瓜对象并分别添加上颜色属性
运行结果:
例题2:定义一个汽车类(要有颜色,马力,型号等属性)
运行结果
例题3:打印出小猫爱吃鱼,,小猫爱喝水
例题4:
六.文件与数据格式化
1.文件概述
文件标识的意义:找到计算机中唯一确定的文件。
文件标识的组成:文件路径、文件名主干、文件扩展名。
如图例子:
补充:操作系统以文件为单位对数据进行管理。
2.文件的类型(分为文本文件和二进制文件)
文本文件:专门存储文本字符数据。
二进制文件:不能直接使用文字处理程序正常读写,必须先了解其结构和序列化规则,再设计正确的反序列化规则,才能正确获取文件信息。
补充:二进制文件和文本文件这两种类型的划分基于数据逻辑存储结构而非物理存储结构, 计算机中的数据在物理层面都以二进制形式存储。
3.文件的基本操作(文件的打开.关闭.读写)
4.打开文件:内置函数open()用于打开文件,该方法的声明如下
例子:open(file, mode='r', buffering=-1)
补充:file:文件的路径。
mode:设置文件的打开模式,取值有r、w、a。
buffering:设置访问文件的缓冲方式。取值为0或1
5.打开文件有关示例图:
打开模式 | 名称 | 描述 | |
r/rb | 只读模式 | 以只读的形式打开文本文件/二进制文件,若文件不存在或无法找到,文件打开失败 | |
w/wb | 只写模式 | 以只写的形式打开文本文件/二进制文件,若文件已存在,则重写文件,否则创建新文件 | |
a/ab | 追加模式 | 以只写的形式打开文本文件/二进制文件,只允许在该文件末尾追加数据,若文件不存在,则创建新文件 | |
r+/rb+ | 读取(更新)模式 | 以读/写的形式打开文本文件/二进制文件,若文件不存在,文件打开失败 | |
w+/wb+ | 写入(更新)模式 | 以读/写的形式打开文本文件/二进制文件,若文件已存在,则重写文件 | |
a+/ab+ | 追加(更新)模式 | 以读/写的形式打开文本/二进制文件,只允许在文件末尾添加数据,若文件不存在,则创建新文件 |
7.关闭文件:Python可通过close()方法关闭文件,也可以使用with语句实现文件的自动关闭
例子:
file.close()
8.Python可通过close()方法关闭文件,也可以使用with语句实现文件的自动关闭。
with(自动关闭)
例子:
with open('a.txt') as f:
pass、
9.文件读写(read)
read()方法可以从指定文件中读取指定字节的数据,其语法格式如下: read(n=-1)
例题:
图:
with open('file.txt', mode='r') as f:
print(f.read(2)) # 读取两个字节的数据
print(f.read())
readline(可以指定读取一行数据)
例题:
with open('file.txt', mode='r', encoding='utf-8') as f:
print(f.readline())
print(f.readline())
例题图:
10.文件定位读写
seek方法:若要相对当前读写位置或文件末尾进行位移操作,需以二进制形式打开文件
seek(offset, from)
p offset :表示偏移量,即读写位置需要移动的字节数
p from :用于指定文件的读写位置,该参数的取值为 0 、 1 、 2
例题图:
11.文件与目录管理
管理文件与目录
删除文件——os.remove(文件名)
文件重命名——os.rename(原文件名,新文件名)
创建/删除目录——os.mkdir(目录名)/os.rmdir(目录名)
获取当前目录——os.getcwd()
更改默认目录——os.chdir(路径名)
获取目录列表——os.listdir(目录/路径
12.一二维数据的存储与读写
一维数据呈线性排列,一般用特殊字符分隔,例如: 使用空格分隔:成都 杭州 重庆 武汉 苏州 西安 天津 使用逗号分隔:成都,杭州,重庆,武汉,苏州,西安,天津 使用&分隔:成都&杭州&重庆&武汉&苏州&西安&天津
一维数据的存储需要注意以下几点: 同一文件或同组文件一般使用同一分隔符分隔。 分隔数据的分隔符不应出现在数据中。 分隔符为英文半角符号,一般不使用中文符号作为分隔符。
13.一二维数据的存储与读写
二维数据可视为多条一维数据的集合,当二维数据只有一个元素时,这个二维数据就是一维数据。 CSV(Commae-Separeted Values,逗号分隔值)是国际上通用的一二维数据存储格式。
CSV格式规范: 以纯文本形式存储表格数据 文件的每一行对应表格中的一条数据记录 每条记录由一个或多个字段组成 字段之间使用逗号(英文、半角)分隔
14.数据存储
CSV也称字符分隔值,具体示例如下:
姓名,语文,数学,英语,理综
刘婧,124,137,145,260
张华,116,143,139,263
邢昭林,120,130,148,255
鞠依依,115,145,131,240
黄丽萍,123,108,121,235
赵越,132,100,112,210
15.数据读取:Windows平台中CSV文件的后缀名为.csv,可通过Office Excel或记事本打开 Python在程序中读取.csv文件后会以二维列表形式存储其中内容
例题:
csv_file = open('score.csv')
lines = [] for line in csv_file:
line = line.replace('\n','')
lines.append(line.split(','))
print(lines)
csv_file.close()
16.为了直观地表示多维数据,也为了便于组织和操作,三维及以上的多维数据统一采用键值对的形式进行格式化。 网络平台上传递的数据大多是高维数据,JSON是网络中常见的高维数据格式。JSON格式的数据遵循以下语法规则:
补充:
数据存储在键值对(key:value)中,例如“姓名”: “张华”。
数据的字段由逗号分隔,例如“姓名”: “张华”, “语文”: “116”。
一个花括号保存一个JSON对象,例如{“姓名”: “张华”, “语文”: “116”}。
一个方括号保存一个数组,例如[{“姓名”: “张华”, “语文”: “116”}]。
17.什么是 JSON模块——json
利用json模块的dumps()函数和loads()函数可以实现Python对象和JSON数据之间的转换,这两个函数的具体功能
18. 多维数据的格式化
如图:
Python对象 | JSON数据 |
dict | object |
list,tuple | array |
str,unicode | string |
int,long,float | number |
True | true |
False | false |
None | null |
20.
什么是dumps()函数?
使用dumps()函数对Python对象进行转码。
例子:
>>> import json >>> pyobj = [[1, 2, 3], 345, 23.12, 'qwe', {'key1':(1,2,3), 'key2':(2,3,4)}, True, False, None] >>> jsonstr = json.dumps(pyobj) >>> print(jsonstr) >>> [[1, 2, 3], 345, 23.12, "qwe", {"key1": [1, 2, 3], "key2": [2, 3, 4]}, true, false, null]
loads()函数
示例:使用loads()函数将JSON数据转换为符合Python语法要求的数据类型
示例图:
例题1#第7章习题
输入一个文件和一个字符,统计该字符在文件中出现的次数。
输出结果如图所示:
例题2:生成一个10×10的随机矩阵并保存为文件(空格分隔行向量,换行分隔列向量)
运行结果图:
例题3:读取一个python源代码文件,将文件中所有 除保留字外的小写字母换成大写字母
运行代码示例图:
21本章小结:
本章主要介绍了文件与数据格式化相关的知识,包括计算机中文件的定义、文件的基本操作、文件与目录管理、数据维度与数据格式化。通过本章的学习,希望读者能了解计算机中文件的意义、熟
更多推荐
python总结
发布评论