Python第八章作业

第一关统计字母数量

1.1 任务描述

读取附件是一篇英文短文,请编写程序统计这篇短文前 n 行中每一个英文字母出现的次数,结果按次数降序排列,次数相同时,按字母表顺序输出。若 n 值大于短文行数,输出整篇文章中每一个英文字母出现的次数(大写字母按小写字母统计

1.2 设计思路

因为我们要统计.txt文件的信息 所以我们就要对它进行文件操作,打开读取关闭等。题目要求前n行每个英文字符的出现的次数,我们就想到输入一个变量n来控制读取的行数

def openFile(fileName, n):
    ls = []
    mystr=""
    with open(fileName, 'r', encoding='utf-8') as data:
        for i in range(n):
            # ls.append(data.readline().lower())
            mystr +=data.readline().lower()
    #     ls = [data.readline().lower() for i in range(n)]
    # return ls
    return mystr

with open 的用法 with open(文件路径,模式,编码格式)as 文件名,它与f = open(文件路径,模式,编码格式)的区别 前者当走出with open 代码块时可以自动close掉文件,而f = open()要自己写close。

文件的读取就三个函数 一个是f.read() 不指定参数就是读完,指定参数就是读多少个字符
在这里插入图片描述
在这里插入图片描述

另外一个是f.readline() 和 f.readlines(), f.readlines() 是读完所有行,他们的返回值都是字符串哦。

在这里插入图片描述

f.readline() 每调用一次读一行,那么我们是不是可以调用n次这个函数就可以读取n行了

def openFile(fileName, n):
    mystr=""
    with open(fileName, 'r', encoding='utf-8') as data:
        for i in range(n):
            mystr +=data.readline().lower()
    return mystr

因为题目说都当成小写字母统计所以用了f.readline()。lower方法 把这些字符串拼接起来

def statistics(txt,s):
    # dic = {}
    # for x in mystr:
    #     if x in s:
    #         dic[x] = dic.get(x,0) + 1
    dic ={x: mystr.count(x) for x in s}
    return dic

定义一个 空字典,和字母表如果 x(mystr的元素在字母表中)对应建的值加一 返回字典 dic[x] = dic.get(x,0) + 1 dic。get(a,b)方法 a是键 b是默认值

 def sort(dic):
    ls = sorted(dic.items(), key = lambda item : (-item[1],item[0]))
    return ls

dic.items()得到所有的键和值,因为是值的逆序所以是-item[1],同时要满足当次数一样是字母小的在前面所以lamba 表达式是key = lambda item : (-item[1],item[0]

1.4 总的代码实现

def openFile(fileName, n):
    ls =[]
    with open(fileName, 'r', encoding = 'utf-8') as data:
        # for i in range(n):
        #     ls.append(data.readline().lower())
        ls =[data.readline().lower() for i in range(n)]
    return ls
def statistics(txt,s):
    mystr = ' '.join(txt)
    # dic = {}
    # for x in mystr:
    #     if x in s:
    #         dic[x] = dic.get(x,0) + 1
    dic ={x: mystr.count(x) for x in s}
    return dic
def sort(dic):
    ls = sorted(dic.items(), key = lambda item : (-item[1],item[0]))
    return ls
        
fileName ="step2/The Old Man and the Sea.txt"
s = 'qwertyuiopasdfghjklzxcvbnm'
n = int(input())
txt = openFile(fileName, n)
dic = statistics(txt,s)
ls = sort(dic)
for x in ls:
    # print(f'{x[0]}的数量是{x[1]:>3}个')
    print('{} 的数量是 {:>3} 个'.format(x[0],x[1]))
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第八章作业主要是关于字符串和列表、元组的操作。对于字符串,可以使用索引和切片来获取和修改字符串中的字符,还可以使用内置函数,如len()来获取字符串的长度,以及count()、index()等函数来统计字符出现的次数和找出字符的位置。 对于列表和元组,可以使用索引和切片来获取和修改列表和元组中的元素,还可以使用内置函数,如len()来获取列表和元组的长度,以及count()、index()等函数来统计元素出现的次数和找出元素的位置。 作业可能包括以下内容: 1. 使用字符串的切片和索引操作,截取出指定的子字符串; 2. 使用字符串的内置函数,如count()、index()等来统计指定字符的出现次数和位置; 3. 使用列表的索引来获取和修改指定的元素; 4. 使用列表的切片操作,截取出指定的子列表; 5. 使用列表的内置函数,如append()、count()等来添加元素和统计指定元素的出现次数; 6. 使用元组的索引来获取指定的元素; 7. 使用元组的切片操作,截取出指定的子元组; 8. 使用元组的内置函数,如count()、index()等来统计指定元素的出现次数和位置。 为了完成第八章作业,我们需要熟悉字符串、列表和元组的基本操作和内置函数的使用。可以通过阅读和理解教材中的相关知识点和示例代码,然后按照作业的要求进行编写和测试。编写过程中需要注意细节和语法的正确性,同时也可以参考官方文档和其他相关资料进行查找和学习。完成作业后,可以将代码保存并运行,然后检查输出结果是否符合预期。如果有错误或不清楚的地方,可以再次阅读教材或者寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值