最近在学习python3,其中有个例子,自动产生随机数,灵机一动改了一下代码,可以自动生成任意行数、列数、最大数、最小数。这个程序就可以自动产生类似双色球前6个数字。最近又听说双色球中出了亿元大奖,如果人有足够的钱,买足够多的号,你觉得可以买多少柱才能中奖呢?不防我们做个实验。用这个小脚本生成如1000万行的数字,然后把每行数字与双色球前6个去对比,你觉得会中嘛?
以下是 lottery.py文件代码:
2Ek Ag0{ CANP2@^0#!/usr/bin/env python3
import random51Testing软件测试网Hc[0O$TF
import sys
def get_int(msg,minimum,default):51Testing软件测试网t+C"dg#@f1P
while True:
SD:B,ozVHqV&R0 try:51Testing软件测试网IfM9ZC
line=input(msg)51Testing软件测试网 Bf+l0R f9rl
if not line and default is not None:
neP5D)G0 return default
@3Cg$ZB&PX%_0 i=int(line)
K#uo
a6}.V:TVA2h0 if i<minimum:
^-l2eHZ+W0 print("must be >=",minimum)
7eg\%`8G:G|7[E'm0 else:51Testing软件测试网-y$]$GrS }\yE I:y
return i51Testing软件测试网l
{:o,|NpAG P
except ValueError as err:51Testing软件测试网!_p"N[!JPU
print(err)
QwA|#[0rows=get_int("rows:",1,None)51Testing软件测试网9B%bU)r;Ru
l
columns=get_int("columns:",1,None)
Gt%F4ZN(~z^
|0minimum=get_int("minimum (or Enter for 0):",-100000,0)51Testing软件测试网BG(cR1M-Rj+j
print("minimum =",minimum)
default=1000
\z
Hf,Tfd0if default<minimum:
(\HKtA8n(F0 default=2*minimum
"G-c\(l],z^0maximum=get_int("maximum (or enter for "+str(default)+"):",minimum,default)
print("rows=",rows," columns=",columns," maximum=",maximum)
pP
Nc!p0row=0
EU!@.r0N0while row<rows:
/FDez`&_;V!S0 line=""51Testing软件测试网:R:A0I]x-o5y$Z*E4^
column=051Testing软件测试网K!kE [8{x9|w
result=[]
i;H&}#qtX$E'G8c"d0 while column<columns:
(DtxM!j)Be0 i=random.randint(minimum,maximum)
G"P0o CG3o0 result.append(i)
9lD1eMEM$Q
Is0 column+=1
1eW o*P+ch0 result.sort()
F2`v9G7j*]0 index=051Testing软件测试网 NnEZ;\!k'P*eH;D
while index<columns:
}f*i6x(d#N-@E0 s=str(result[index])51Testing软件测试网1m"e*o!dWA%M
while len(s)<4:51Testing软件测试网Ik!@
Vw
Z9W
s=" "+s51Testing软件测试网 W0}3~4l6G&h;h
line+=s
Z$I({|
@q+Fx2Q0 index+=1
EP!t4`ni4U0 print(line)
1Xx~2r5_t0 row+=1
"_J%vO)`s0
例如代码没有去掉重复的数字,以及没有双色球第7位数字(1-16),如有兴趣的朋友可以再修改一下代码。不过试验的结果是,即使有1000万行数据,匹配5个数以上的一行数据都没有,哈哈。朋友,你还会买双色球嘛?下面是自动生成100行执行过程图