鱼C论坛

 找回密码
 立即注册
楼主: 冬雪雪冬

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

[复制链接]
发表于 2018-8-2 20:22:14 | 显示全部楼层
import math


a_list = [6,18,7,17,3,2,10,20,14,4]
b_list = []
sum1 = len(a_list)



for i in range(0,sum1):
    for j in range(0,sum1):
        for h in range(0,sum1):
            if (i==j or i==h or j==h):
                pass
            elif ((a_list[i]+a_list[j])==a_list[h]):
                b_list.append(a_list[h])
               
b_list = list(set(b_list))
print (b_list)
   

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-2 20:37:27 | 显示全部楼层
  1. list_193=[6, 18, 7, 17, 3, 2, 10, 20, 14, 4]
  2. sum_two=[]
  3. for i in list_193:
  4.     for j in list_193:
  5.         if j!=i:
  6.             sum_two.append(i+j)
  7. for k in list_193:
  8.     if k in sum_two:
  9.         print(k,end=' ')
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-2 21:13:34 | 显示全部楼层
  1. def a193(*n):
  2.         list2=list(n[:])
  3.         list3=[]
  4.         for a in range(len(n)):
  5.                 list2.remove(n[a])
  6.                 for b in list2:
  7.                         for c in list2:
  8.                                 if b+c==n[a] and b!= c and n[a] not in list3:
  9.                                         list3.append(n[a])
  10.                 list2=list(n[:])
  11.         print(list3)
  12. n=[6, 18, 7, 17, 3, 2, 10, 20, 14, 4]
  13. a193(*n)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-2 23:09:36 | 显示全部楼层
  1. def fun193(list1=[]):
  2.     '不是很严密,主要是针对互不相同的数字'
  3.     result=[]
  4.     for each in list1:
  5.         for i in range(0,len(list1)):
  6.             value=each-list1[i]
  7.             if (value!=list1[i])and(value in list1)and(each not in result):
  8.                 result.append(each)
  9.     return result
  10.    
  11. print(fun193([6,18,7,17,3,2,10,20,14,4]))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-3 10:36:03 | 显示全部楼层
本帖最后由 Wangzy1025 于 2018-8-3 10:59 编辑
  1. import itertools as it


  2. def fun193(num_list):
  3.     return [x for x in num_list if x in set([x + y for x, y in it.combinations(num_list, 2)])]


  4. list1 = [6, 18, 7, 17, 3, 2, 10, 20, 14, 4]
  5. print(fun193(list1))
复制代码

评分

参与人数 1荣誉 +4 鱼币 +4 收起 理由
冬雪雪冬 + 4 + 4

查看全部评分

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

使用道具 举报

发表于 2018-8-3 10:52:04 | 显示全部楼层
alist =  input('请输入数字,中间间隔"," :')
a = alist.split(",")
list1 = []
length = len(a)
a = [int(a[i]) for i in range(length)]
for i in range(length):
    for j in range(i,length):
        x = a[i]+a[j]
        if (x in a) and (not x in list1) :
            list1.append(x)
            print(x,'=',a[i],'+',a[j])
