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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

suxiaorui

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

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

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

打赏作者

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

抵扣说明:

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

余额充值