【Python CheckiO 题解】Absolute Sorting


CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。

CheckiO 官网:https://checkio.org/

我的 CheckiO 主页:https://py.checkio.org/user/TRHX/

CheckiO 题解系列专栏:https://itrhx.blog.csdn.net/category_9536424.html

CheckiO 所有题解源代码:https://github.com/TRHX/Python-CheckiO-Exercise


题目描述

【Absolute Sorting】:给定一个元组,其中元素有正数和负数,要求将其按照绝对值从小到大排序,返回的值可以是一个列表,也可以是一个元组。

【链接】https://py.checkio.org/mission/absolute-sorting/

【输入】:由正负数组成的一个元组

【输出】:按绝对值升序排列的列表或元组

【前提】:len(set(abs(x) for x in array)) == len(array);0 < len(array) < 100;all(isinstance(x, int);for x in array);all(-100 < x < 100 for x in array)

【范例】

checkio((-20, -5, 10, 15)) == [-5, 10, 15, -20] # or (-5, 10, 15, -20)
checkio((1, 2, 3, 0)) == [0, 1, 2, 3]
checkio((-1, -2, -3, 0)) == [0, -1, -2, -3]

代码实现

def checkio(numbers_array: tuple) -> list:
    return sorted(numbers_array, key=abs)


# These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
    print('Example:')
    print(list(checkio((-20, -5, 10, 15))))

    def check_it(array):
        if not isinstance(array, (list, tuple)):
            raise TypeError("The result should be a list or tuple.")
        return list(array)

    assert check_it(checkio((-20, -5, 10, 15))) == [-5, 10, 15, -20], "Example"  # or (-5, 10, 15, -20)
    assert check_it(checkio((1, 2, 3, 0))) == [0, 1, 2, 3], "Positive numbers"
    assert check_it(checkio((-1, -2, -3, 0))) == [0, -1, -2, -3], "Negative numbers"
    print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")

大神解答

大神解答 NO.1

def checkio(array):
    array = list(array)
    for i in range(len(array)-1):
        for x in range(len(array)-1):
            if abs(array[x])>abs(array[x+1]):
                array[x],array[x+1]=array[x+1],array[x]
    return array

大神解答 NO.2

def checkio(numbers_array: tuple) -> list:
    abs_list = [abs(i) for i in numbers_array]
    return [x-2*x if x not in numbers_array else x for x in sorted(abs_list)]
发布了135 篇原创文章 · 获赞 475 · 访问量 44万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览