鱼C论坛

 找回密码
 立即注册
楼主: WangJS

小白Python练习册(11)【鱼币福利】

[复制链接]
发表于 2020-5-1 18:27:47 | 显示全部楼层
本帖最后由 March2615 于 2020-5-1 18:29 编辑
from functools import reduce


nums = list(eval(input('enter numbers:')))
print(nums)
print([reduce(lambda x, y: x*y, nums[:i]+nums[i+1:]) for i in range(len(nums))])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-1 19:43:56 | 显示全部楼层
本帖最后由 Twilight6 于 2020-5-1 20:07 编辑

来晚了。。。
def func(ls):
    lt = [1]*len(ls)
    for count in range(len(ls)):
        temp = ls[:]
        temp.remove(temp[count])
        for i in temp:
            lt[count] *= i
    return lt
print(func([2,3,4]))

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-1 21:26:17 | 显示全部楼层
本帖最后由 zltzlt 于 2020-5-1 21:39 编辑

与其 import 独占一行,还不如使用 __import__() 函数
print(nums := [int(i) for i in input('请输入一个数字列表,用英文逗号隔开:').split(',')])
print([__import__('math').prod(nums[j] for j in range(len(nums)) if j != i) for i in range(len(nums))])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-1 21:26:58 | 显示全部楼层

也可以用 math.prod()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-1 21:33:40 | 显示全部楼层
本帖最后由 liuzhengyuan 于 2020-5-1 21:38 编辑

浓缩版回答:
list1 = list(map(lambda x : int(x), input().split(',')))
print(list1)
list2 = []
for i in range(len(list1)):
    msum = 1
    for j in range(len(list1)):
        if i != j:
            msum *= list1[j]
    list2.append(msum)
print(list2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-1 21:36:08 | 显示全部楼层

C 写多了吧……Python 不用加分号

而且……没我浓缩
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-1 21:39:01 | 显示全部楼层
zltzlt 发表于 2020-5-1 21:36
C 写多了吧……Python 不用加分号

而且……没我浓缩


C++ 写多了。。。
我刚刚又删掉了几行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-2 09:34:03 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-2 17:11:49 | 显示全部楼层
鱼币嘞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 16:40:18 | 显示全部楼层
哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-3 17:00:31 | 显示全部楼层
n = input('请输入一个数字列表,用英文逗号隔开(如2,3,4):')
ls = [ int(i) for i in n.split(',')]
ji = 1
for i in ls:
    ji = ji*i
lt =[ji//j for j in ls]

print(ls,'\n',lt)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-5-3 19:26:07 | 显示全部楼层
ls=list(input("请输入n个数字以逗号分隔:").split(","))
print(ls)
r=1
lt=[]
for i in range(len(ls)):
    lta=ls.copy()
    lta.remove(ls[i])
    r=1
    for j in range(len(lta)):
        r*=int(lta[j])
    lt.append(r)
        
print(lt)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-3 19:32:55 | 显示全部楼层
每次用remove都把列表ls改变了,崩溃了都,后来在循环里加了个print(ls)才明白,就想到用copy
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-4 14:13:17 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2020-5-4 14:35 编辑
values=[int(i)for i in input('请输入一个数字列表,用英文逗号隔开:').split(',')]
print(values,list(map(__import__("math").prod(values).__floordiv__,values)),sep='\n')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-4 14:37:17 | 显示全部楼层
zltzlt 发表于 2020-5-1 21:36
C 写多了吧……Python 不用加分号

而且……没我浓缩

浓缩没什么意义吧……除了装X
而且我的不仅比你的浓缩,还比你的快哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-4 15:19:54 | 显示全部楼层
连小白都不如了 萌新好难
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-4 16:38:19 | 显示全部楼层
我看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-4 16:53:12 | 显示全部楼层
fg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-4 17:04:49 | 显示全部楼层
蹭鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 13:37:22 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 10:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表