当前位置: 移动技术网 > IT编程>脚本编程>Python > python练习06_20200809(实现四舍五入&reduce函数)

python练习06_20200809(实现四舍五入&reduce函数)

2020年08月10日  | 移动技术网IT编程  | 我要评论
1、实现四舍五入,禁止使用python内建函数。
func(soure_num, precise),source_num为需要处理的数据,precise为需要保留的位数,\
例如:a=45.3546,func(a, 1),返回结果为45.4,func(a, 2)返回结果为45.35
def new_round(number, precise=0):

    digit = 10 ** precise
    num2 = float(int(number * digit))
    print(digit, num2)

    # 找出四舍五入位的数字
    find_index = str(number).find('.')
    tag = str(number)[find_index + precise + 1]

    # 此数与5判断
    if number >= 0:
        if int(tag) >= 5:
            return (num2 + 1) / digit
        else:
            return num2 / digit
    else:
        if int(tag) >= 5:
            return (num2 - 1) / digit
        else:
            return num2 / digit


a = 45.3546
b = 2
print('原数字为{},保留小数点后{}位,四舍五入的结果是{}'.format(a, b, new_round(a, b)))

2、实现reduce的功能,请自行百度内建函数reduce的功能。

reduce() 函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:
用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,
得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
reduce(f,[x1,x2,x3,x4,x5]) = f(f(f(f(x1,x2),x3),x4),x5)

reduce(function, iterable[, initializer])
function -- 函数,有两个参数
iterable -- 可迭代对象
initializer -- 可选,初始参数
def test_reduce(function, iterable, initializer=None):
    it = iter(iterable)
    if initializer is None:
        value = next(it)
    else:
        value = initializer
    for element in it:
        value = function(value, element)
    return value


print(test_reduce(lambda x, y: x + y, range(5), 8))

参考链接:https://docs.python.org/3.8/library/functools.html

本文地址:https://blog.csdn.net/passion_for_life/article/details/107899604

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网