你知道中国四大名著吗
时间: 2023-03-02 08:16:04 浏览: 80
是的,我知道中国四大名著,它们分别是《红楼梦》、《西游记》、《水浒传》和《三国演义》。这四部作品都是中国文学经典,被广泛传播和阅读。其中,《红楼梦》被誉为中国小说的巅峰之作,被认为是中国古代文学史上的一颗明珠;《西游记》讲述了孙悟空等人物的故事,被视为中国神话小说的代表作;《水浒传》则以宋江等人物为主角,描写了农民起义的故事;《三国演义》则讲述了三国时期的历史和英雄人物的故事。
相关问题
《三国演义》是中国四大名著之一,该书描述了100多个典型人物。统计书中典型人物名字出现的次数能够侧面反映人物的重要性。请给出这个计算问题的IPO描述,重点描述其中的算法部分。出程序。
IPO描述:
输入:《三国演义》文本文件
处理:统计每个典型人物名字在文本中出现的次数
输出:每个典型人物名字在文本中出现的次数,按照出现次数从高到低排序
算法部分:
1. 读取《三国演义》文本文件,将其转化为字符串。
2. 定义一个字典,用于存储每个典型人物名字在文本中出现的次数。
3. 遍历文本字符串,对于每个典型人物名字,使用正则表达式匹配其出现的次数,并将其存储到字典中。
4. 对字典按照值进行排序,得到每个典型人物名字在文本中出现的次数,按照出现次数从高到低排序。
5. 输出排序后的结果。
代码实现:
import re
def count_characters(filename):
with open(filename, 'r', encoding='utf-8') as f:
text = f.read()
characters = ['曹操', '刘备', '孙权', '诸葛亮', '周瑜', '关羽', '张飞', '赵云', '马超', '黄忠', '魏延', '姜维', '庞统', '徐庶', '司马懿', '张辽', '许褚', '夏侯惇', '夏侯渊', '张郃', '于禁', '甄姬', '貂蝉', '黄月英', '孟获', '祝融', '大乔', '小乔', '甘宁', '吕布', '华佗', '袁绍', '袁术', '董卓', '吕蒙', '陆逊', '周泰', '凌统', '丁奉', '孙策', '孙坚', '鲁肃', '华雄', '公孙瓒', '颜良', '文丑', '张角', '于吉', '蔡文姬', '荀彧', '程昱', '郭嘉', '贾诩', '荀攸', '徐晃', '典韦', '许攸', '高顺', '张任', '张昭', '张纮', '吕葆中', '吕虔', '吕翔', '陈宫', '田丰', '沮授', '逢纪', '刘表', '刘璋', '刘备妻妾', '孙尚香', '甘夫人', '黄月英', '王异', '糜夫人', '孙夫人', '大乔', '小乔', '步练师', '貂蝉', '王允', '董卓部下', '华雄部下', '董卓女儿', '吕布部下', '袁绍部下', '袁术部下', '曹操部下', '刘备部下', '孙权部下', '蜀汉臣子', '魏国臣子', '吴国臣子', '群雄', '其他']
character_count = {}
for character in characters:
pattern = re.compile(character)
count = len(pattern.findall(text))
character_count[character] = count
sorted_count = sorted(character_count.items(), key=lambda x: x[1], reverse=True)
for item in sorted_count:
print(item[0], item[1])
count_characters('sanguoyanyi.txt')
Python《水浒传》是中国的四大名著之一,该书描述了100多个典型人物,统计书中典型人物名字出现的次数能够侧面反映人物的重要性。请给出这个计算问题的IPO描述,重点描述其中的算法部分。
IPO描述:
输入:《水浒传》文本文件
处理:统计文本中每个典型人物名字出现的次数
输出:按照出现次数降序排列的典型人物列表
算法描述:
1. 读取《水浒传》文本文件并将文本内容转换为字符串。
2. 定义一个字典类型的变量,用于存储每个典型人物名字出现的次数。
3. 定义一个正则表达式,用于匹配典型人物名字。
4. 使用正则表达式在字符串中查找典型人物名字,并统计出现次数,将结果存储在字典中。
5. 将字典按照出现次数降序排列,并输出结果。
具体实现代码如下:
```python
import re
# 读取文本文件并将内容转换为字符串
with open('shuihuzhuan.txt', 'r', encoding='utf-8') as f:
content = f.read()
# 定义字典存储典型人物名字出现的次数
names = {}
# 定义正则表达式匹配典型人物名字
pattern = re.compile(r'[\u4e00-\u9fa5]{2,5}(?:·[\u4e00-\u9fa5]{2,5})*')
# 在字符串中查找典型人物名字,并统计出现次数
for name in pattern.findall(content):
if name in names:
names[name] += 1
else:
names[name] = 1
# 将字典按照出现次数降序排列,并输出结果
sorted_names = sorted(names.items(), key=lambda x: x[1], reverse=True)
for name, count in sorted_names:
print(name, count)
```