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

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

#!/usr/bin/python

# -*- coding: UTF-8 -*-

#Author : Wumi

#题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

#程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

# 如果四个数字中有个零 ,难度就稍微增加了

num =[] # list

for 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'])

11

set(['1', '2'])

12

set(['1', '3'])

13

set(['1', '2'])

21

set(['2'])

22

set(['3', '2'])

23

set(['1', '3'])

31

set(['3', '2'])

32

set(['3'])

33

"""

你可能感兴趣的:(python有四个数字)