前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速了解 OJ 判题系统如何在python中使用?

快速了解 OJ 判题系统如何在python中使用?

作者头像
叶子陪你玩
发布2022-09-26 14:32:52
9920
发布2022-09-26 14:32:52
举报

OJ 简介

Online Judge,翻译成中文,即在线评判系统,简称OJ。简单的说:OJ就是一个网上做编程题的系统,你可以根据人家给的题目编程,提交之后系统会判断你做的对不对。

判题原理

首先提前准备测试数据与答案。然后传入测试数据给提交的代码,如果得到的答案与我们给定的一致,就认为代码正确。

比如下面这题:

如果你直接打印aaabbbccc,肯定是通不过的,后面可能还有很多其它的测试数据:

代码语言:javascript
复制
111
222
333

代码语言:javascript
复制
abc
123
456

其实自己也可以做一个简单的判断系统,比如学生给你提交很多代码作业,你可以自动让程序去判断。

单个学生作业:

判断代码:

更多学生只需要来个批量操作即可。

所以OJ是看结果不看过程的(一般的oj系统都有时间和空间限制的,如果很低效的解决方法,是通不过的。)

Python3如何在OJ获取输入数据

很多人第一次使用OJ系统,还是很不适应的,一直错误,主要是不知道如何获取输入的数据。

输入数据模式常见的有三种。

模式一

本模式适用于固定 n 行,每行一个数据,数据类型无所谓。该模式的典型题目如下图。

如上图所示,一共三行,每行一个字符串。因此,我们可以利用 input() 这个函数来获取输入,基本方法如下:

代码语言:javascript
复制
# 获取三行测试数据
a = input()
b = input()
c = input()

模式二

本模式适用于只有一行输入,在这行输入中有若干个数据,每个数据用空格或者其他字符隔开。如下图所示:

因此,我们可以利用 input() 这个函数来获取输入,然后再使用 split分隔。如下:

代码语言:javascript
复制
>>> a,b,c = map(int, input().split()) # 获取测试数据并处理成数字
3 4 55
>>> print(a,b,c)
3 4 55

模式三

本模式适用于有若干行输入。对于每行多少个数据,我们再分别套用模式一或者模式二即可。如下图所示:

由于第一行是行数,所以可以先将行数记录,然后循环即可。

代码语言:javascript
复制
a = int(input()) # 获取测试数据的行数
l = []
# 循环获取输入的测试数字
for i in range(a):
    b = int(input())
    l.append(b)
print(l)

还有一些系统的题目比较特殊,也是有若干行输入,但是输入数据没有指定几行,由于我们不知道到底有几行,只能通过读到 EOF 的时候确认输入结束。因此我们可以使用死循环读取模式来解决这个问题。如下所示:

代码语言:javascript
复制
while True:
    try:
        x = int(input())
    except:
        break


(全文完)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叶子陪你玩编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OJ 简介
  • 判题原理
  • Python3如何在OJ获取输入数据
    • 模式一
      • 模式二
        • 模式三
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档