python抽学号程序_Python编写编程作业批量自动打分程序的思路与实现

2023-11-17

总体思路:把接口明确地告诉学生(本文后面的代码要求学生程序中必须有个函数叫做searchOnede),然后学生把Python程序文件(学号_姓名.py)以任何方式提交给老师,放到同一文件夹中。下面的代码首先由老师编写一个自己认为的最佳和最优实现,然后把学生的程序文件作为模块导入并调用其中的searchOne函数,如果学生作业中没有这个函数判为0分,如果有这个函数但是执行结果与老师的不一样也是0分,如果结果正确则根据学生代码运行时间进行打分,速度越慢则分数越低。

作业自动打分代码不是通用的,因为要批改的作业内容和要求不一样,可以根据本文大概思路自行编写相应的作业批改程序。

from string import ascii_letters, digits

from random import choice

from os import listdir, rename

from os.path import splitext

from time import time

def searchOne(s):

'''函数功能:

给定任意字符串,找出其中只出现一次的字符,

如果有多个这样的字符,就全部找出。'''

# 创建空字典

d = dict()

# 遍历字符串,并分别记录每个字符的出现次数

for ch in s:

# 这里重点演示字典的get()方法

# 如果这个字符出现过,加1

# 如果这个字符第一次出现,0+1

d[ch] = d.get(ch, 0) + 1

# 列表推导式,查找所有只出现一次的字符

chs = [ch for ch, n in d.items() if n==1]

# 返回最终结果,所有只出现一次的字符

return chs

# 10个待测字符串,统计标准答案处理结果和用时

chs = ascii_letters + digits

ss = [''.join((choice(chs) for j in range(20))) for i in range(10)]

# 保存每个字符串处理结果和用时的字典

d = dict()

# 每个字符串处理N次

N = 100

for s in ss:

# 每个字符串的处理结果

d[s] = [searchOne(s), 0]

start = time()

for i in range(N):

searchOne(s)

end = time()

# 处理字符串所用时间

d[s][1] = end-start

# 遍历学生作业文件

fns = [f for f in listdir('.') if f.endswith('.py') and f!='autoStandard.py']

print(fns)

for f in fns:

t = splitext(f)

fn ='a'+t[0]

rename(f, fn+t[1])

print(fn)

# 把学生作业程序当做模块来导入

exec('import '+fn)

# 随机选择一个字符串进行测试

s = choice(ss)

# 如果学生的函数命名不符合要求,0分

try:

r1 = eval(fn).searchOne(s)

except:

print(fn, 0)

continue

# 如果学生函数运行结果不正确,0分

if r1!=d[s][0]:

print(fn, 0)

continue

# 如果结果正确,根据运行速度评分,越快分数越高

start = time()

for i in range(N):

eval(fn).searchOne(s)

delta = time()-start

score = 100 - (delta-d[s][1])*0.7

