听说做练习是掌握一门编程语言的最佳途径,那就争取先做满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版】

转载于:https://www.cnblogs.com/iderek/p/5952126.html

Python练习题 001:4个数字求不重复的3位数相关推荐

  1. * 四、要求写一个方法:method。该方法要求传入一个数字n(n要小于10), * 该方法能够计算得到所有各位上的数字不超过n且每一位的数字都不重复的三位数的个数。

    package Day04;/*** 四.要求写一个方法:method.该方法要求传入一个数字n(n要小于10),* 该方法能够计算得到所有各位上的数字不超过n且每一位的数字都不重复的三位数的个数.* ...

  2. python练习题--阿拉伯数字转换成中文数字

    python练习题–阿拉伯数字转换成中文数字 用户输入任意阿拉伯数字,如[123456],把它转换成中文数字[壹拾贰万叁仟肆佰伍拾陆] 以前面试时面试官问的问题,当时没能答出来,今天初步解决,把它记录 ...

  3. Python练习题——第九题:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n

    Python练习题第九题 题目: 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+-+1/n,当输入n为奇数时,调用函数1/1+1/3+-+1/n #2019/12/26/18:16def f ...

  4. Python练习题(4)_吸血鬼数字实现

    1.吸血鬼解释:1994年柯利弗德·皮寇弗在Usenet社群sci.math的文章中首度提出吸血鬼数.后来皮寇弗将吸血鬼数写入他的书Keys to Infinity的第30章. 吸血鬼数字是指位数为偶 ...

  5. RUNOOB python练习题29

    用来练手的python练习题其29,原题链接:python练习实例29 题干 : 给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. 实际这个正整数无论位数,在python3中 ...

  6. 叠数的加法与字符串 RUNOOB python练习题 18

    用来练手的python 练习题其十八,原链接 : python练习实例18 题干: 求s=a+aa+aaa+aaaa+aa-a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共 ...

  7. python练习题(基础篇2)

    本博文源于<程序设计竞赛入门>,旨在对python练习题进行总结: 一.选择题 1.以下属于合法的Python语言用户标识符是( ) A.a.123 B.a_b C.def D.1Max ...

  8. python练习题__列表

    python练习题__列表 (1).访问列表中第一个元素的值 题 目: mlist1 = ['Adversity Awake:', 'Cross ', 'the', 'stars', 'over', ...

  9. python编程输入标准-Python练习题,,T1.编写程序,输入

    Python练习题,,T1.编写程序,输入 T1.编写程序,输入一个自然数字符串,然后输出各位数字之和. a=input("输入一串数字:") b=0 for i in a: b= ...

最新文章

  1. 新能源汽车市场发展趋势
  2. python 笔记 之 类的继承与重写
  3. 计算机设计复合材料,两种复合材料几何建模算法-计算机辅助设计与图形学学报.PDF...
  4. 权限框架 - shiro 简单入门实例
  5. cmake中添加 -g编译选项
  6. mpvue 微信小程序_使用Vue.js开发微信小程序:开源框架mpvue解析
  7. code block怎样导入整个文件夹_按需分配随时可用的在线开发环境:弹性容器+code-server踩坑记...
  8. 在安装好python后文件显示还是应用程序_在djang中找不到已安装的应用程序
  9. 【SDOI 2011】Paint 染色
  10. cgic 测试demo
  11. linux下大于2T的硬盘使用方法
  12. 23种设计模式(1):单例模式
  13. 计算机丢失boost,Win7系统安装后出现无法开启readyboost怎么办?
  14. 【python】Windows系统中python解释器下载及安装过程
  15. AOC显示器OSD已锁是什么意思?怎么解锁?
  16. 解决类似微信聊天界面软键盘和表情框冲突问题
  17. php文字验证码插件,php中文验证码实现方法
  18. 【编程DIY】一.几个有趣的小程序
  19. win开启审计功能_windows文件共享审计功能开启
  20. 组图:广州一战士救人牺牲 轻生者后悔大哭

热门文章

  1. Bootstrap学习笔记(三) 网格系统
  2. 把一个英语句子中的单词次序颠倒后输出。例如输入“how are you”,输出“you are how”;...
  3. JSON JsonArray和JsonObject学习资料
  4. Mean Shift算法(CamShift)
  5. php屏幕共享功能,利用无线投屏技术同屏直播,精彩随时共享
  6. mysql数据库恢复数据_【技术分享】使用Innodb存储引擎的mysql数据库恢复
  7. html lt;ligt; 属性,HTML文件中lt;HRgt;标签各个属性的作用是什么?
  8. htm怎么让图片和搜索框在同一行_新手怎么玩好小红书
  9. 一文看懂微服务背后的技术演进与应用实践
  10. Web开发的历史发展技术演变