文档章节

不重复的三位数

寂寞暴走伤
 寂寞暴走伤
发布于 2016/07/14 19:30
字数 589
阅读 9
收藏 0

程序题目:0~9这10个数字可以组成多少不重复的3位数?


我的思路:使用三个for循环将所有的可能组成的数全部列出,然后去掉小于100的,去掉三位数中有重复数字的,最后输出不重复的三位数的个数和全部的数;


我的程序:

inter=[]
for i in range(10):
    for j in range(10):
        for k in range(10):
            num=100*i+10*j+k
            if i!=j and j!=k and i!=k and num >=100:
                inter.append(num)
print "there are %d non-repeat number" % len(inter)
print "no repeat numbers are: ",inter


官方源码:

# a:1-9, b:0-9, c:0-9
l = range(10)
count = 0
for a in l[1:]:
    for b in l:
        if a == b: continue #过滤a == b
        for c in l:
            if c != a and c != b: #过滤a == c, b == c
                print a, b, c
                count += 1
print 'count:', count


源码分析:

根据提供的示例可以看出,它是直接定义一个包含0~9的列表,第一次循环时a的取值为1~9,直接就过滤了两位数,这个比较好,值得借鉴,不像我的代码那样每次都要判断是否大于100了,第二次循环时b的取值再是0~9,然后通过一个判断语句来过滤a=b的数,其实就是过滤如11X  22X...这样的数,如果满足第二次循环就再进行第三次循环,第三次循环是判断c不等于a和b的,如果满足这些要求就是不重复的三位数了;


总结:

  1. 判断列表中元素的元素可以使用len()函数;

  2. 关于continue和break

    Python中的break语句可以结束当前循环然后跳转到下个语句,常用在当某个外部条件被触发(一般通过if语句检查)需要立即从循环中退出时,break语句可以用在while和for循环中;




    当遇到continue语句时,程序会终止当前循环,并忽略剩余的语句,然后回到循环的顶端。在开始下一次迭代前,如果是条件循环,我们将验证条件表达式;如果是迭代循环,我们将验证是否还有元素可以迭代,只有在验证成功的情况下,才开始进行下一次迭代;


题目出处:http://www.cheemoedu.com/exercise/11

© 著作权归作者所有

上一篇: 九九乘法表
下一篇: 黑色星期五
寂寞暴走伤
粉丝 0
博文 40
码字总数 20969
作品 0
南阳
运维
私信 提问
0~9十个数,每个数只能使用一次,组成两个三位数相加和为四位数的算法

  这几天上网,看到百度里面有人问这一道题目,0~9十个数,组成如下加法式 * + = ***,每个数字都只能使用一次,问一共多少中组合? 今天,就用C#语言来写一下,解出这道题,其他语言算法相...

雲霏霏
2014/07/08
0
0
正则表达式八道练习题

正则表达式八道练习题: Linux:运维正则表达式练习题: 1、显示/etc/passwd文件中以bash结尾的行 2、显示/etc/passwd文件中的两位数或三位数 3、显示命令结果中以‘LISTEN’后跟0个、1个或者...

qd轻描淡写
2017/11/15
0
0
Python3经典100例(③)

实例11 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 分析:可通过定义一个函...

村雨1943
2018/11/08
0
0
【python】编程语言入门经典100例--1

1 # 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 运行结果: 脚本解释: 本文转自snc_snc 51CTO博客,原文链接:http://blog.51cto.com/netsyscode/17...

技术小胖子
2017/11/02
0
0
微机系统与接口实验考试题目(2014级题目-03)

微机系统与接口实验考试题目(2014级题目-03) 题目要求:使用X86汇编语言实现如下所述功能: 根据开关k0k1k2组成的三位数000~111决定数码管显示,初始从右到左输出稳定的123456: ;三位数的...

qian2213762498
2018/01/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ubuntu或ubuntu kylin优麒麟中安装QQ、wechat微信、百度网盘

从中国国内的地址下载deepin wine,码云上的。这样网速比较快。然后,按照说明向下安装。 https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu...

gugudu
14分钟前
1
0
基于redis分布式锁实现“秒杀”

最近在项目中遇到了类似“秒杀”的业务场景,在本篇博客中,我将用一个非常简单的demo,阐述实现所谓“秒杀”的基本思路。 业务场景 所谓秒杀,从业务角度看,是短时间内多个用户“争抢”资源...

别打我会飞
34分钟前
10
0
Zookeeper的实践指南

本章重点 1.数据存储2.基于Java API初探Zookeeper的使用3.深入分析Watcher机制的实现原理4.Curator客户端的使用,简单高效 数据存储 事务日志快照日志运行时日志 bin/zookeepe...

须臾之余
37分钟前
1
0
MySQL mybatis Point类型数据

MySQL中的point用于表示GIS中的地理坐标,在GIS中广泛使用 如何写入mysql,如下图: CREATE TABLE `test-point` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号', `point` ......

张欢19933
49分钟前
2
0
设计模式-适配器模式

适配器模式 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入...

HOT_POT
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部