本文和你一起探索Python编程经典案例,让你沉浸式学习Python。
你可以拿着题目先思考,然后再对照本文解题方法进行比较。有不同的见解欢迎到公众号中跟我一起探讨。
本文目录
一、经典案例【考题】
问题:1到ipt_num(≥3)能组成多少个互不相同且不重复的三位数字数组?
输入:
3
输出:
1 到 3 能组成 6 种互不相同且不重复的三位数
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
二、经典案例解题方法
上述案例解题思路为:
step1:应用三层for循环列举出1到ipt_num之间所有可能的数。
step2:如果三个数互不相同则添加到结果列表中。
具体代码如下:
def ord_pl(ipt_num):
num = ipt_num + 1
all_num = list()
for i in range(1, num):
for j in range(1, num):
for k in range(1, num):
if i!=j and i!=k and j!=k:
all_num.append([i, j, k])
print(1, '到', ipt_num, '能组成', len(all_num), '种互不相同且不重复的三位数')
return all_num
ord_pl(4)
for i in range(1, num):生成一个从1到ipt_num步长为1的等差数列。
i!=j and i!=k and j!=k:判读i、j、k是否互不相同,若不同则返回True,否则返回False。
得到结果:
1 到 4 能组成 24 种互不相同且不重复的三位数
[[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]]
可以手动验证结果是对的。该方法的优点是逻辑简单,理解起来比较清晰。
至此,Python中的编程经典案例【考题】排列组合已讲解完毕。