【Python CheckiO 题解】The Most Numbers


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


题目描述

【The Most Numbers】:给定一个数字(包括浮点数)组成的数组,你要计算数组中最大、最小值的差值,如果传入了一个空的数组,函数应该返回 0,计算结果精度为 ±0.001。

浮点数在计算机硬件中以二进制的小数来表示。 所以我们可以以 ±0.001的精度来验证结果,想想怎么处理不确定数量的参数吧!

【链接】https://py.checkio.org/mission/most-numbers/

【输入】:一个由任意多个数字(int or float)组成的参数

【输出】:数组中最大值和最小值的差值(int or float)

【前提】: ≤ len(args) ≤ 20;all(-100 < x < 100 for x in args);all(isinstance(x, (int, float)) for x in args)

【范例】

checkio(1, 2, 3) == 2
checkio(5, -5) == 10
checkio(10.2, -2.2, 0, 1.1, 0.5) == 12.4
checkio() == 0

解题思路

直接用 max()min() 方法获取最大值和最小值,相减即可,如果没有传入参数,则返回 0,这条语句可以用三元表达式,更加简洁。

代码实现

def checkio(*args):
    return max(args)-min(args) if args else 0

#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
    def almost_equal(checked, correct, significant_digits):
        precision = 0.1 ** significant_digits
        return correct - precision < checked < correct + precision
        
    print('Example:')
    print(checkio(1, 2, 3))
    
    assert almost_equal(checkio(1, 2, 3), 2, 3), "3-1=2"
    assert almost_equal(checkio(5, -5), 10, 3), "5-(-5)=10"
    assert almost_equal(checkio(10.2, -2.2, 0, 1.1, 0.5), 12.4, 3), "10.2-(-2.2)=12.4"
    assert almost_equal(checkio(), 0, 3), "Empty"
    print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")

大神解答

大神解答 NO.1
def checkio(*args):
    return len(args) and max(args) - min(args)
大神解答 NO.2
def checkio(*args):
    return float(sorted(args)[-1])-float(sorted(args)[0]) if len(args) != 0 else 0
大神解答 NO.3
def checkio(*args):
    args = list(args)
    if len(args)==0: return 0
    return max(args)-min(args)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT.BOB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值