list1.sort()
print(list1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-3 11:07:31 | 显示全部楼层
  1. l = [6, 18, 7, 17, 3, 2, 10, 20, 14, 4]
  2. tmp = []
  3. for i in range(len(l)):
  4.     for j in range(len(l)):
  5.         if i != j:
  6.             tmp.append(l[i] + l[j])
  7. print(set(tmp) & set(l))
复制代码


输出的值应该是:
{6, 7, 10, 14, 17, 18, 20}
楼主的答案是错的。顺便说一下,这道题其实可以扩展出来,提高难度,增加数组的长度,并且要求效率完成。

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-3 11:23:59 | 显示全部楼层
list1 = [6, 18, 7, 17, 3, 2, 10, 20, 14, 4]
list2 = [] #所有数相加产生的结果列表
list3 = [] #自身相加产生的列表
n = 0
lengh = len(list1) #判断列表长度

for i in list1:#得到列表内每位元素的自身和
    i *=2
    list3.append(i)


while n != lengh:#得到所有元素产生的和
    for each in range(lengh-1):
        num = list1[n]+list1[each]
        list2.append(num)
    n +=1



#所有列表转化为字典
list1 = set(list1)
list2 = set(list2)
list3 = set(list3)

#通过差集去掉自身和
list2 = list2.difference(list3)
#通过交集得结果
list2 = list1.intersection(list2)
print(list2)   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-3 11:40:06 | 显示全部楼层
  1. for i in range(len(list_num)):#将列表中的元素转成数字
  2.     a=list_num.pop(i)#弹出
  3.     a=int(a)#转化
  4.     list_num.insert(i,a)#插入
  5. list_result=[]#建立一个空列表储存结果
  6. for i in range(len(list_num)):
  7.     a=list_num.pop(i)#弹出一个数字进行判断
  8.     for j in range(len(list_num)):
  9.         b=list_num.pop(j)#弹出第一个加数
  10.         for each in list_num:#列表中剩下的元素作为依次作为第二个加数
  11.             if b+each==a:
  12.                 list_result.append(a)#数字符合要求,加入结果列表
  13.         list_num.insert(j,b)#将第一个加数放回列表原位置
  14.     list_num.insert(i,a)#将判断数字放回列表原位置
  15. list_result=list(set(list_result))#去掉重复的元素
  16. print(list_result)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-3 13:30:23 | 显示全部楼层
  1. list1 = [6, 18, 7, 17, 3, 2, 10, 20, 14, 4]
  2. le_list1 = len(list1)
  3. t = 0
  4. s = set()
  5. for x in list1:
  6.     for y in range(t,le_list1):
  7.         if x != list1[y]:
  8.             num = x + list1[y]
  9.             if num in list1:
  10.                 s.add(num)
  11.     t += 1
  12. print(s)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-3 16:02:17 From FishC Mobile | 显示全部楼层
答案怎么还没公布呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-3 17:29:00 | 显示全部楼层
老师,应该还有18吧? 18 = 14 + 4
  1. A = [6, 18, 7, 17, 3, 2, 10, 20, 14, 4]

  2. def fun193(x):
  3.     y = []
  4.     x.sort()
  5.     for pt in range(2,len(x)):
  6.         pf,pm = 0,0
  7.         while (x[pf] + x[pm]) < x[pt]:
  8.             pm += 1
  9.             if pm == pf: continue
  10.             if (x[pf] + x[pm]) == x[pt]:
  11.                 print(str(x[pt]) +' = '+ str(x[pf]) +' + '+str(x[pm]))
  12.             if (pm+1) == pt:
  13.                 pm = 0
  14.                 pf += 1
  15.             if x[pt] not in y:
  16.                 y.append(x[pt])
  17.     print('Elements that are sums of the other 2 are: ', y)

  18. fun193(A)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-3 23:50:00 | 显示全部楼层
版主题目上少了个18
  1. def heshu(list_a):
  2.     for i in range(len(list_a)):
  3.         for j in range(i+1,len(list_a)):
  4.             ij_plus = list_a[i] + list_a[j]
  5.             if ij_plus in list_a:
  6.                 yield ij_plus

  7. list_a = [6,18,7,17,3,2,10,20,14,4]
  8. list_b = []
  9. for m in heshu(list_a):
  10.     if m not in list_b:
  11.         list_b.append(m)
  12. print(list_b)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-4 13:29:09 From FishC Mobile | 显示全部楼层
list1=[6,18,7,17,3,2,10,20,14,4]
n=len(list1)
add_list=[]
result=[]
for i in range (0,n):
        for j in range(i,n):
                add=list1[i]+list1[j]
                if add not in add_list:
                        add_list.append(add)
for i in range(0,n):
        if list1[i] in add_list:
                result.append(list1[i])
print(result)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-6 16:37:47 | 显示全部楼层
  1. from itertools import combinations
  2. def fun193(ls):
  3.     result = []
  4.     for each in combinations(ls, 2):
  5.         if sum(each) in ls and sum(each) not in result:
  6.             result.append(sum(each))
  7.     return result
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-6 18:05:43 | 显示全部楼层
  1. num_list = [6, 18, 7, 17, 3, 2, 10, 20, 14, 4]

  2. def q193(num_list):
  3.     result_list = []
  4.     for i in num_list:
  5.         for j in range(0,len(num_list)):
  6.             if (i - num_list[j]) in num_list[:j] + num_list[j+1:]:
  7.                 result_list.append(i)
  8.                 break
  9.     return  result_list

  10. print(q193(num_list))
复制代码


但是我的结果是 [6, 18, 7, 17, 10, 20, 14]
你这例子是不是不严密啊~

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2018-8-7 07:57:36 | 显示全部楼层

我这个有啥问题呀,点评一下咯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-13 14:38:16 | 显示全部楼层
最近太忙了,落下了好多题……

  1. def fun193(list1):
  2.     result = []
  3.     for i in list1:
  4.         for j in list1:
  5.             if j < i and j != (i - j) and (i-j) in list1:
  6.                 result.append(i)
  7.                 break

  8.     return result


  9. print(fun193([6, 18, 7, 17, 3, 2, 10, 20, 14, 4]))
复制代码


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

使用道具 举报

发表于 2018-11-26 17:09:30 | 显示全部楼层
本帖最后由 xy123151 于 2018-11-26 17:10 编辑
  1. list1 = [6, 18, 7, 17, 3, 2, 10, 20, 14, 4]

  2. def fun193(num):
  3.     set1=set()
  4.     for i in num:
  5.         for j in num:
  6.             if i-j in num and (i-j)!=j :
  7.                 set1.add(i)
  8.     print (set1)
  9. fun193(list1)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-28 17:12:06 | 显示全部楼层
  1. from itertools import permutations

  2. def fun193(x):
  3.     result = []
  4.     for i in x:
  5.         for j in permutations(x,2):
  6.             if sum(j) == i:
  7.                 result.append(i)
  8.                 break
  9.     return result

  10. if __name__ == '__main__':
  11.     print(fun193([6, 18, 7, 17, 3, 2, 10, 20, 14, 4]))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 06:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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