Python语言程序设计 (第11期) 测验7: 文件和数据格式化

共10道单选题和2道编程题,限答1次、限时60分钟

选择题

1.Python对文件操作采用的统一步骤是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (A)
A.打开—操作—关闭
B.操作—读取—写入
C.打开—读写—写入
D.打开—读取—写入—关闭

2.关于CSV文件的描述,哪个选项的描述是错误的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (D)
A.CSV文件格式是一种通用的、相对简单的文件格式,应用于程序之间转移表格数据
B.整个CSV文件是一个二维数据
C.CSV文件的每一行是一维数据,可以使用Python中的列表类型表示
D.CSV文件通过多种编码表示字符

正确答案 D
一般来说,CSV文件都是文本文件,由相同编码字符组成。

3.二维列表ls=[[1,2,3], [4,5,6],[7,8,9]],哪个选项能获取其中元素5?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬(D)
A.ls[4]
B.ls[-2][-1]
C.ls[-1][-1.
D.ls[1][1]

4.以下选项不是Python文件读操作的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (B)
A.readline()
B.readtext()
C.readlines()
D.read()

5.关于文件关闭的close()方法,哪个选项的描述是正确的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (D)
A.文件处理遵循严格的“打开-操作-关闭”模式
B.如果文件是只读方式打开,仅在这种情况下可以不用close()方法关闭文件
C.文件处理结束之后,一定要用close()方法关闭文件
D.文件处理后可以不用close()方法关闭文件,程序退出时会默认关闭

正确答案 D
close()方法可以省略。 打开文件后采用close()关闭文件是一个好习惯。如果不调用close(),当前Python程序完全运行退出时,该文件引用被释放,即程序退出时,相当于调用了close()。

6.给定列表ls = [1, 2, 3, “1”, “2”, “3”],其元素包含2种数据类型,哪个选项是列表ls的数据组织维度?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (A)
A.一维数据
B.二维数据
C.高维数据
D.多维数据

正确答案 A
列表元素如果都是列表,其可能表示二维数据,例如:[[1,2], [3,4], [5,6]]。
如果列表元素不都是的将列表,则它表示一维数据。

7.关于数据组织的维度,哪个选项的描述是错误的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (D)
A.二维数据采用表格方式组织,对应于数学中的矩阵
B.一维数据采用线性方式组织,对应于数学中的数组和集合等概念
C.高维数据由键值对类型的数据构成,采用对象方式组织
D.数据组织存在维度,字典类型用于表示一维和二维数据

正确答案 D
字典用于表示高维数据,一般不用来表示一二维数据。

8.以下选项对文件描述错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (B)
A.文件是存储在辅助存储器上的数据序列
B.文件是程序的集合和抽象
C.文件是数据的集合和抽象
D.文件可以包含任何内容

9.对于Python文件,以下描述正确的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (A)
A.同一个文件可以既采用文本方式打开,也可以采用二进制方式打开
B.当文件以文本方式打开时,读取按照字节流方式
C.当文件以二进制文件方式打开时,读取按照字符串方式
D.根据不同类型的文件,打开方式只能是文本或者二进制中的一种

B,C刚好相反

10.于Python文件的‘+’打开模式,哪个选项的描述是正确的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (B)
A.只读模式
B.与r/w/a/x一同使用,在原功能基础上增加同时读写功能
C.追加写模式
D.覆盖写模式

只读模式‘r’
追加写模式’a’
覆盖写模式‘w’
创建写模式’x’

程序设计题

1.文本的平均列数
描述
打印输出附件文件的平均列数,计算方法如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
(1)有效行指包含至少一个字符的行,不计算空行;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
(2)每行的列数为其有效字符数;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
(3)平均列数为有效行的列数平均值,采用四舍五入方式取整数进位。

with open('latex.log', 'r', encoding='utf-8') as f:#这是题目里给的打开附件的方法
    f1 = f.readlines()	#按行读入
    column = 0	#列计数器
    row = 0	#行计数器
    sum = 0	#对列进行求和,
    for line in f1:
        if line in ['\n','\r\n']:	#去掉空行
            continue
        if line.strip() == "":		#去掉全是空格的行
            continue
        column=len(line)-1		#求出每列的有效字符数,即列数
        sum+=column			#列数求和
        row+=1				#每过一行加一
    aver=int((sum+0.5)/row)		#四舍五入取整
    print(aver)

求列数的时候一定要减一,减去换行符
不然结果是错的,一开始没注意,老以为是其他地方写错了(╯°Д°)╯︵┴┴

2.CSV格式清洗与转换
描述
附件是一个CSV格式文件,提取数据进行如下格式转换:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
(1)按行进行倒序排列;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
(2)每行数据倒序排列;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
(3)使用分号(;)代替逗号(,)分割数据,无空格;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
按照上述要求转换后将数据输出。

在这里插入图片描述

ls=[]
with open('data.csv', 'r', encoding='utf-8') as f:
    f1=f.readlines()#打开附件
for line in f1:				#按行操作
    line=line[::-1]			#先把每一行的数据逆序
    line=line.replace(',',';')		#替换逗号
    line=line.replace(' ','')		#替换空格
    line=line.replace('\n','')		
    ls.append(line)			#将这一行加入到ls列表
ls=ls[::-1]			#将列表逆序,实现了对行的倒序
for line in ls:
    print(line)
原创文章 27 获赞 26 访问量 7782

猜你喜欢

转载自blog.csdn.net/unseven/article/details/105246760