python练习100【001】:数字组合

题目 有四个数字: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 个。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值