print(fn, round(score, 1))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python抽学号程序_Python编写编程作业批量自动打分程序的思路与实现 的相关文章

  • typeAliasesPackage的作用

    mybatis和spring整合 typeAliasesPackage自动配置别名
  • JAVA——SWING界面开发

    要开发一个界面 我们一般通过写一个窗体并在这个窗体上放置其它元素组件来实现 一个界面是一个JFrame对象 代码实现如下 package com qsj login1220 public class Login public static
  • 数据结构学习(1)----数组之螺旋矩阵Ⅱ

    题目 给你一个正整数 n 生成一个包含 1 到 n2 所有元素 且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 思路 模拟过程 设置边界 生成一个 n n 空矩阵 res 二维数组 随后模拟整个向内环绕的填入过程 定义当
  • 【PCL】—RANSAC点云分割算法详解

    参考 https www bbsmax com A rV57lnmVdP 1 点云分割的概念 点云分割可谓是点云处理的精髓 也是三维图像相对二维图像最大优势的体现 点云分割的目的是提取点云中的不同物体 从而实现分而治之 突出重点 单独处理的
  • 什么叫机器人编程课

    什么叫机器人编程课 小孩的学习一直都是家长们非常关心和重视一件事情 很多的家长在培养孩子的学习方面也是非常的多的 就拿现在很多的家长给孩子选择机器人编程的课程来说 有的家长对于什么叫机器人编程课并不是很清楚 今天我们就一起来了解一下什么叫机
  • AFX_PMSG数据结构

    AFX PMSG数据结构 定义 typedef void AFX MSG CALL CCmdTarget AFX PMSG void void AFX MSG CALL CCmdTarget AFX PMSG void AFX MSG CA
  • QT5.12在windows上边的安装

    使用国内镜像源在线安装QT 2023 3 25更新 qt国内镜像 Iotfsd的博客 CSDN博客 先下载 STEP1 下载qt online installer Index of official releases online inst
  • 汽车 Automotive > T-BOX GNSS高精定位测试相关知识

    参考 https en wikipedia org wiki Global Positioning System GPS和GNSS的关系 GPS Global Positioning System 全球定位系统是美国军民两用的导航定位卫星系
  • rsa生成公私钥php,php中rsa生成公私钥和加解密

    php中rsa生成公私钥和加解密 注意 php使用RSA时需要开启openssl扩展 生成公私钥 创建公私钥 res openssl pkey new 获取私钥 openssl pkey export res private key 获取公
  • Python跨平台应用-BeeWare打造移动端应用和构建Android时的异常处理

    目录 简介 安装 创建demo 运行 打包为Windows程序 打包为安卓APP 构建安卓错误处理 gt gt gradle改为本地 报错1 Could not resolve all artifacts for configuration
  • cgo+gSoap+onvif学习总结:1、方案初衷、资料收集及cgo实现helloworld

    cgo gSoap onvif学习总结 1 方案初衷 资料收集及cgo实现helloworld 文章目录 cgo gSoap onvif学习总结 1 方案初衷 资料收集及cgo实现helloworld 1 前言 2 资料收集 3 cgo h
  • Keil转STM32CubeIDE工程移植问题记录

    Keil转STM32CubeIDE工程移植问题记录 1 编译报错问题处理 2 工程相关配置问题 3 调试器配置 从Keil软件转战STM32CubeIDE 转换的过程中遇到了不少问题 在此记录一下 防止以后再踩坑 也给同样有转软件需求的朋友
  • 老派程序员——徒手实现伟大成就

    原文地址 http www csdn net article 2012 08 06 2808178 摘要 本文介绍了三位非常著名的程序员 Ken Thompson Joe Armstrong 和 Jamie Zawinski 他们是如何发明
  • Java中的Set集合接口实现插入对象不重复的原理

    java lang Object中对hashCode的约定 1 在一个应用程序执行期间 如果一个对象的equals方法做比较所用到的信息没有被修改的话 则对该对象调用hashCode方法多次 它必须始终如一地返回同一个整数 2 如果两个对象
  • litemall项目部署,启动后台前端cnpm install报错

    在命令窗口切换到C test file litemall litemall admin目录输入cnpm install 出现报错 1 将node modules 文件删除 2 在命令窗口切换到C test file litemall lit
  • 局域网下远程唤醒主机

    Linux下远程唤醒 Linux下唤醒远程主机使用的命令主要是 wakeonlen 安装 apt get install wakeonlen 使用命令为 wakeonlen AC 48 11 Windows下远程唤醒 Windows下主要的
  • 配置Nginx以隐藏访问端口

    进入usr local nginx conf 编辑nginx conf文件 在http模块中加入下句 include vhost conf 进入usr local nginx conf vhost xxx conf 编写如下内容 nginx
  • Maven依赖仓库

    Maven依赖仓库
  • Linux的目录切换和用户管理

    切换目录 在使用linux系统的时候 会用cd来切换目录 cd 切换到根目录 cd 切换到主目录 cd 切换到之前工作目录 cd 虽然很方便但只能保存一次目录 pushd命令使用目录堆栈可以把多个目录存放起来 配套使用pushd popd

