乘积的列表(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)