鱼C论坛

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

[技术交流] Python:每日一题 17(答题领鱼币)

  [复制链接]
发表于 2017-11-22 20:44:05 | 显示全部楼层
##生成列表
import random
l=[]
for i in range(10):
    l.append(random.randint(-100,100))
##题目大约是,求2数间最小间距,既排序后2数相减取绝对值
print(l)
l.sort()
l2=[]
for i in range(9):
    l2.append([abs(l[i]-l[i+1]),l[i],l[i+1]])
n=min(l2)
print('最小差距是',n[1],'与',n[2],'的差距',n[0])

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

使用道具 举报

发表于 2017-11-23 18:12:55 | 显示全部楼层
  1. def func(a,b):
  2.     return abs(a-b)
  3. import random
  4. list1 = [random.randint(1,100) for i in range(10)]
  5. print list1
  6. list2 = []
  7. for i in range(0,len(list1)+1):
  8.     if i<=8:
  9.         func(list1[i],list1[i+1])
  10.         list2.append(func(list1[i],list1[i+1]))
  11. print list2
  12. print min(list2)
  13.    
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-1 22:43:45 | 显示全部楼层
本帖最后由 shigure_takimi 于 2017-12-1 22:51 编辑
  1. def minSub(lst):
  2.     result = float('inf')
  3.     for index1 in range(len(lst)-1):
  4.         for index2 in range(index1+1, len(lst)):
  5.             sub = abs(lst[index2] - lst[index1])
  6.             if sub < result:
  7.                 result = sub
  8.     return result

  9. list1 = [3,12,35,47,90]
  10. print(minSub(list1))

  11. #  9
复制代码



  1. def getMinSub(lst):
  2.     newList = sorted(lst)
  3.     allSub = [newList[i+1]-newList[i] for i in range(len(lst)-1)]
  4.     return min(allSub)
  5. list1 = [1,3,4,7,20,65]
  6. list2 = [3,12,98,7,100]
  7. print(getMinSub(list1))
  8. print(getMinSub(list2))

  9. #  1
  10. #  2
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-11 17:20:34 | 显示全部楼层

兄弟,你这写法不妥当吧,你只是将数组的两个相邻的数进行了求差,而题中的两两之差应该是不仅仅只是相邻的两个数。我是这样子认为的,若相左还请指教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-17 22:04:13 | 显示全部楼层
data=[10,20,35,16,50,80,8,19]
le=len(data)                 

mini = abs(data[0]-data[1])
for i in range(le-1):           #i只需要取倒数第二位即可
    for j in range(i+1,le):     #j从i后面那位开始取,这样不会取到同一个数
        small = abs(data[i]-data[j])
        if small < mini:
            mini = small

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

使用道具 举报

发表于 2018-2-7 17:39:53 | 显示全部楼层
  1. lst = [132,43,-1876,565,1,85,-63443,569,-1899,135]
  2. lst.sort()
  3. min = lst[1] - lst[0]
  4. for i in range(len(lst)-1):
  5.         if (min > lst[i + 1] - lst[i]):
  6.                 min = lst[i + 1] - lst[i]
  7. print(min)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-7 22:24:52 From FishC Mobile | 显示全部楼层
看看吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-8 10:20:47 From FishC Mobile | 显示全部楼层
剃度出家
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-26 22:22:27 | 显示全部楼层
  1. a = [1,4,7,9,34,5,8]
  2. b = []
  3. c = a[0]
  4. for x in a[1:]:
  5.     b.append(abs(x - c))
  6.     c = x
  7. print(min(b))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-2 12:35:55 | 显示全部楼层
我是来抄答案的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 21:04:52 | 显示全部楼层
a = [1, 5, 10, 3]
b = []

for k in range(len(a)):
    for z in range(k+1, len(a)):
        c = abs(a[z]-a[k])
        b.append(c)

print b.min()

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

使用道具 举报

发表于 2018-3-7 23:04:03 | 显示全部楼层
本帖最后由 瞬秒爆加速 于 2018-3-7 23:05 编辑
  1. min(abs(i-ii) for i in range(10) for ii in range(10))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-9 13:57:05 | 显示全部楼层
本帖最后由 大头目 于 2018-3-9 14:02 编辑

def fun(s):
        w = []
        for i in range(len(s)-1):
                result = abs(s-s[i+1])
                w.append(result)
        print(min(w))
list1 = [12,3,-9,411,18,2]
fun(list1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-9 15:03:33 From FishC Mobile | 显示全部楼层
瞅瞅
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-9 16:14:40 | 显示全部楼层
def randlist():
    list1 = []
    import random
    math = random.randint(6,12)
    for i in range(0,math):
        number = random.randint(0,50)
        list1.append(number)
    return list1
def min_sum_(list1):
    list2 = []
    for i in list1:
        for j in list1:
            list2.append(i+j)
    return list2
while(True):
    list1 = randlist()
    list2 = min_sum_(list1)
    print(min(list2))
    guess = input('')
运行结果如下
>>>
24
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-9 16:29:13 | 显示全部楼层
z1446773686 发表于 2018-3-9 16:14
def randlist():
    list1 = []
    import random

def randlist():
    list1 = []
    import random
    math = random.randint(6,12)
    for i in range(0,math):
        number = random.randint(0,50)
        list1.append(number)
    return list1
def min_sum_(list1):
    list2 = []
    for i in list1:
        for j in list1:
            if i != j:
                list2.append(i+j)
    return list2
def a_b(list1,list2):
    for i in list1:
        for j in list1:
            for x in list2:
                if i + j == min(list2):
                    print(i,j)
                    break
while(True):
    list1 = randlist()
    list2 = min_sum_(list1)
    print(list1,'\n',min(list2))
    a_b(list1,list2)
    guess = input('')
运行结果:
>>>
[4, 38, 40, 14, 31, 25, 27, 1, 14, 30, 37, 43]
5
4 1
1 4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-9 19:12:58 | 显示全部楼层
def randlist():
    list1 = []
    import random
    math = random.randint(6,12)
    for i in range(0,math):
        number = random.randint(0,50)
        list1.append(number)
    return list1
def min_sum_(list1):
    list2 = []
    for i in list1:
        for j in list1:
            if i != j:
                list2.append(abs(i-j))
    return list2
def a_b(list1,list2):
    for i in list1:
        for j in list1:
            for x in list2:
                if abs(i - j) == min(list2):
                    print(i,j)
                    break
while(True):
    list1 = randlist()
    list2 = min_sum_(list1)
    print(list1,'\n',min(list2))
    a_b(list1,list2)
    guess = input('')
运行如下:
[45, 42, 47, 5, 19, 41, 33, 38, 48, 35, 15]
1
42 41
47 48
41 42
48 47
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-11 09:38:40 | 显示全部楼层
  1. def f(lis):
  2.     lis1 = []
  3.     for i in lis:
  4.         for j in lis:
  5.             if i != j:
  6.                 lis1.append(abs(i - j))
  7.     lis1.sort()
  8.     return lis1[0]
  9. a = [1,50,10,100,15]
  10. result = f(a)
  11. print(result)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 20:27:46 | 显示全部楼层
a = [1,3,4,5]
n = len(a)
m = []
for i in range(n):
        for j in range(i+1, n):
                m.append(abs(a[i] - a[j]))
print(min(m))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 20:39:21 | 显示全部楼层
初学者来看看大神们,学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 20:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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