不重复的三位数

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

时间: 2024-09-30 19:51:00

不重复的三位数的相关文章

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

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 i,j,k #任意三个数可组成多少不重复的三位数st=[] for i in range(1,4):    sa=int(raw_input('your number :'))    st.append(sa)    for

30 不重复的三位数

0-9可以组成多少不重复三位数 拆分 n = a*100 + 10*b + c   abc 代码如下: 1 #!/usr/bin/env python 2 # encoding: utf-8 3 """ 4 @author: 侠之大者kamil 5 @file: 30 不重复的三位数.py 6 @time: 2016/5/23 15:53 7 """ 8 l = range(4) 9 cont = 0 10 for a in l[1:]: 11

有1、2、3、4四个数字,能组成多少个互不相同且一个数字中无重复数字的三位数?并把他们都输出。

/** * 有1.2.3.4四个数字,能组成多少个互不相同且一个数字中无重复数字的三位数?并把他们都输出. * */ public class Test1 { public static void main(String[] args) { int num = 0, c = 0; for (int i = 1; i <= 4; i++) { for (int j = 1; j <= 4; j++) { for (int k = 1; k <= 4; k++) { if (i != j &

Java循环练习: 有1、2、3、4四个数字,能组成多少个无重复数字的三位数?都是多少?

package practiceGO; /**         有1.2.3.4四个数字,能组成多少个无重复数字的三位数?都是多少?  */ public class Cto { public static void main(String[] args) { int count = 0; for(int i=1; i<=4; i++){ for(int j=1; j<=4; j++){ for(int k=1; k<=4; k++){ if (i!=j && i!=k 

【python 思路】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

# encoding:utf-8 # p001_1234threeNums.py def threeNums(): '''题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?''' print None count = 0 nums = [] for index1 in xrange(1,5): for index2 in xrange(1,5): for index3 in xrange(1,5): if index1 != index2 and index1 !

37.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

?#include<iostream> using namespace std; int main() { int m=0; for(int i=1;i<=4;i++) { for(int j=1;j<=4;j++) { for(int k=1;k<=4;k++) { if(i!=j&&i!=k&&j!=k)//关键判断 { cout<<(100*i+10*j+k)<<endl; m++; } } } } cout<

1,2,3,4四个数字互不相同且无重复数字的三位数

1 //有5.6.7.8四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 2 function getNumber(){ 3 $str='5678'; 4 $i=$j=$k=0; 5 $count=$sum=0; 6 for ($i=0;$i<4;$i++){ 7 for($j=0;$j<4;$j++){ 8 for ($k=0;$k<4;$k++){ 9 if ($i!=$j && $j!=$k && $i!=$k){ 10 $count=

python 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。(用列表推导式)

count = 0 #计数器 for x in range(1,5): for y in range(1,5): for z in range(1,5): if x!=y and x!=z and y!=z: num=x*100+y*10+z print(num,end=' ') count += 1 print() print('无重复数字的三位数的个数:'+str(count)) #列推导式 num1 =[x*100+y*10+z for x in range(1,5) for y in r

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

题目:有1.2.3.4个数字,能组成多少个互不相同 且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数字 都是1.2.3.4.组成所有的排列后再去掉不满足条件的排列. public class 第十一题组成无重复数字的三位数 { public static void main(String[] args) { int count = 0; //统计满足条件的数的个数 for(int i=1; i<5; i++) { for(int j=1; j<5; j++) { for(