# 第14期-数字排列
Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。
# 1 问题描述
四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
# 2 解题思路
- 嵌套for循环使填在百位、十位、个位的数字都是1、2、3、4。
- 组成所有的排列后再去掉不满足条件的排列
- 用print函数输出结果
# 3 解题方法
# 方法一
total = 0
for i in range(1, 5):
for j in range(1, 5):
for k in range(1, 5):
if i != j and j != k and i != k:
print(str(i)+str(j)+str(k), end=' ')
total += 1
print(f"\n共有{total}个数")
2
3
4
5
6
7
8
9
10
第1行: 创建变量total,用于存储1,2,3,4四个数字所组成三位数的个数,初始赋值位0
第3-5行: 用变量 i, j, k 分别表示这个三位数的百位、十位和个位的数字,用3重嵌套for循环分别遍历百位、十位和个位上 1 至 4 的整数
第6行: 因为要组成无重复数字的三位数,所以 i, j, k 两两不相等
第7行: 用print函数打印排列结果,end=' '将结果输出到同一行,以空格结尾
第8行: 每次循环后total在原有的基础上加 1
第10行: 用print函数打印组成三位数的个数,\n换行输出
# 方法二
from itertools import permutations
total = 0
for i in permutations('1234', 3):
print(''.join(i), end=' ')
total += 1
print(f"\n共有{total}个数")
2
3
4
5
6
7
8
9
第1行: 从itertools模块中导入permutations函数
itertools的官方描述:Functional tools for creating and using iterators,即用于创建高效迭代器的函数。
itertools是Python中的内置模块,一般用于创建自定义迭代器
第3行: 创建变量total,用于存储1,2,3,4四个数字所组成三位数的个数,初始赋值位0
第5行: 调用permutations排序函数,排序对象为字符串 '1234' ,指定长度参数为3,用for循环遍历每一个排序
第6行: 由于permutations函数排序后会产生一个元组序列,所以用join函数将元素合并成一个新的字符串,end=' '将结果输出到同一行,以空格结尾
第7行: 每次循环后total在原有的基础上加 1
第9行: 用print函数打印组成三位数的个数,\n换行输出
permutations函数
permutations函数返回可迭代对象的所有排列(顺序有关),排序后会产生一个元组序列
语法:
permutations(item [,r])
item为排序的对象
r为长度参数,用于指定长度的排列中
join()函数
join() 方法是非常重要的字符串方法,用来将列表、集合或元组中包含的多个字符串连接成一个字符串。
**语法: **
'sep'.join(sequence)
参数说明:
sep:分隔符。可以为空
sequence:要连接的元素序列
上面语法的意思是:以sep作为分隔符,将sequence的所有元素合并成一个新的字符串
# 4 视频解析
高清视频讲解,请查看AI大学堂Python基础实战100例 (opens new window)
关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码