不重复的三位数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不重复的三位数相关的知识,希望对你有一定的参考价值。

程序地址:http://www.cheemoedu.com/exercise/11


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



以上是关于不重复的三位数的主要内容,如果未能解决你的问题,请参考以下文章

Pythondemo实验5练习实例多个数字组合成不重复三位数

python基础#1,2,3,4可组成多少不重复的三位数

有四个数字:1234,能组成多少个互不相同且无重复数字的三位数?各是多少?

c语言练习1——判断无重复数字的三位数?都是多少?代码

0到7组成无重复数字的五位数,有多少个奇数

有1234个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?