Python制作句子挖空默写本

Python制作句子挖空默写本

前言

挖空记忆是一种常见的默写和背诵方法,可用于训练知识检索和提取的能力,也能检测自己对需要记忆的内容是否完全掌握,减少对书本的依赖。不仅可以用于古诗词的前后句回想,也可以“涂黑”一句话中的关键词,尝试上下文联想。

但这种填空题的制作实操比较麻烦,如果想对一句话实现几种不同的挖空,比如古诗中的前后句记忆,既想看见上句接下句,又想根据下句考察上一句有没有记牢,那么就要分开制作两次。停顿更多、篇幅更长的就更不用想了。

年纪大了总觉得知识记不住,主流的卡片式记忆软件也用的不太顺手,就想到了用代码帮我制作默写本的方式。只需要提供格式化的原文,自定义挖空规则,电脑自动帮我生成一份试卷,自查自抽自检,接下来记不记得住就看自己了。

背诵材料原文

这里示范一下古诗词填空默写。
原文是用markdown写的,格式如下。
左边是编辑视图,右边是阅读视图
背诵材料原文

生成的默写本

输出到txt文档
随机挖空
![在这里插入图片描述](https://img-blog.csdnimg.cn/2a2c0edc8986428fbe6441a9e01d6550.pn
再生成一次,挖空不一样
在这里插入图片描述

代码

# version 3.9.5
import os
import math
import random


filePath = "corpus.txt"
with open(filePath,"r",encoding="UTF-8") as f:
    lines = f.readlines()
    print("材料读取成功,分析中……")

blank = "_________"
fileName = os.path.splitext(filePath)[0]
dictation_output = "基于"+fileName+"材料制作的默写本:"+"\n\n"

for line in lines:
    line = line.strip("\n")
    # 筛选带序号的行,提取句子并挖空
    if line[1] ==".":
        # 获得序号
        index = line[0]+". " 
        # 获取分句列表,转化成索引
        sentence = line.split("**")[1]
        sub_lists = sentence.split(",") 
        num_list = [i for i,t in enumerate(sub_lists)]
        # 抽取半数句子挖空(向上舍入),随机无放回取样
        num_of_choices = math.ceil(len(num_list)/2)
        blank_list = random.sample(num_list,k=num_of_choices) 
        # 把列表中抽到的部分更换为空格,合并句子并新增到末尾
        new_list = [blank if i in blank_list else sub_lists[i] for i in range(len(sub_lists))]
        new_sentence = ",".join(new_list)
        if new_sentence[-1] != "。": # 保证句子末尾有句号
            new_sentence+="。"
        dictation_output += index + new_sentence + "\n"
    else:
        pass

with open("dictation_file.txt","w") as f:
    f.write(dictation_output)
    print("默写本制作完成!")

长文挖空也是可以做到的,给抽样设置一下间隔,不要连续挖在一起就行。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值