各位大神,最近刚开始学python,感觉挺好用的,然后看到网上有家公司要求用php制作一个小程序,就用python做了一个,要求是让一个门上打几个孔,然后根据一条相距为32的倍数的规则,判断是用多把刀钻孔还是一把刀钻孔。里面有什么不规范的、错的地方请指点一下,小弟统统虚心接收:) ============================================================== # coding=gbk print "WELCOME" w = raw_input("Input the number:")
N={} for i in range(0,int(w)): print "NO %s"%(i+1) L= raw_input("Input the L:") X= raw_input("Input the X:") Y= raw_input("Input the Y:") N[i]=[L,X,Y]
for j in range(len(N)-1,0,-1): for u in range(0,j): c = int(N[u+1][1])-int(N[u][1]) if c < 0: b = N[u] N[u] = N[u+1] N[u+1] = b for k in range(len(N)-1,0,-1): for l in range(0,k): if int(N[u+1][1]) == int(N[u][1]): v = int(N[u+1][2])-int(N[u][2]) if v < 0: b = N[u] N[u] = N[u+1] N[u+1] = b O = N print "The Old O is : %s"%O
while O<>{}: A={} A[0]=O[0] m=0 for z in range(1,len(O)): Xsame = True Ysame = True CHA = 0 g=1 PAN = ((A[0][1]==O[z][1]) and (A[0][2]==O[z][2])) or ((A[0][1] <> O[z][1]) and (A[0][2] <> O[z][2])) XCHA=abs(int(A[0][1])-int(O[z][1])) YCHA=abs(int(A[0][2])-int(O[z][2])) cha=((XCHA==0) and (((YCHA%32)<>0) or ((YCHA//32) > 4))) or ((YCHA==0) and (((XCHA%32)<>0) or ((XCHA//32) > 4))) Pan=(PAN or cha) if Pan == True: "" elif A[0][1] == O[z][1]: Xsame = True Ysame = False CHA0 = abs(int(A[0][2])-int(O[z][2])) if ((CHA0%32==0) and ((CHA0//32) <= 4)): if z==1: A[z]=O[z] O[z]=[0,1,2] m=m+1 elif m<>0: pan=(((A[1][1]==O[z][1]) and (A[1][2]==O[z][2])) or ((A[1][1] <> O[z][1]) and (A[1][2] <> O[z][2]))) if pan==False: A[z]=O[z] O[z]=[0,1,2] else: "" break else: A[z]=O[z] O[z]=[0,1,2] else: "" elif A[0][2] == O[z][2]: Xsame = False Ysame = True CHA0 = abs(int(A[0][1])-int(O[z][1])) if ((CHA0%32==0) and ((CHA0//32) <= 4)): if z==1: A[z]=O[z] O[z]=[0,1,2] m=m+1 elif m<>0: pan=((A[1][1]==O[z][1]) and (A[1][2]==O[z][2])) or ((A[1][1] <> O[z][1]) and (A[1][2] <> O[z][2])) if pan==False: A[z]=O[z] O[z]=[0,1,2] else: print A CHA1 = abs(int(A[1][2])-int(A[0][2])) if (CHA0//32)<(CHA1//32): P={} K={} f=len(O) for s in range(1,len(A.values())): O[s+f-1]=A.values()[s]
P[0]=A[0] P[1]=O[z] O[z]=[0,1,2] A=P g=0
for e in range(1,len(O)): K[e-1]=O[e]
O=K
for j in range(len(O)-1,0,-1): for u in range(0,j): c = int(O[u+1][1])-int(O[u][1]) if c < 0: b = O[u] O[u] = O[u+1] O[u+1] = b for k in range(len(O)-1,0,-1): for l in range(0,k): if int(O[u+1][1]) == int(O[u][1]): v = int(O[u+1][2])-int(O[u][2]) if v < 0: b = O[u] O[u] = O[u+1] O[u+1] = b
else: ""
else: A[z]=O[z] O[z]=[0,1,2] else: "" else: "" K=O.values() P={} j=0 i=0 for z in range(0,len(K)-1): d = (K[z+1]==[0,1,2]) if d==True: j=j+z else: P[i]=K[z+1] i=i+1 K[z+1]=[0,1,2] K=P O=K print "刀规格 :[直径,X坐标,Y坐标] : %s"%(A.values())