题目 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
-------------------------------------------以下是代码-----------------------------------------
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
File Name: python练习100——【001】数字组合
Description : python practice
Author : zhangzx
date: 2020-12-01
-------------------------------------------------
Change Activity:
2020-02-19
-------------------------------------------------
"""
# 解法一:C++思维,遍历,剔除不满足的
copy_1 = []
total_0 = 0
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 :
total_0 +=1
result_1 = i*100+j*10+k
copy_1.append(result_1)
print("总的有:"+ str(total_0) + " 个。")
print ('它们分别是:\n' + str (copy_1)+'\n')
# 解法二:遍历,只要满足的
copy = []
for i in range(1, 5):
for j in range(1, 5):
if i == j:
continue
for k in range(1, 5):
if i == k or j == k:
continue
result = i * 100 + j * 10 + k
copy.append(result)
print ("总的有:" + str(len(copy)) + '个')
print ('它们分别是:\n' + str (copy)+'\n')
# 解法三:Python思维
import itertools
total_1 = 0
a = [1, 2, 3, 4]
for i in itertools.permutations(a, 3):
total_1 += 1
print(i)
print("总的有:"+ str(total_1) + " 个。")
-----------------------------------------以下是输出-----------------------------------------
总的有:24 个。
它们分别是:
[123, 124, 132, 134, 142, 143, 213, 214, 231, 234, 241, 243, 312, 314, 321, 324, 341, 342, 412, 413, 421, 423, 431, 432]
总的有:24个
它们分别是:
[123, 124, 132, 134, 142, 143, 213, 214, 231, 234, 241, 243, 312, 314, 321, 324, 341, 342, 412, 413, 421, 423, 431, 432]
(1, 2, 3)
(1, 2, 4)
(1, 3, 2)
(1, 3, 4)
(1, 4, 2)
(1, 4, 3)
(2, 1, 3)
(2, 1, 4)
(2, 3, 1)
(2, 3, 4)
(2, 4, 1)
(2, 4, 3)
(3, 1, 2)
(3, 1, 4)
(3, 2, 1)
(3, 2, 4)
(3, 4, 1)
(3, 4, 2)
(4, 1, 2)
(4, 1, 3)
(4, 2, 1)
(4, 2, 3)
(4, 3, 1)
(4, 3, 2)
总的有:24 个。