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


题目描述

【Median】:给定一个数组,查找其中位数,如果数组的元素个数是偶数,则返回中间两个元素的平均值。

【链接】:https://py.checkio.org/mission/median/

【输入】:由整数组成的数组(list)

【输出】:数组的中位数(int or float)

【前提】:1 < len(data) ≤ 1000;all(0 ≤ x < 10 ** 6 for x in data)

【范例】

checkio([1, 2, 3, 4, 5]) == 3
checkio([3, 1, 2, 5, 3]) == 3
checkio([1, 300, 2, 200, 1]) == 2
checkio([3, 6, 20, 99, 10, 15]) == 12.5

解题思路

先用 sort() 方法将数组元素按照从小到大排序,利用数组的长度除以 2 来判断其元素个数是奇数还是偶数。

代码实现

from typing import Listdef checkio(data: List[int]) -> [int, float]:data.sort()if len(data) % 2 == 0:return (data[int(len(data)/2) - 1] + data[int(len(data)/2)])/2else:return data[int(len(data)/2)]# These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':print("Example:")print(checkio([1, 2, 3, 4, 5]))assert checkio([1, 2, 3, 4, 5]) == 3, "Sorted list"assert checkio([3, 1, 2, 5, 3]) == 3, "Not sorted list"assert checkio([1, 300, 2, 200, 1]) == 2, "It's not an average"assert checkio([3, 6, 20, 99, 10, 15]) == 12.5, "Even length"print("Start the long test")assert checkio(list(range(1000000))) == 499999.5, "Long."print("Coding complete? Click 'Check' to earn cool rewards!")

大神解答

大神解答 NO.1

from typing import List
from statistics import mediandef checkio(data: List[int]) -> [int, float]:return median(data)

statistics 模块的 median 方法可以直接求中位数!

大神解答 NO.2

from typing import Listdef checkio(data: List[int]) -> [int, float]:data = sorted(data)l = len(data) return [(data[l//2]+data[l//2-1])/2, data[l//2]][l%2]

大神解答 NO.3

from typing import Listdef checkio(data):data.sort()half = len(data) // 2return (data[half] + data[~half]) / 2

【Python CheckiO 题解】Median相关推荐

  1. Python CheckiO 题解系列 丨 博客目录索引

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本题解系列主要记录自己在用 Python 闯关时的做 ...

  2. 【Python CheckiO 题解】Army Battles

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  3. 【Python CheckiO 题解】Date and Time Converter

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  4. 【Python CheckiO 题解】Largest Rectangle in a Histogram

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  5. 【Python CheckiO 题解】Roman Numerals

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  6. 【Python CheckiO 题解】Probably Dice

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  7. 【Python CheckiO 题解】Multicolored Lamp

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  8. 【Python CheckiO 题解】Time Converter (12h to 24h)

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

  9. 【Python CheckiO 题解】Speech Module

    CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思 ...

最新文章

  1. 定积分计算器_使用科学计算器计算概率分布
  2. SQL Server 2012 新特性:新增和修改函数
  3. java集合作为参数 传递的是_Java:数组和集合类作为参数传递时的差别
  4. 【渝粤教育】国家开放大学2019年春季 0691-22T物理化学及实验 参考试题
  5. 模糊查询一--视图写sql
  6. java定义一个静态类_Java中的静态类
  7. Redmine 126邮件服务器的配置
  8. 2021年奎屯七中高考成绩查询,奎屯高考成绩查询
  9. java的反射机制(第二篇)
  10. mysql 临时表 中文_MySQL 临时表
  11. 与spring的整合
  12. nachos-虚拟内存管理
  13. 使用GSON解析JSON数据
  14. Docker搭建内部知识库(Wiki)
  15. vue中json数据格式化
  16. React Native入门——布局实践:开发京东客户端首页(二)TabBar的构建
  17. PDF编辑方法,怎么删除PDF中的一页
  18. 尚硅谷和黑马java,全网首发!
  19. C++保留两位小数的四种方法
  20. 有道云笔记4年的用户体验

热门文章

  1. Win7和Ubuntu14.10双系统
  2. viewgroup 渲染过程
  3. 在WIN7下硬盘安装XP双系统
  4. [小技巧][JAVA]判断字符串某一位是否是数字/字母
  5. [剑指offer][JAVA]面试题第[34]题[二叉树中和为某一值的路径][回溯]
  6. python对象属性在引用时前面需要加()_python基础-面向对象进阶
  7. python apscheduler 脚本 动态_用apscheduler写python定时脚本
  8. pwm控制舵机转动角度程序_Mixly 第15课 舵机的使用
  9. miui12怎么自定义开机动画_MIUI12正式发布:视觉/功能大升级
  10. java knn分类_返回2个或更多最近邻居的KNN算法