Python 案例001 (有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数)

来源:互联网 发布:图片上传java 编辑:程序博客网 时间:2024/05/28 04:53

题目内容来自网络 ,加入了个人理解的过程 ,和点评


#!/usr/bin/python# -*- coding: UTF-8 -*-#Author : Wumi#题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?#程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。# 如果四个数字中有个零  ,难度就稍微增加了num =[] # listfor i in range(1,5): # range 的高位是不包括在内的    for j in range(1,5):        for k in range(1,5):            if i!=j and i != k and  j!=k :                print i,j,k                print k,j,i # reverse num                num.append([i,j,k])print "how many num we have of the permutation and combination :",len(num)   # 24# big tall up#将for循环和if语句综合成一句,直接打印出结果lists =[ (i*100+10*j+k) for i in range(1,5) for j in range(1,5) for k in range(1,5) if ( i!=j and i !=k and j!=k )]print len(lists)print len(lists),":",lists# use set function to remove the duplicate numbers    ,set 是没有重复数据的# one important tips is that the alphabet can uses join function +alphabetList = ['1','2','3','4']numberList = [ int(i+j+k) for i in alphabetList for j in alphabetList for k in alphabetList if (len(set(i+j+k)) ==3)]print numberList ,":",len(numberList)# question is why i != k and != j ? 也就是为什么没有重复位 ?? 譬如 111 or 122 等# here is the core reason ::lists =['1','2','3']for i in lists:    for j in lists:        print set(i+j) # add memeber into set using plus +  ---> set(['1', '2'])  ,no replicate data        print int(i+j)"""set(['1'])11set(['1', '2'])12set(['1', '3'])13set(['1', '2'])21set(['2'])22set(['3', '2'])23set(['1', '3'])31set(['3', '2'])32set(['3'])33"""


阅读全文
0 0
原创粉丝点击