听说做练习是掌握一门编程语言的最佳途径,那就争取先做满100道题吧。

----------------------------------------------------------------------

【Python练习题 001】有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

这题还算比较简单,思路是:先确定百位数、然后是十位数、个位数。1-4 四个数字循环一遍,就都全出来了。

res = []
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
res.append(i*100+j*10+k)
print(res)

如果不放心结果是否有重复,最后一行可以改成 print(set(res)),把 res 的类型由列表改为集合(set)。因为集合不允许有重复值,所以就可以保证结果的不重复性了。

【2016-10-12 更新 】-------------------------------------------------------------------------

受教于 backinfile 在评论中的说明,尝试了 itertools.product() 这种新方法,可以方便地生成任意多个集合的笛卡尔积:

所谓“笛卡尔积”,大致就是指 2 个(或多个)集合所有元素排列组合的所有可能。

用于本道题的话,只要生成 3 个 [1, 2, 3, 4] 数列的笛卡尔积,再分别安放到百位、十位、个位,就可以了。即:

import itertools
res = itertools.product(range(1,5),3)
print([x[0]*100 + x[1]*10 + x[2] for x in set(res)], end = ', ')

运行结果如下:

[434, 422, 441, 132, 144, 224, 131, 432, 331, 341, 142, 433, 241, 342, 143, 231, 333, 343, 232, 431, 332, 243, 141, 233, 242, 314, 322, 414, 334, 313, 323, 244, 312, 121, 311, 321, 122, 214, 123, 411, 124, 212, 424, 111, 223, 324, 213, 412, 222, 413, 113, 221, 211, 421, 112, 444, 344, 443, 134, 234, 423, 114, 133, 442]

【2016-10-13 更新】-------------------------------------------------------------------------

 从运行结果可以发现,像“434”、“422”、“441”这些数字并不符合“无重复数字”的要求。感谢 codegay 的提示,查了下 官方文档,发现其实应该用 itertools.permutations() 生成无重复的所有排列可能:

因此,修改本题代码如下:

import itertools
res = []
[res.append(i[0]*100 + i[1]*10 + i[2]) for i in itertools.permutations(range(1,5),3)]
print(res, end = ',')

输出结果如下:

[123, 124, 132, 134, 142, 143, 213, 214, 231, 234, 241, 243, 312, 314, 321, 324, 341, 342, 412, 413, 421, 423, 431, 432]

这下子就不会有重复数字了。太好了!

++++++++++++++++++++++++++++++++++++++++++++++

题目出处:编程语言入门经典100例【Python版】

Python练习题 001:4个数字求不重复的3位数的更多相关文章

  1. Python3练习题 001:4个数字求不重复的3位数

    #Python练习题 001:4个数字求不重复的3位数#方法一import itertoolsres = [][res.append(i[0]*100 + i[1]*10 + i[2]) for i ...

  2. JAVA 基础编程练习题11 【程序 11 求不重复数字】

    11 [程序 11 求不重复数字] 题目:有 1.2.3.4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数字都是 1.2.3.4.组成所有的排列后 ...

  3. Python练习题 021:递归方法求阶乘

    [Python练习题 021] 利用递归方法求5!. ---------------------------------------------- 首先得弄清楚:5! 指的是"5的阶乘&qu ...

  4. Python练习题 028:求3*3矩阵对角线数字之和

    [Python练习题 028] 求一个3*3矩阵对角线元素之和 ----------------------------------------------------- 这题解倒是解出来了,但总觉得 ...

  5. Python练习题 024:求位数及逆序打印

    [Python练习题 024] 给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. ---------------------------------------------- ...

  6. Python练习题 027:对10个数字进行排序

    [Python练习题 027] 对10个数字进行排序 --------------------------------------------- 这题没什么好说的,用 str.split(' ') 获 ...

  7. Python练习题 026:求100以内的素数

    [Python练习题 026] 求100以内的素数. ------------------------------------------------- 奇怪,求解素数的题,之前不是做过了吗?难道是想 ...

  8. Python练习题 019:求分数序列之和

    [Python练习题 019] 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和. --------------------------------- ...

  9. Python练习题 005:三个数字由大到小排序输出

    [Python练习题 005]输入三个整数x,y,z,请把这三个数由小到大输出. ----------------------------------------------------------- ...

随机推荐

  1. 需要分析竞争对手的网站哪些SEO数据

    http://www.wocaoseo.com/thread-10-1-1.html        怎样分析竞争对手的网站?在做网站的前我们会对同行的竞争对手进行研究和分析,对判定同行的关键词竞争程度 ...

  2. git最基础常用操作

    单人开发托管够用 未列出的用到一个补一个

  3. AQI分析

    A Q I  分 析 1.背景信息 AOI( Air Quality Index),指空气质量指数,用来衡量空气清洁或污染的程度.值越小,表示空气质量越好.近年来,因为环境问题,空气质量也越来越受到人 ...

  4. 跳转语句 break 和 continue

    break跳出循环体,结束本次循环. continue结束本次循环. for(var i=0; i<5; i++){ if(i == 3) break; document.write(" ...

  5. 替换unimrcp的VAD模块

    摘要: unimrcp vad 模块voice activity dector一直认为比较粗暴,而且unimrcp的社区也很久没有更新了.使用原始unimrcp如果只是用来做Demo演示,通过手动调整 ...

  6. Python采集CSDN博客排行榜数据

    文章目录 前言 网络爬虫 搜索引擎 爬虫应用 谨防违法 爬虫实战 网页分析 编写代码 运行效果 反爬技术 前言 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知 ...

  7. 利用 Python 写个七夕表白神器

    今天是七夕节,相比于现代人自创的 502,不对是 520,七夕才是中国传统意义上的情人节,本文分享几个 Python 表白程序,情侣可以现学现用,单身的话也可以先收藏一下,说不定下次就用上了. 很多人 ...

  8. 记录Unity的优化tip(不断更新)

    大概记录遇到的可以优化的点.1.Mesh.UploadMeshData:预先把网格送到GPU unity是这样的,它对一个网格,先把它搞到内存,然后在第一次渲染它时把它送到GPU.但送GPU经常是个瓶 ...

  9. [源码解析] Flink的Slot究竟是什么?(2)

    [源码解析] Flink 的slot究竟是什么?(2) 目录 [源码解析] Flink 的slot究竟是什么?(2) 0x00 摘要 0x01 前文回顾 0x02 注册/更新Slot 2.1 Task ...

  10. django学习(三)

    1.单表操作和测试环境的准备 我们先对单表查询做一个总结和回顾,并进行进一步的学习和交流.我们在我们的应用的models.py文件下面书写user类.如下所示,然后用数据库迁移,在mysql数据库中生 ...