ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【CodeWars】刷题之The Poet And The Pendulum

2020-02-23 17:41:56  阅读:374  来源: 互联网

标签:pendulum Pendulum range CodeWars len step values result Poet


介个题目有点长,大致意思是
1.给定了一个数组
2.要求将数组中最小的元素放在中间位置,第二小的元素放在它的右边,第三小的 元素放在最小元素的左边,以此类推。

def pendulum(values):
    for i in range(len(values)):
        for j in range(i+1,len(values)):
            if values[i]>values[j]:
                values[i],values[j]=values[j],values[i]
    if len(values)%2==0:
        i=len(values)/2
    else:
        i=len(values)//2+1
    result=[0]*len(values)
    result[i]=values[0]
    step=1
    for j in range(1,len(values),2):
        result[i+step]=values[j]
        result[i-step]=values[j+1]
        step=step+1
    
    return result

个人的粗鄙代码直接在这边,直观上很容易理解,就是按照题目要求的步骤写
但不知为何报错

Traceback (most recent call last):
  File "main.py", line 3, in <module>
    Test.assert_equals(pendulum([4,6,8,7,5]), [8,6,4,5,7])
  File "/home/codewarrior/solution.py", line 14, in pendulum
    result[i+step]=values[j]
IndexError: list assignment index out of range

希望各位路过的大神能够在评论区不吝赐教

接着是平台上大神的代码

def pendulum(values):
    values=sorted(values)
    
    return values[::2][::-1]+values[1::2]
虚名御寇 发布了3 篇原创文章 · 获赞 0 · 访问量 31 私信 关注

标签:pendulum,Pendulum,range,CodeWars,len,step,values,result,Poet
来源: https://blog.csdn.net/weixin_44230791/article/details/104463623

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有