茅屋为秋风所破歌

八月秋高风怒号,卷我屋上三重茅。
茅飞度江洒江郊,高者挂罥长林梢,下者飘转沉塘坳。
南村群童欺我老无力,忍能对面为盗贼。
公然抱茅入竹去,唇焦口燥呼不得,归来倚仗自叹息。
俄顷风定云墨色,秋天漠漠向昏黑。
布衾多年冷似铁,娇儿恶卧踏里裂。
床头屋漏无干处,雨脚如麻未断绝。
自经丧乱少睡眠,长夜沾湿何由彻!
安得广厦千万间,大庇天下寒士俱欢颜,风雨不动安如山!
呜呼,何时眼前突兀见此屋,吾庐独破受冻死亦足!
为了满足您的需求,即按照指定格式输出诗人及其作品数量,我们可以对原始代码进行一些针对性的修改。以下是详细的分析、步骤以及完整的代码实现。 --- ### 分析与解决思路 1. **数据来源**: 假设有一个文本文件 `唐诗.txt`,其中每一行包含一位诗人的姓名及对应的作品编号,形如: ``` 杜甫: 春望 李白: 将进酒 王维: 山居秋暝 ``` 2. **目标**: - 统计每位诗人的作品数量。 - 按照作品数量从高到低排序。 - 输出格式需为:“诗人XXX作品YYY”。 3. **关键点**: - 防止因空白行或其他异常导致统计出错。 - 使用字典记录每位诗人的作品总数。 - 排序时利用 Python 的内置函数 `sorted()` 和 Lambda 表达式完成。 --- ### 完整代码实现 ```python # 初始化字典用于存储统计数据 authors_counts = {} try: # 打开并读取文件内容 with open('唐诗.txt', 'r', encoding='utf-8') as file: for line in file: # 清理多余字符并跳过无效行 if ':' not in line or len(line.strip()) == 0: continue # 提取诗人名称和作品信息 parts = line.split(':') author_name = parts[0].strip() # 更新字典中的值 if author_name in authors_counts: authors_counts[author_name] += 1 else: authors_counts[author_name] = 1 except Exception as e: print("发生错误:", str(e)) # 对字典按值(作品数量)降序排列 lb = sorted(authors_counts.items(), key=lambda x: x[1], reverse=True) # 构造结果字符串 result_str = '' for poet, count in lb: result_str += f"诗人{poet}作品{count} " # 最终输出 print(result_str.strip()) ``` --- ### 示例运行结果 假设输入文件 `唐诗.txt` 内容如下: ``` 杜甫: 登高 杜甫: 茅屋秋风 杜甫: 兵车行 ... 李白: 黄河之水天上来 李白: 床前明月光 ... 王维: 相思 王维: 送元二使安西 ... ``` 经过上述代码处理后,将得到以下输出: > 诗人杜甫作品37 诗人李白作品30 诗人王维作品29 诗人李商隐作品24 诗人孟浩然作品15 诗人韦应物作品12 诗人刘长卿作品10 诗人杜牧作品10 ... --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值