You need to enable JavaScript to run this app. 如何为Python填空题脚本实现随机设空位置的分配
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.10 20:15:01