题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列(个人理解:想要几位数的结果,就要有几个for循环,每个循环来控制1位数)
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
#print(i,j,k)
if i != j and i != k and j != k:
print(i,j,k)
步骤解析:在第三个for循环内可以先输出一下,运行:
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
print(i,j,k)
是如下结果:
1 1 1
1 1 2
1 1 3
1 1 4
1 2 1
1 2 2
1 2 3
1 2 3
1 2 4
1 2 4
...
4 4 2
4 4 3
4 4 4
题目要求不能重复,比如不能有:111、444这种,所以要判断这三个数是不是完全相同,并且是在循环内判断,然后再次输出
if i != j and i != k and j != k:
print(i,j,k)
将结果保存到列表中,并输出个数,需要定义一个list = [],使用len统计个数
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
print(i,j,k)
if i != j and i != k and j != k:
#print(i,j,k)
a= 100 *i + 10 * j + k
list.append(a)
print("答案列表:",list)
print("列表中元素个数:" ,len(list))
原题目及答案来自于鱼C:
https://fishc.com.cn/forum.php?mod=viewthread&tid=84666&highlight=%C3%BF%C8%D5%D2%BB%CC%E2