有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
先上源代码
count = 0 for a in range(1, 5): for b in range(1, 5): for c in range(1, 5): if (a != b) and (b != c) and (a != c): print(100*a+10*b+c) count += 1 print(f'一共有{count}种')
解析
一共是3位数那就3个循环,每一位只有1-4所以循环(1-4)【注:range(1, 5)是指循环1-4,不包含5】
然后进行判定三次循环的值不能够重复
对得到的数据进行处理就得到了我们想要的数值及个数。
方法二
使用迭代器函数
itertools — 为高效循环而创建迭代器的函数
根据题目要求我们可以使用itertools.permutations
上源码
import itertools count = 0 a = [1, 2, 3, 4] for i in itertools.permutations(a, 3): print(i[0]*100+i[1]*10+i[2]) count += 1 print(f'一共有{count}种')
返回的i是以元组的形式,对元组进行处理即可得到有关的结果。