IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【功能更新-1:选项统一】利用python生成自制英语试题程序开发 -> 正文阅读

[Python知识库]【功能更新-1:选项统一】利用python生成自制英语试题程序开发

生成试题截图效果

生成其中一页试题---1/6

  1. 在本地硬盘建立一个源试题程序文件

  2. 在这里插入图片描述

  3. 利用下面程序代码,导入txt文件,同时生成一批练习文件

  4. 这个试题随机生成的效果还是很棒的!在这里插入图片描述

功能更新:

  1. 原程序,只能输出一组试题,但问题是每题答案不同,有的单词首字母是大小,而有的单词首字母是小写的,这就需要我们根据题目的设置,修改一下答案中的单词首字母
  2. 于是对程序进行了一个if…elif…的调整,根据答案先判断这个题目的正确答案是首字母大写,还是首字母小写,如果是大写,全部答案改为大写,如果是小写,那全部改变小写。
#代码片断:
        # 判断列表中的单词首字母是否大写,如果correctAnswer[0]首字母在a~z之间,输出False 否则输出True
        letter_dx = "False" if ord('a') <= ord(correctAnswer[0]) <= ord('z') else "True"

        if letter_dx == 'True':
            answerOptions_dx = [i.capitalize() for i in answerOptions]  # 列表推导式
            for i in range(4):
                quizFile.write(' %s. %s\n' % ('ABCD'[i], answerOptions_dx[i]))
        elif letter_dx == 'False':
            for i in range(4):
                answerOptions_dx = [i.lower() for i in answerOptions]  # 列表推导式
                quizFile.write(' %s. %s\n' % ('ABCD'[i], answerOptions_dx[i]))
#coding=gbk
# 随机测试生成器.py - 生成问题及答案
# 随机生成问题并生成相应答案

import random,os


d = {}
name = ''
def file_list():
    files = os.listdir('F:\物理练习图\九年级\字典组建试题')

    return files

file = file_list()


def english(file):

    for ind,fil in enumerate(file):
        print(ind,'---',fil)
    for ind,fil in enumerate(file):
        fil = ''.join(fil)
        xz = input('选择序号:')
        if fil.endswith('.txt'):
            if xz == ind:
                fil = fil


            with open(rf"F:\物理练习图\九年级\字典组建试题\{fil}") as f:

                print(f'{fil}试题组建成功---F:\物理练习图\九年级\英语试题生成文件 ')
                for line in f:
                    key,val = line.split('|')
                    val = ''.join(val)
                    val = val.strip('\n')
                    d[key] = val

            return d

eng_tests = english(file)
pd_letter_dx = []

file_name = input('文件名称:')
for quizNum in range(20):
    # 新建试卷及答案的txt文档。
    quizFile = open(r'F:\物理练习图\九年级\英语试题生成文件\{}-{}.doc'.format(file_name,quizNum + 1),'w',encoding='utf-8')
    answerKeyFile = open(r'F:\物理练习图\九年级\英语试题生成文件\{}-_答案{}.txt'.format(file_name,quizNum + 1), 'w')

    # 利用write语法,参数:字符串,给试卷写出表头。
    quizFile.write('姓名:\t\t日期:\t\t学期:\t\t')
    #利用*写入多空格,把卷和数字参数合并到起,+号连接
    quizFile.write((' ' * 20) + '英语专题测试 (%s)' % (quizNum + 1))
    #空两行
    quizFile.write('\n\n')

    # 把字典的键名,转化成列表,打乱试题答案。
    eng_test_list = list(eng_tests.keys())
    random.shuffle(eng_test_list)

    # 遍历每一个问题,并生成问题题干。
    for questionNum in range(len(eng_test_list)):

        # 得到四个答案,三错一对。
        correctAnswer = eng_tests[eng_test_list[questionNum]]#从获取的键名列表中把字典的键值传递给正确变量
        print(correctAnswer,'正确答案')
        wrongAnsewers = list(eng_tests.values())
        del wrongAnsewers[wrongAnsewers.index(correctAnswer)]
        wrongAnsewers = random.sample(wrongAnsewers, 3)
        answerOptions = wrongAnsewers + [correctAnswer]

        random.shuffle(answerOptions)

        # 将问题和答案选项写进试卷的txt文档。
        quizFile.write('%s. %s \n' %(questionNum + 1,
            eng_test_list[questionNum]))
        #写入试卷中的选项首字母大写的判断

        # 判断列表中的单词首字母是否大写,如果correctAnswer[0]首字母在a~z之间,输出False 否则输出True
        letter_dx = "False" if ord('a') <= ord(correctAnswer[0]) <= ord('z') else "True"

        if letter_dx == 'True':
            answerOptions_dx = [i.capitalize() for i in answerOptions]  # 列表推导式
            for i in range(4):
                quizFile.write(' %s. %s\n' % ('ABCD'[i], answerOptions_dx[i]))
        elif letter_dx == 'False':
            for i in range(4):
                answerOptions_dx = [i.lower() for i in answerOptions]  # 列表推导式
                quizFile.write(' %s. %s\n' % ('ABCD'[i], answerOptions_dx[i]))

        quizFile.write('\n')

        # 将答案写进答案的txt文档。
        answerKeyFile.write('%s.%s\n' %(questionNum + 1, 'ABCD'[
            answerOptions.index(correctAnswer)]))

    quizFile.close()
    answerKeyFile.close()


希望更多的老师借鉴,提出宝贵的建议!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:16:37  更:2021-11-29 16:16:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:31:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码