鱼C论坛

 找回密码
 立即注册
查看: 30139|回复: 287

[技术交流] Python:每日一题 1

  [复制链接]
发表于 2017-3-24 21:42:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-3-24 21:43:40 | 显示全部楼层
  1. for i in range(1,5):
  2.     for j in range(1,5):
  3.         for k in range(1,5):
  4.             if i != k and i != j and j != k:
  5.                 print(i,j,k)
复制代码

这是我的解答,欢迎大家一起交流。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 4 反对 0

使用道具 举报

发表于 2017-3-24 22:08:36 | 显示全部楼层
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:
                print(x,y,z)
跟2楼的好巧

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
新手·ing + 1 + 1 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2017-3-24 22:12:04 | 显示全部楼层
伤心地铁 发表于 2017-3-24 22:08
for x in range(1,5):
    for y in range(1,5):
        for z in range(1,5):

哈哈
谢谢支持
欢迎加入我的淘专辑
http://bbs.fishc.com/forum.php?m ... d=588&fromop=my
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2017-3-24 22:17:54 | 显示全部楼层
本帖最后由 ooxx7788 于 2017-3-24 22:21 编辑
  1. import itertools
  2. a = range(1, 5)
  3. y = list(itertools.permutations(a, 3))
  4. print(y)
复制代码

投机取巧

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
新手·ing + 1 + 1 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 5 反对 0

使用道具 举报

 楼主| 发表于 2017-3-24 22:19:42 | 显示全部楼层

向大佬致敬
谢谢支持
欢迎加入我的淘专辑
http://bbs.fishc.com/forum.php?m ... d=588&fromop=my
有没有兴趣成为维护人,一起?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-28 21:32:03 | 显示全部楼层
5楼简洁。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-28 21:32:46 | 显示全部楼层

是啊
万能的itertools模块
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-31 23:35:53 | 显示全部楼层
跟你们写的一样,从第一个开始做你这个系列,有意思
虽然代码一样,但是权当记录一下吧
  1. def test1():
  2.     for a in range(1,5):
  3.         for b in range(1, 5):
  4.             for c in range(1, 5):
  5.                 if a != b and a != c and b != c:
  6.                     print (a, b, c)
复制代码

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
新手·ing + 1 + 1 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2017-4-2 13:53:11 | 显示全部楼层
list = []
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:
                a= 100 *x + 10 * y + z
                list.append(a)
print('答案列表是:',list)
print('列表中的元素总共有:',len(list),'个')

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
新手·ing + 3 + 3 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2017-4-6 08:46:33 | 显示全部楼层
lists1=[1,2,3,4]
lists2=[x*100+y*10+z for x in lists1 for y in lists1 for z in lists1 if x!=y and y!=z and x!=z]
print(lists2,'个数'+str(len(lists1)))
变态版

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
新手·ing + 3 + 3 不错~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 5 反对 0

使用道具 举报

发表于 2017-4-7 14:09:37 | 显示全部楼层
  1. count = 0
  2. for i in range(1,5):
  3.     for j in range(1,5):
  4.         for k in range(1,5):
  5.             if i == j or j == k or k == i:
  6.                 continue
  7.             else:
  8.                 print('%d%d%d'%(i,j,k))
  9.                 count += 1
  10. print('有%d种组合'%count)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
新手·ing + 3 + 3 大兄弟~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-4-10 00:41:05 | 显示全部楼层
共24组,分别如下:
1 2 3,1 2 4,1 3 2,1 3 4,1 4 2,1 4 3;
2 1 3,2 1 4,2 3 1,2 3 4,2 4 1,2 4 3;
3 1 2,3 1 4,3 2 1,3 2 4,3 4 1,3 4 2;
4 1 2,4 1 3,4 2 1,4 2 3,4 3 1,4 3 2;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-4-11 12:55:57 | 显示全部楼层
新手·ing 发表于 2017-3-24 21:43
这是我的解答,欢迎大家一起交流。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-11 12:58:11 | 显示全部楼层
  1. import itertools as it
  2. print(len([x for x in it.permutations([1,2,3,4],3)]))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
新手·ing + 3 + 3 没鱼币了...

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-4-11 12:58:43 | 显示全部楼层
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if i != k and i != j and j != k:
                print(i,j,k)
这个好,简单易懂,大爱,因为我看懂了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-4-11 13:24:28 | 显示全部楼层
e=0
for a in range(1,5):
    for b in range(1,5):
        for c in range(1,5):
            if a!=b and a!=c and c!=b:
               
                d=a*100+b*10+c
                e+=1
                print(d," ",e)

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
新手·ing + 3 + 3 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-11 13:26:42 | 显示全部楼层
momozi 发表于 2017-4-11 12:58
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):

会有空格出现吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-12 14:15:46 | 显示全部楼层
貌似:
def test1():
    for a in range(1,5):
        for b in range(1, 5):
            for c in range(1, 5):
                if a != b and a != c and b != c:
                    print (a, b, c)

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
新手·ing + 2 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-15 15:10:15 | 显示全部楼层
n=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):
                print(x,y,z)
                n+=1
print('In total %d types'%n)
               
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 18:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表