随机分数生成即csv文件
2015-09-16 10:26
716 查看
最近有一项工作只注重总体分数,但是要求小项也要有分数。共有100分,5个小项,每个小项20分。比如,如果总分是91分的话,那么需要随机生成5个20分以内的数字,它们的和为91分,同时,为了使分数的方差不太大,规定每个分数至少为15分。
先看一下最终的结果如何吧:
先创建一个Excel表格,里面保证第一列是已经评好的分数:
(这里使用函数RANDBETWEEN模拟了)
然后再将文件保存为csv格式:
接着将这个文件拖到Python文件上:
然后再打开文件之后就是想要的结果啦!
为了方便处理,使用csv文件,即逗号分隔文件。这种文件中,每一行的各个数据以逗号分隔,第一行对于就数据的一行。虽然Python中有专门的csv模块,但是由于此问题比较简单,就直接手工操作了。
现在看一下源代码……其实很简单啦:
代码在Python2即Python3中均测试通过。
先看一下最终的结果如何吧:
先创建一个Excel表格,里面保证第一列是已经评好的分数:
(这里使用函数RANDBETWEEN模拟了)
然后再将文件保存为csv格式:
接着将这个文件拖到Python文件上:
然后再打开文件之后就是想要的结果啦!
为了方便处理,使用csv文件,即逗号分隔文件。这种文件中,每一行的各个数据以逗号分隔,第一行对于就数据的一行。虽然Python中有专门的csv模块,但是由于此问题比较简单,就直接手工操作了。
现在看一下源代码……其实很简单啦:
#!/usr/bin/python #coding=utf8 from random import randint from sys import argv cols = 5 def getScore(score): if score < 15 * cols: return [0] * cols scs = [20] * cols while sum(scs) > score: index = randint(0, cols - 1) if scs[index] <= 15: continue scs[index] -= 1 return scs scores = [] with open(argv[1], "r") as sf: for line in sf: scores.append(int(line)) sf.close() with open(argv[1], "w") as sf: for score in scores: sf.write("%d,"%score) sf.write("%s\n"%(str(getScore(score)).strip('[]'))) sf.close()
代码在Python2即Python3中均测试通过。
相关文章推荐
- Linux用户、用户组、文件权限设置
- Java泛型类定义,与泛型方法的定义使用
- 2.4
- 循环HashMap的两种方法和这两种方法效率比较
- UISearchBar 和 UISearchDisplayController
- ViewPager中fragment互相传值和原始的fragment传值区别
- Android IOS WebRTC 音视频开发总结(四二)-- webrtc开发者大会
- Paying for upgrades, by Bob Arnson
- [转]史上最全的CSS hack方式一览
- 使用Nginx+uWSGI+Django方法部署Django程序
- android 6.0新功能
- django中使用jquery ajax post数据出现403错误的解决办法(两种方法)
- 【投稿】CocoaPods的一些略为高级一丁点的使用
- tableView和gesture手势冲突(响应链问题)
- Java Deferred/Promise 库JDeferred 实例
- 【笔记】1.Jquery获取单选/复选的值
- 排序(一) 选择排序算法
- [Mysql] "Too many connections"
- 什么是Modbus
- NewRelicAgent(CustomAnalyticEvent.cxx.o), building for iOS simulator, but linking in object file built for OSX, for architecture x8(botched)