IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    ACM中随机数据生成脚本

    键盘上的舞者发表于 2015-10-03 17:52:18
    love 0

    用Python写了一个给ACM题目中生成随机测试数据的脚本,可能作用不是那么大,用得着的时候就用用咯。

    #coding=utf-8
    import sys
    import random
    print u'--------------------------------------------------------------'
    print u'                ACM随机测试数据生成脚本           '
    print u'                 by--键盘上的舞者                 '
    print u'                 blog--www.lrd.name               '
    print u'                  1.随机整数                      '
    print u'                  2.随机浮点数                    '
    print u'                  3.随机大数                      '
    print u'                  4.随机小写英文字母              '
    print u'                  5.随机大写英文字母              '
    print u'                  6.随机大小写英文字母            '
    print u'                  7.自定义随机字符                '
    print u'--------------------------------------------------------------'
    print u'          由于ACM的输入数据格式众多,本脚本无法全部涵盖       '
    print u'       使用过程中如果无法满足要求,请根据源码进行相应的修改   '
    print u'	   生成成功之后,默认保存在同目录下的test.in文件里面      '
    print u'--------------------------------------------------------------'
    
    #生成整数
    def func_int():
    	print u'最小值',
    	min=int(raw_input())
    	print u'最大值',
    	max=int(raw_input())
    	print u'每组数据有多少行:',
    	hang=int(raw_input())
    	print u'每行数据有多少列:',
    	lie=int(raw_input())
    	f=file("test.in","w+")
    	f.write(str(hang)+" "+str(lie)+"\n")	
    	for i in range(hang):
    		for j in range(lie):
    			f.write(str(random.randint(min,max))+" ")
    		f.write("\n")
    	f.close()
    	print u'已经写入到文件中!'
    
    #生成浮点数
    def func_float():
    	print u'最小值',
    	min=int(raw_input())
    	print u'最大值',
    	max=int(raw_input())
    	print u'每组数据有多少行:',
    	hang=int(raw_input())
    	print u'每行数据有多少列:',
    	lie=int(raw_input())
    	f=file("test.in","w+")
    	f.write(str(hang)+" "+str(lie)+"\n")	
    	for i in range(hang):
    		for j in range(lie):
    			#%.xf就是保留多少位小数
    			f.write(str("%.2f"%random.uniform(min,max))+" ")
    		f.write("\n")
    	f.close()
    	print u'已经写入到文件中!'
    
    #生成大数
    def big_int():
    	print u'每组数据有多少行:',
    	hang=int(raw_input())
    	print u'每行数据有多少列:',
    	lie=int(raw_input())
    	f=file("test.in","w+")
    	f.write(str(hang)+" "+str(lie)+"\n")	
    	for i in range(hang):
    		for j in range(lie):
    			for k in range(random.randint(10,19)):
    				if k==0:
    					f.write(chr(random.randint(49,57)))
    				else:
    					f.write(chr(random.randint(48,57)))		
    			f.write(" ")
    		f.write("\n")
    	f.close()
    	print u'已经写入到文件中!'
    
    #生成小写字母
    def func_low():
    	print u'每组数据有多少行:',
    	hang=int(raw_input())
    	print u'每行数据有多少列:',
    	lie=int(raw_input())
    	f=file("test.in","w+")
    	f.write(str(hang)+" "+str(lie)+"\n")	
    	for i in range(hang):
    		for j in range(lie):
    			for k in range(random.randint(3,10)):
    				#ascii码
    				f.write(chr(random.randint(97,122)))
    			f.write(" ")
    		f.write("\n")
    	f.close()
    	print u'已经写入到文件中!'
    
    #生成大写字母
    def func_upper():
    	print u'每组数据有多少行:',
    	hang=int(raw_input())
    	print u'每行数据有多少列:',
    	lie=int(raw_input())
    	f=file("test.in","w+")
    	f.write(str(hang)+" "+str(lie)+"\n")	
    	for i in range(hang):
    		for j in range(lie):
    			#这里的3和10是字符串的范围,随机生成一个3到10之间的随机数,表示字符串的长度
    			for k in range(random.randint(3,10)):
    				#ascii码
    				f.write(chr(random.randint(65,90)))
    			f.write(" ")
    		f.write("\n")
    	f.close()
    	print u'已经写入到文件中!'
    
    #生成大小写混搭
    def func_mix():
    	print u'每组数据有多少行:',
    	hang=int(raw_input())
    	print u'每行数据有多少列:',
    	lie=int(raw_input())
    	f=file("test.in","w+")
    	f.write(str(hang)+" "+str(lie)+"\n")	
    	for i in range(hang):
    		for j in range(lie):
    			for k in range(random.randint(3,10)):
    				tmp=random.randint(1,2)
    				if tmp==1:
    					f.write(chr(random.randint(65,90)))
    				else:
    					f.write(chr(random.randint(97,122)))	
    			f.write(" ")
    		f.write("\n")
    	f.close()
    	print u'已经写入到文件中!'
    
    #生成自定义字符
    def func_diy():
    	print u'每组数据有多少行:',
    	hang=int(raw_input())
    	print u'每行数据有多少列:',
    	lie=int(raw_input())
    	f=file("test.in","w+")
    	list=[]
    	print u'输入你要自定义的字符个数:',
    	num=int(raw_input())
    	for k in range(num):
    		print u"第%d个自定的字符:"%(k+1),
    		c=raw_input()
    		list.append(c)
    	slice=[]
    	for i in range(hang):
    		for j in range(lie):
    			for k in range(random.randint(3,10)):
    				slice.extend(random.sample(list,1))
    			for x in range(len(slice)):
    				f.write(str(slice[x]))
    			f.write(" ")
    			slice=[]
    		f.write("\n")
    	f.close()
    	print u'已经写入到文件中!'
    
    operator={'1':func_int,'2':func_float,'3':big_int ,'4':func_low,'5':func_upper,'6':func_mix,'7':func_diy}
    
    def f(choice):
    	operator.get(choice)()
    print u'请选择一项功能:',
    choice=raw_input()
    f(choice)

     



沪ICP备19023445号-2号
友情链接