Python 造数据,对拍利器

来源:互联网 发布:免流软件 编辑:程序博客网 时间:2024/05/22 03:22

0.简介:

在Python环境下,利用random,或洛谷研发的Cyaron都是不错的选择。

如果要使用Cyaron 请参见

Git-hub luogu-dev/cyaron

1.环境配置:

安装Python3及以上版本,在安装时选择自定义,勾选自动设置环境变量选项。当然能自己搞%%%

安装完成后打开命令提示符,输入python,如果进入Python环境就成功啦!!!

2.引入包:

想要使用random或cyaron,需要在程序开始引入包,类似于C++的头文件。

import randomfrom cyaron import *

如果你是第一次使用,需要安装cyaron。打开命令提示符输入以下命令即可。

pip install cyaron

3.格式化创建输入输出文件

fout = open("brick.in","w")fout.close()

创建brick.in

for i in range(1,11):        fout = open("test%d.in"%i,"w")fout.close()#py的range返回值是左闭右开的

创建test1.in~test10.in

4.输出

屏幕输出

for i in range(1,6):        for j in range(1,6):                print("%d %d\n"%(i,j))

py的%d,\n等用法类似C++
注意后半部分用%分割
样例输出

1 11 21 31 41 52 12 22 32 42 53 13 23 3

文件输出

接上一次的代码,向test1.in~test10.in中写入

for i in range(1,11):        fout = open("test%d.in"%i,"w")        fout.write("%d "%i)        #fout.write的用法与print类似fout.close()

5.生成数据

random

import randomfout = open("brick.in","w")t = random.randint(1, 10)fout.write("%d\n"%t)for i in range(1,t+1):        n = random.randint(1, 100)        fout.write("%d\n"%n)        for j in range(1,n+1):                for k in range(1,n+1):                        p=random.randint(1,2)                        if p==1:                                fout.write(".")                        if p==2:                                fout.write("#")                fout.write("\n")fout.close()

random有random.randint(l,r)函数,返回[l,r]之间的Int值。

样例输出:

523#.#.....####..######.#..#..#.##.##.##...##..#.####.###...##...#.#..#..#####.#......##...##.#...###.####.#.##....###.###.#.#.##.#..#...##..#..####..#.###......####..#.##..##.#.##.#..#.#####.##.##.##..#......##....#.#....##.#.##.###...####...#.#.....#.#####.#.#...###..#.#...####.###..##..#.##.######.##..#.#..##....##.....#.#.#.##.#.###..#.##...#.#..###.#.###..#..##.#.#..#.....##..###..#..#..#.#..######..##.#.######..##.#...###.#.##.#.###....##.....#...##...#..#...#.##.###.......##...#..#.##.###.###..##.#.#....#####..#.####.#.25#..#.#.#####.##..##..#.##..#.#..##.#.#.#.#..###..#####..#.###.#####.#...##.###....#...#..##.#..##.#.#..##.##..#..##..####...#.#....#......##..#.#.###.#...##.##.....#..##.##....##..######.#.#..#####..###.....#####.####.###..#..####...##...#.#.###.##..####.#..####..#.##...#.#.###..##....##..###.#.#.###......#.######.#..#...####.#.####..##.#.#.#..#.##..###.##.####.####..#..##.####.#####..#..#.#.#.....#.#.###.#.##.#..#####..##.#...#.####.####.#..#.####..##...#.###.#...#.##.####..##..##.####..##..###.#.####.#..####....#####.##......###...##.##.#.##.###.#.#..#.##...###.##.#.#..#.##.#...##.#.#...#...###..##....#....####..##.

数据太多不完全展示

6.对拍

对拍需要系统包

import os

OS命令用法与c++的system命令类似,都是引用系统命令提示符的命令

import oswhile True:        os.system("a.exe")        os.system("b.exe")        os.system("fc a.out b.out")

当然你也可以用C++

#include <cstdlib>using namespace std;int main(){    while (1){        system"python mkdt.py");        system("a.exe");        system("b.exe");        system("fc a.out b.out");    }    return 0;}

对于不需要写文件输入输出的对拍Cyaron有更好的解决方案。它有自带的对拍函数可以引用。

7.Summary

当然了,上面的操作都是要设置好Python的环境变量的。

如果你对Python的基本语法还有不理解的地方,请参考luogu Python入门指南

原创粉丝点击