python编程基础及应用(重庆大学):11-1 ,11-2 文本的操作

11-1: 假定一个文本文件中包含未指定个数的考试分数,请编写一个程序,从文件中读取分数,以列表的方式打印输出所有的分数,同时计算分数之和,平均数以及最大分数。文件中的分数用空格分隔,程序运行时应该提醒用户输入一个文件名。

代码:

# @Time:2021/11/2313:57
# @Author:中意灬
# @File:11-1.py
# @ps:tutu qqnum:2117472285

def sorcecount(name):
    with open(f"{name}",'r',encoding="utf-8")as f:
        list=[]
        str=f.read()#读取全部内容
        for i in str.split():
            list.append(float(i))#将内容以空格为分隔符分隔出来并添加到列表中
        print(list)
        s=sum(list)#求和
        avg=s/len(list)#求平均分数
        m=max(list)#求最大分数
        print("分数之和:",s,"\n平均数:",avg,"\n最大分数:",m)

if __name__=="__main__":
    name=input("请输入一个文件名:")
    sorcecount(name+".txt")

运行结果:
在这里插入图片描述

注:想要运行成功,应该文件和代码要在同一个路径下,或者你运行时使用绝对路径

11-2: 编写程序统计一个文本文件中的字符串,单词数以及行数,单词由空格分隔。程序应提示用户输入一个文件名。

代码:

# @Time:2021/11/2314:46
# @Author:中意灬
# @File:11-2.py
# @ps:tutu qqnum:2117472285
import re

def count(name):
    list=[]
    with open(f'{name}',"r",encoding="utf-8")as f:
        rowlenth=0
        str=[]
        for line in f:
            rowlenth=rowlenth+1       #行数
            str.append(line.strip('\n'))#将每行作为元素保存为一个列表,去掉换行符
        for i in str:
            for x in i.split():
                list.append(x)
        string=" ".join(list)      #将list列表的元素用空格连接起来,因为接下来要用正则表达式匹配单词,而它只能接收字符串
        char = re.findall(r'[a-zA-Z]', string)
        num = re.findall(r'[0-9]', string)
        fuhao = re.findall(r'[,.''""?,。’‘“”?]', string)
        chi = re.findall(r'[\u4E00-\u9Fa5]', string)# \u4E00-\u9Fa5是中文的范围
        charnum=2*len(chi)+len(char+num+fuhao)      #字符数,中文占两个字符
        wordnum=re.findall(r'[a-zA-Z]+',string) #正则表达式匹配单词
        print(string)
        print('单词数:',len(wordnum))
        print('行数:',rowlenth)
        print('字符数:',charnum)
if __name__=="__main__":
    name=input("请输入一个文件名:")
    count(name+'.txt')

运行结果:
在这里插入图片描述
注:想要运行成功,应该文件和代码要在同一个路径下,或者你运行时使用绝对路径

猜你喜欢

转载自blog.csdn.net/qq_55977554/article/details/121498475