一、题目
现在要求使用1,2,3,4这四个数字组合成一个三位数字,要求这个三位数个位、十位和百位上的数字不能出现相同的数字。
二、题目分析
其实这个问题在数学上很好解决,也就是阶乘:4 * 3 * 2 * 1 = 24就算出来了,24中不同的组合方式,但是要通过代码把它表述出来就有点抽象了,下面我们来分析一下。
类似于这样的操作明显是不断的循环,循环出所有的可能性之后把满足“个位、十位和百位上的数字不能出现相同数字”这个条件的三位数给拿出来就可以了。那么我们就用下面的代码给大家展示一下。
三、解答
解答方式1:
total = 0 # 先定义一个变量来统计后面满足条件的数字个数
for a in range(1, 5): # 先把百位数字的所有可能性循环出来,注意这里的range的半闭半开区间
for b in range(1, 5): # 先把十位数字的所有可能性循环出来
for c in range(1, 5): # 先把个位数字的所有可能性循环出来
if ((a!=b) and (b!=c) and (c!=a)): # 通过题目给出的条件进行不等于筛选
print(a, b, c) # 打印这三个数字
total += 1 # 统计符合条件的数字个数
print(total) # 一共多少个
解答方式2:
import itertools # 导入itertools模块
total = 0 # 定义一个变量来统计后面满足条件的数字个数
a = [1, 2, 3, 4] # 把四个数字放入列表中
for i in itertools.permutations(a, 3): # 通过itertools里面的方法permutations来处理我们想要的结果
print(i)
total += 1
print(total)