如何为Python填空题脚本实现随机设空位置的分配
Python 填空题随机挖空位置调整方案
原代码存在的基础问题
- 变量命名不规范:使用
max作为变量名,会覆盖Python内置的max()函数,容易引发后续逻辑错误。 - 长度计算逻辑错误:原代码中
max = len(sentence)统计的是原句的字符总长度,并非拆分后单词列表的长度,属于冗余逻辑,切片操作的边界判断存在巧合性。 - 挖空位置固定:硬编码索引5、7作为切分点,无法实现随机出题。
具体调整逻辑
- 引入
random模块,用于生成合法的随机挖空位置。 - 按照原脚本挖连续2个单词空位的规则,计算可随机的索引范围:由于要预留2个词的挖空长度,随机起始位置的可选区间为
0 ~ 单词列表总长度 - 3,避免切片越界。 - 基于随机生成的起始位置切分句子,拼接前半段内容、挖空位、后半段内容,后续判分逻辑与原脚本保持一致。
如果需要调整挖空的单词长度,只需同步修改随机范围、切片偏移量和填空占位符即可,比如挖单个词的空位时,将随机范围改为0 ~ total_words - 2,切分后半段的起始位置改为blank_start + 1,占位符改为单个_。
调整后可直接运行的完整代码
import random sentence = """Immigration is an issue that affects all residents of the United States, regardless of citizenship status""" sentence_words = sentence.split(" ") total_words = len(sentence_words) # 生成合法随机挖空起始位置,避免句子末尾越界 blank_start = random.randint(0, total_words - 3) # 按随机位置拆分句子片段 sentence_before = " ".join(sentence_words[:blank_start]) sentence_after = " ".join(sentence_words[blank_start + 2:]) # 输出带填空的题目 print(sentence_before + " _ _ " + sentence_after) # 接收输入并判分 user_input = input() result_sentence = sentence_before + " " + user_input + " " + sentence_after start = "\033[1m" end = "\033[0;0m" if result_sentence == sentence: print(start + "Correct" + end) else: print(start + "Incorrect" + end)
内容的提问来源于stack exchange,提问作者Johnny
相关产品推荐
相关产品推荐

