鱼C论坛

 找回密码
 立即注册
楼主: 新手·ing

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

  [复制链接]
发表于 2018-11-28 13:47:52 | 显示全部楼层
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):
                list.append(x*100+y*10+z)

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

使用道具 举报

发表于 2018-12-3 15:32:13 | 显示全部楼层
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:
                count += 1
                print(int(str(x)+str(y)+str(z)))
print('一共有 %d 个数'%count)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-4 17:51:42 | 显示全部楼层
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-5 10:04:26 | 显示全部楼层
  1. for i in range(1,5):
  2.     for j in range(1,5):
  3.         for k in range(1,5):
  4.             if(i==j or i==k or j==k):
  5.                 continue
  6.             else:
  7.                 gewei=k
  8.                 shiwei=j
  9.                 baiwei=i
  10.                 number=str(baiwei)+str(shiwei)+str(gewei)
  11.                 print(number)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-6 20:43:33 | 显示全部楼层
sum=0
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if i!=j and i!=k and j!=k :
                sum+=1
                num=i*100+j*10+k
                print(num)
print(sum)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-9 15:27:32 | 显示全部楼层
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-11 19:54:59 | 显示全部楼层
sum = 0
for a in range(1,5):
    for b in range(1,5):
        for c in range(1,5):
            if (a != b) and  (b !=c) and (a != c ):
                temp = a*100 + b*10 +c
                sum += 1
                print(temp,end=" ")
print(sum)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-15 14:20:23 | 显示全部楼层
本帖最后由 wwyy 于 2018-12-15 14:22 编辑
  1. result = []
  2. number = [1,2,3,4]
  3. for i in range(0,4):
  4.         for m in range(0,4):
  5.                 if i == m:
  6.                         continue
  7.                 for n in range(0,4):
  8.                         if n == m or n == i:
  9.                                 continue
  10.                         result.append(number[i]*100+number[m]*10+number[n])

  11. result
  12. [123, 124, 132, 134, 142, 143, 213, 214, 231, 234, 241, 243, 312, 314, 321, 324, 341, 342, 412, 413, 421, 423, 431, 432]
  13. len(result)
  14. 24
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-18 11:48:46 | 显示全部楼层
自己写了几个不同的版本
第一个版本是比较容易想到比较简单的一种。
  1. #基础版
  2. num=0
  3. for a in range(1,5):
  4.         for b in range(1, 5):
  5.                 for c in range(1, 5):
  6.                         if a != b and a != c and b != c:
  7.                                 print (a*100+b*10+c)
  8.                                 num += 1
复制代码

第二个版本是使用了list的版本
  1. #列表版
  2. mylist=[1,2,3,4]
  3. print (mylist)
  4. newlist =list()
  5. for x in mylist:
  6.         for y in mylist:
  7.                 for z in mylist:
  8.                         if x!=y and y!=z and z!=x:
  9.                                 newlist.append(x*100+y*10+z)
  10. print ('共有',len(newlist),'个')
  11. print (newlist)
复制代码

第三个版本是list改进版
  1. #列表进阶版
  2. mylist=[1,2,3,4]
  3. print (mylist)
  4. newlist=[x*100+y*10+z for x in mylist for y in mylist for z in mylist if x!=y and y!=z and x!=z]
  5. print ('共有',len(newlist),'个')
  6. print (newlist)
复制代码

第四个版本是使用set的版本
  1. #集合版
  2. mylist=[1,2,3,4]
  3. print (mylist)
  4. myset=set()
  5. myset.update(x*100+y*10+z for x in mylist for y in mylist for z in mylist if x!=y and y!=z and x!=z)
  6. print ('共有',len(myset),'个')
  7. print (myset)
复制代码

第五个版本是使用了itertools
  1. #迭代器版
  2. #既可以用list也可以用set,若用set,则将第四行最外层的[]改为{}
  3. import itertools
  4. mylist=[x[0]*100+x[1]*10+x[2] for x in itertools.permutations([1,2,3,4],3)]
  5. print ('共有',len(mylist),'个')
  6. print (mylist)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-27 15:00:38 | 显示全部楼层
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 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
回复 支持 反对

使用道具 举报

发表于 2018-12-31 11:16:42 | 显示全部楼层
本帖最后由 nnxiaod 于 2018-12-31 11:22 编辑

看了各位大佬的五体投地。。。
  1. numbers = (1, 2, 3, 4)
  2. result = []
  3. i, j, k = 0, 0, 0
  4. while i < 4:
  5.     while j < 4:
  6.         while k < 4:
  7.             if numbers[i] != numbers[j] and numbers[i] != numbers[k] and numbers[j] != numbers[k]:
  8.                 result.append(numbers[i] * 100 + numbers[j] * 10 + numbers[k])
  9.             k += 1
  10.         j += 1
  11.         k = 0
  12.     i += 1
  13.     j = 0
  14. print(len(result))
  15. print(result)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-2 21:27:50 | 显示全部楼层
  1. for i in range(1,5):
  2.         for j in range(1,5):
  3.                 for k in range(1,5):
  4.                         if (i != j) and (i != k) and (j != k):
  5.                                 print(i, end="")
  6.                                 print(j, end="")
  7.                                 print(k, end="")
  8.                                 print()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-12 16:57:16 | 显示全部楼层
  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
