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)]