python每日一练(1)

题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列(个人理解:想要几位数的结果,就要有几个for循环,每个循环来控制1位数)

for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            #print(i,j,k)                                     
            if i != j and i != k and j != k:
                print(i,j,k)

步骤解析:在第三个for循环内可以先输出一下,运行:

for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            print(i,j,k) 
            
是如下结果:
1 1 1
1 1 2
1 1 3
1 1 4
1 2 1
1 2 2
1 2 3
1 2 3
1 2 4
1 2 4
...
4 4 2
4 4 3
4 4 4

题目要求不能重复,比如不能有:111、444这种,所以要判断这三个数是不是完全相同,并且是在循环内判断,然后再次输出

      if i != j and i != k and j != k:
          print(i,j,k)
          

将结果保存到列表中,并输出个数,需要定义一个list = [],使用len统计个数

for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            print(i,j,k)
            if i != j and i != k and j != k:
                #print(i,j,k)
                a= 100 *i + 10 * j + k
                list.append(a)
print("答案列表:",list)
print("列表中元素个数:" ,len(list))

原题目及答案来自于鱼C:
https://fishc.com.cn/forum.php?mod=viewthread&tid=84666&highlight=%C3%BF%C8%D5%D2%BB%CC%E2

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值