Discuss / Python / 接收一个或多个数并计算乘积

接收一个或多个数并计算乘积

Topic source

ywjco_567

#1 Created at ... [Delete] [Delete and Lock User]
# !/usr/bin/python3
# -*-coding:UTF-8-*-
# FileName: func_product.py

def product(*args):
    '''接收一个或多个数并计算乘积'''
    sum = 1
    if len(args) == 0:
        raise TypeError('参数不能为空, 否则没有意义!')
    for i,v in enumerate(args):
        if not isinstance(v,(int,float)):
            raise TypeError('参数不是int 或 float 类型。')
        sum *= v

    return sum

if __name__ == '__main__':
    # 测试
    print('product(5) =', product(5))
    print('product(5.5, 6) =', product(5.5, 6))
    print('product(5, 6, 7) =', product(5, 6, 7))
    print('product(5, 6, 7, 9) =', product(5, 6, 7, 9))
    if product(5.0) != 5.0:
        print('product(5)测试失败!')
    elif product(5, 6) != 30:
        print('product(5, 6)测试失败!')
    elif product(5, 6, 7) != 210:
        print('product(5, 6, 7)测试失败!')
    elif product(5, 6, 7, 9) != 1890:
        print('product(5, 6, 7, 9)测试失败!')
    else:
        try:
            product()
            print('空参数测试失败!')
        except TypeError:
            print('空参数测试成功!')
            
        try:
            product('a')
            print('参数类型测试失败!')
        except TypeError:
            print('参数类型测试成功!')

product(5) = 5

product(5.5, 6) = 33.0

product(5, 6, 7) = 210

product(5, 6, 7, 9) = 1890

空参数测试成功!

参数类型测试成功!

邢念行知

#2 Created at ... [Delete] [Delete and Lock User]
 for i,v in enumerate(args):
        if not isinstance(v,(int,float)):
            raise TypeError('参数不是int 或 float 类型。')
        sum *= v

大神能说说为啥是for i,v 两个参数吗,我大概能理解,请详细指教下,谢谢~

把enumerate()函数去掉    并把i去掉    结果是一样的

enumerate()函数返回的 是数组下标和对应的元组的值

>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']

>>> list(enumerate(seasons))

[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]

>>> list(enumerate(seasons, start=1))

# 下标从 1 开始

[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]


  • 1

Reply