ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第14期-数字排列

2022-01-06 17:03:46  阅读:161  来源: 互联网

标签:排列 join 14 函数 permutations 三位数 print total 数字


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}个数")
View Code

第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}个数")
View Code

第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的所有元素合并成一个新的字符串

 

标签:排列,join,14,函数,permutations,三位数,print,total,数字
来源: https://www.cnblogs.com/lg03/p/15771858.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有