回复 支持 反对

使用道具 举报

发表于 2019-1-14 21:20:11 | 显示全部楼层
arr = []
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)):
                        tem = a*100 + b*10 + c
                        arr.append(tem)                                          
print('共有%d个互不相同且无重复数字的三位数'%len(arr))
print('他们是')

for i,j in enumerate(arr):
      print('第%d个数字是:'%(i+1),j)
#枚举函数 enumerate 可以获得索引和值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-2 22:10:12 | 显示全部楼层

  1. for a in range(1,5):
  2.     for b in range(1,5):
  3.         for c in range(1,5):
  4.             if a != b != c:
  5.                 print(a,b,c)
  6.             
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-12 13:50:29 | 显示全部楼层
  1. #有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
  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) and (j != k) and (i != k):
  6.                 print(i,j,k)
复制代码


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

使用道具 举报

发表于 2019-2-19 22:08:22 | 显示全部楼层
sum=0
for i in range(1,5):
    for j in range (1,5):
        for k in range (1,5):
            if i != j and i!= k and j!= k:
               print (i,j,k)
               sum=sum+1
print('共有',sum,'种组合')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-28 15:24:59 | 显示全部楼层
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if i != j and i != k and j != k:
                print(i,j,k)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-5 20:45:27 | 显示全部楼层
num=0
for i in range(1,5):
    for j in range(1,5):
        if i==j:
            continue
        for k in range(1,5):
            if i==k:
                continue
            elif j==k:
                continue
            else:
                num+=1
                print(i*100+j*10+k)
print(num)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-18 10:57:51 | 显示全部楼层
本帖最后由 zjhahaha 于 2019-3-18 11:04 编辑

ll=[]
for i in range(1,5):
    for j in range(1,5):
        if i == j:
            continue
        else:
            for k in range(1,5):
                if i != k and i != j and j != k:
                    ls=[]
                    ls.append(i)
                    ls.append(j)
                    ls.append(k)
                    ll.append(tuple(ls))
                    #print(i,j,k)
print(len(ll))
for w in ll:
    print(w)
&#8203;
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)
&#8203;
ll=[]
for i in range(1,5):
    for j in range(1,5):
        #减少循环步骤
        if i == j:
            continue
        else:
            for k in range(1,5):
                if i != k and i != j and j != k:
                    ls=[]
                    ls.append(i)
                    ls.append(j)
                    ls.append(k)
                    ll.append(tuple(ls))
                    #print(i,j,k)
print(“可组成的数量为{}”.format(len(ll)))
for w in ll:
    print("组成:"+w)
  File "<ipython-input-5-5f40a9f002fc>", line 17
    print(“可组成的数量为{}”.format(len(ll)))
                 ^
SyntaxError: invalid character in identifier
"
&#8203;
ll=[]
for i in range(1,5):
    for j in range(1,5):
        #减少循环步骤
        if i == j:
            continue
        else:
            for k in range(1,5):
                if i != k and i != j and j != k:
                    ls=[]
                    ls.append(i)
                    ls.append(j)
                    ls.append(k)
                    ll.append(tuple(ls))
                    #print(i,j,k)
print("可组成的数量为{}.format(len(ll)))
for w in ll:
    print("组成:"+w)
  File "<ipython-input-6-d50335e9eabf>", line 17
    print("可组成的数量为{}.format(len(ll)))
                                     ^
SyntaxError: EOL while scanning string literal
&#8203;
ll=[]
for i in range(1,5):
    for j in range(1,5):
        #减少循环步骤
        if i == j:
            continue
        else:
            for k in range(1,5):
                if i != k and i != j and j != k:
                    ls=[]
                    ls.append(i)
                    ls.append(j)
                    ls.append(k)
                    ll.append(tuple(ls))
                    #print(i,j,k)
print("可组成的数量为{}.format(len(ll)))
for w in ll:
    print("组成:"+w)
  File "<ipython-input-7-d50335e9eabf>", line 17
    print("可组成的数量为{}.format(len(ll)))
                                     ^
SyntaxError: EOL while scanning string literal
ll=[]
for i in range(1,5):
    for j in range(1,5):
        #减少循环步骤
        if i == j:
            continue
        else:
            for k in range(1,5):
                if i != k and i != j and j != k:
                    ls=[]
                    ls.append(i)
                    ls.append(j)
                    ls.append(k)
                    ll.append(tuple(ls))
                    #print(i,j,k)
print("可组成的数量为{}".format(len(ll)))
for w in ll:
    print("组成:{}".format(w))
可组成的数量为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
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 15:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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