python-列表的乘积

乘积的列表(10分)

题目内容:

给定一个包含若干个整数的列表alist,要求返回输出列表blist,blist中的元素为除与alist对应位置上的元素之外其余各元素的乘积。

 

输入格式:

共一行,列表中的元素以空格隔开。

 

输出格式:

共一行,为一个列表。

 

输入样例:

1 2 3

 

输出样例:

[6, 3, 2]

(注:原列表的1,对应输出6=2*3,原列表的2,对应输出3=1*3,原列表的3,对应输出2=1*2)

时间限制:500ms内存限制:32000kb

程序1:

def PySum(alist):

    x=1

    list1 = list()

    list2 = list()

    for i in range(len(alist)):

        for j in range(len(alist)):

            if i == j:

                continue

            else:

                list1.append(alist[j])

        for k in list1:

            x *= k

        list2.append(x)

        list1 = []

        x=1

    return list2

alist = list(map(int,input().split()))

blist = PySum(alist)

print(blist)

程序2:

alist=list(map(int,input().split()))
blist=[]
for a in alist:
    tlist=alist[:]
    tlist.remove(a)
    m=1
    for t in tlist:
        m=m*t
    blist.append(m)
print(blist)

程序3:

alist=list(map(int,input().split()))
m=1 #所有非0数的乘积
z=0 #统计0的个数
for a in alist:
    if a!=0:
        m=m*a
    else:
        z=z+1
blist=[]
for a in alist:
    if z>1: #2个以上0 输出全为0
        blist.append(0)
    elif z==1 and a!=0: #1个0 当前数据非0
        blist.append(0)
    elif z==1: #1个0 当前数据是0
        blist.append(m)
    else: #没有0的情况
        blist.append(m//a)
print(blist)

 

你可能感兴趣的:(Python)