鱼C论坛

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

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

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


  2. nums = list(eval(input('enter numbers:')))
  3. print(nums)
  4. 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 编辑

来晚了。。。

  1. def func(ls):
  2.     lt = [1]*len(ls)
  3.     for count in range(len(ls)):
  4.         temp = ls[:]
  5.         temp.remove(temp[count])
  6.         for i in temp:
  7.             lt[count] *= i
  8.     return lt
  9. print(func([2,3,4]))
复制代码


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

使用道具 举报

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

与其 import 独占一行,还不如使用 __import__() 函数

  1. print(nums := [int(i) for i in input('请输入一个数字列表,用英文逗号隔开:').split(',')])
  2. 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 编辑

浓缩版回答:
  1. list1 = list(map(lambda x : int(x), input().split(',')))
  2. print(list1)
  3. list2 = []
  4. for i in range(len(list1)):
  5.     msum = 1
  6.     for j in range(len(list1)):
  7.         if i != j:
  8.             msum *= list1[j]
  9.     list2.append(msum)
  10. 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 | 显示全部楼层
  1. n = input('请输入一个数字列表,用英文逗号隔开(如2,3,4):')
  2. ls = [ int(i) for i in n.split(',')]
  3. ji = 1
  4. for i in ls:
  5.     ji = ji*i
  6. lt =[ji//j for j in ls]

  7. 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 编辑
  1. values=[int(i)for i in input('请输入一个数字列表,用英文逗号隔开:').split(',')]
  2. 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-5-14 04:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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