美文网首页python3自写小工具
python3求和小工具:给定开始结尾数字及步长,以步长为间隔,

python3求和小工具:给定开始结尾数字及步长,以步长为间隔,

作者: AmanWang | 来源:发表于2020-09-03 08:51 被阅读0次

说明

给定起始数,结尾数及步长,计算从起始数开始,以步长为间隔,到结尾数为止的所有数字的和,可以指定保留结果小数位数
startNum:起始数字
endNum:结尾数字
step:步长,必须为大于等于0的实数,否则默认为1
decimalLen:结果中保留的小数位数,只能设置0或正整数,否则默认使用startNum, endNum, step三者中最大的小数位数

源码

# 给定起始数,结尾数及步长,计算从起始数开始,以步长为间隔,到结尾数为止的所有数字的和,可以指定保留结果小数位数
def mySum(startNum, endNum, step, decimalLen=-1):
    # 传参类型不对时直接返回false
    if not isinstance(startNum, (int, float)) or not isinstance(endNum, (int, float)) or not isinstance(step, (
    int, float)):
        return False

    # 保留小数位数decimalLen如果设置的不是0或者正整数,默认都使用startNum, endNum, step三个参数中最大的小数位数
    if not isinstance(decimalLen, int) or decimalLen < 0:
        decimalLen_startNum, decimalLen_endNum, decimalLen_step = 0, 0, 0
        decimalLen_startNum_list = str(startNum).split('.')
        decimalLen_endNum_list = str(endNum).split('.')
        decimalLen_step_list = str(step).split('.')
        if len(decimalLen_startNum_list) == 2:
            decimalLen_startNum = len(decimalLen_startNum_list[1])
        if len(decimalLen_endNum_list) == 2:
            decimalLen_endNum = len(decimalLen_endNum_list[1])
        if len(decimalLen_step_list) == 2:
            decimalLen_step = len(decimalLen_step_list[1])
        decimalLen = max([decimalLen_startNum, decimalLen_endNum, decimalLen_step])
    
    # 步长为0或者开始的数字大于等于结尾的数字时,返回开始数和结尾数的和
    if step == 0 or startNum >= endNum:
        sum = startNum + endNum
        if decimalLen == 0:
            sum = int(sum)
        else:
            sum = round(sum, decimalLen)
        return sum
    
    # 步长不能小于0,否则设置为默认值1
    if step < 0:
        step = 1
    sum = 0
    while True:
        sum = sum + startNum
        startNum = startNum + step
        if startNum >= endNum:
            startNum = endNum
            sum = sum + startNum
            break
    if decimalLen == 0:
        sum = int(sum)
    else:
        sum = round(sum, decimalLen)
    return sum

测试结果

# 引用
if __name__ == '__main__':
    print('结果1:',mySum(1, 10, 2))
    print('结果2:',mySum(-10, 10, 4, 3))
    print('结果3:',mySum(-10, 10, -1))
    print('结果4:',mySum(-101, 10, -1))
    print('结果5:',mySum(1, 10, 1.443))
    print('结果6:',mySum(1, 10, 1.443, 2))
    print('结果7:',mySum(1, 10, 0, 0))
    print('结果8:',mySum(4.342, 10.41221, 0))
    print('结果9:',mySum(4.342, 10.41221, 0, 2))
    print('结果10:',mySum(4.342, 10.41221, 0, 0))

# 结果
结果1: 35
结果2: 0
结果3: 0
结果4: -5096
结果5: 47.303
结果6: 47.3
结果7: 11
结果8: 14.75421
结果9: 14.75
结果10: 14

相关文章

  • python3求和小工具:给定开始结尾数字及步长,以步长为间隔,

    说明 给定起始数,结尾数及步长,计算从起始数开始,以步长为间隔,到结尾数为止的所有数字的和,可以指定保留结果小数位...

  • 算法: Array Partition i

    Array Partition i对array 排序后每次区步长为2的数字相加即可

  • Reverse Bits

    python 反转list b[:1:-1] => [begin:end:step] # 以-1为步长 bin 函...

  • python基础中的字符串切片

    字符串中,截取多个值,可以采用切片,样式为字符串名[索引头:索引尾:步长],步长默认为1。步长是索引头相加之后得到...

  • [LeetCode 141, 142, 287] 链表求环问题

    1. 技巧分析 快慢指针赛跑: 同时从表头出发, 慢指针 slow 步长为 1, 快指针 fast 步长为 2. ...

  • VBA例5 统计和求和

    如题,要求统计和求和所有“N”字符 思路: ​ 循环遍历数据区域,步长值为2,然后依次与“N”进行判断 细节:...

  • 机器学习基石笔记:Homework #1 PLA&PA相

    问题描述 程序实现 运行结果及分析 15 16 17 对比16与17的结果: 16中步长1.0,17中步长0.5,...

  • 《梯度下降法(固定步长)》

    “梯度下降法”: (1)步长为0.1时的优化结果: 梯度收敛,但没有收敛到最小值。 (2)步长为100时的优化结果...

  • 2018-12-28

    """1.获取字符字符串[下标] 字符串[开始下标:结束下标:步长]字符串[开始下标:结束下标]字符串[::步长]...

  • 步长2020

    世界东方 古都西安咸阳 这里有个名字叫―步长 步长制药 硬道理只看疗效 民族之药 中国中药领域地位相当重要 补阳还...

网友评论

    本文标题:python3求和小工具:给定开始结尾数字及步长,以步长为间隔,

    本文链接:https://www.haomeiwen.com/subject/fjowsktx.html