随机推荐

  • android实现共享数据

    计划是在后台开个service定位服务 前台需要经纬度的时候 从service获取 实现过程如下 public GPSService minTime UnTaskCheckingActivity minTime minDistance Un
  • mpc模型预测控制从原理到代码实现 mpc模型预测控制详细原理推导 matlab和c++两种编程实现

    mpc模型预测控制从原理到代码实现 mpc模型预测控制详细原理推导 matlab和c 两种编程实现 四个实际控制工程案例 双积分控制系统 倒立摆控制系统 车辆运动学跟踪控制系统 车辆动力学跟踪控制系统 包含上述所有的文档和代码 ID 564
  • 接口自动化平台(三):Promise简介 + 前端 + 后端 + 联调

    目录 1 Promise 2 接口自动化平台前端开发 2 1 前端环境搭建 2 2 新建用例页 CreateCase 2 2 1 增加路由信息 config routes ts 2 2 2 增加对应后端接口的信息 config proxy
  • 启动项

    size medium 1 imjpmig exe是微软Microsoft输入法编辑器程序 是微软Microsoft输入法编辑器程序 我给禁用了 每什么影响似乎 2 ctfmon exe是Microsoft Office产品套装的一部分 提
  • Docker运行MySQL5.7

    步骤如下 1 获取镜像 docker pull mysql 5 7 2 创建挂载目录 mkdir home mydata data mkdir home mydata log mkdir home mydata conf 3 先启动dock
  • FreeRTOS笔记(二)

    FreeRTOS笔记 二 静态任务 文章目录 FreeRTOS笔记 二 静态任务 一 任务定义 二 任务创建 2 1 定义任务栈 2 2 定义任务函数 2 3 定义任务控制块 2 4 实现任务创建函数 三 实现就绪列表 3 1 定义就绪列表
  • PCL去除地面

    如图所示 分别是 原图 gt 直通滤波后 gt 取地面的图 gt 取地面的凹凸四边行加地面上的物体图
  • C++初学知识点总结

    C 学习笔记 1 namespace 所谓的namespace就是指标识符的各种可见范围 C 标准程序中的所有标识符都被定义于一个名为std的namespace中 2 iostream与iostream h的差别 差别当然不只是一个带后缀
  • redis做计数器相关

    最近在准备晋升PPT 发现品牌粉丝数和新浪微博的计数本质一样 哎 之前就发现了 就是没深入 要深入啊 品牌粉丝数设计相关 a Redis在计数器场景上的应用 http www searchdatabase com cn showconten
  • Unity SpriteAtlas实战使用

    前言 图集计划使用sprite atlas 但是看了网上资料用于实战的有点少 自己总结下 Unity 版本2019 4 9f1 图集设置 Sprite Packer Mode Disabled 就是不会生成图集 Enable For Bui
  • 二叉树的先序,中序,后序遍历

    java 二叉树的先序 中序 后序遍历 一 前序遍历 访问顺序 先根节点 再左子树 最后右子树 上图的访问结果为 GDAFEMHZ 1 递归实现 public void preOrderTraverse1 TreeNode root if
  • 自动化测试与禅道工具

    目录 1 什么是自动化测试 2 自动化测试分类 1 单元测试 2 接口自动化测试
  • 经验:数据库中性别、状态、字典使用什么字段?

    结论 使用char类型 长度为1 0表示女 1表示男 char类型可以在java中转换成String 方便前端进行判断转换 而且方便在Java代码中进行转换 比如excel导出时使用 如 gender gender equals 1 男 女
  • 纯前端--原生js将html页面变成pdf文件(html2canvas+jsPDF)

    一 html2canvas 将dom变成图片 下载或者安装html2canvas 官网 1 将文档放在本地 用原生js进行引用和使用 新建一个名为 html2canvas min js 的文件 并且将线上的内容进行复制 引入 js 文件 j
  • java+ssm汽车维修管理系统

    项目介绍 java ssm汽车维修管理系统 java ssm汽车维修管理系统 技术和环境 技术 ssm html jq 环境 jdk1 7 mysql5 7 tomcat8 x idea eclipse 数据库表的数量 7张 是否为mave
  • element-ui实现多级checkbox关联选择(权限管理)

    1 依赖element ui 只是使用了el checkbox 可以很轻松替换掉 效果图
  • 告诉你外汇交易中心最有可能掉入的九个坑

    一 外汇真能赚钱吗 预期目标多少才算合理 玩外汇的人越来越多 大部分人都是奔着暴利去的 但是现实很残酷 这个市场95 的人都是亏钱的 努力多年都不一定能赚多钱 所以想入坑的人 如果没有足够的经济支撑 不要参与这个残酷的游戏 外汇的难度大于期
  • SQL语句中的条件查询

    条件查询 什么是条件查询 不是将表中所有数据都查出来 而是查询出符合条件的 语法格式 select 字段1 字段2 from 表名 where 条件 具体条件有 lt lt gt gt 或 lt gt between and is null
  • NetCDF文件概要与读写

    NetCDF简介 NetCDF network Common Data Format 即网络通用数据格式 最早是由美国国家科学委员会资助之计划 Unidata 所发展 其用意是在Unidata计划中不同的应用项目下 提供一种可以通用的数据存
  • python抽学号程序_Python编写编程作业批量自动打分程序的思路与实现

    总体思路 把接口明确地告诉学生 本文后面的代码要求学生程序中必须有个函数叫做searchOnede 然后学生把Python程序文件 学号 姓名 py 以任何方式提交给老师 放到同一文件夹中 下面的代码首先由老师编写一个自己认为的最佳和最优实