鱼C论坛

 找回密码
 立即注册
查看: 1474|回复: 6

[已解决]求助各位大佬

[复制链接]
发表于 2023-6-23 11:24:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问问各位大佬们为什么这题选A不选B啊 我试了一下B的值跟A一样的,感谢回复w
133、已知函数定义如下,则求100以内能被3或5整除的数的个数,可以采用(        )。
g=lambda x:1 if x%3==0 or x%5==0 else 0

A、 sum([g(i) for i in range(1,100)])
B、 sum(g(i) for i in range(1,100))
C、 sum([i for i in range(1,100) if g(i)==1])
D、 以上均不是
答案: A
最佳答案
2023-6-23 11:25:50
在给定的问题中,我们需要计算100以内能被3或5整除的数的个数。我们已经给出了一个函数g,该函数返回1(True)如果给定的数可以被3或5整除,否则返回0(False)。

选项A、B、C都是使用列表推导式和sum函数来计算满足条件的数的个数。让我们逐个分析选项:

A选项:sum([g(i) for i in range(1,100)])
这个选项使用了列表推导式,在范围1到99内对每个数调用了函数g。列表推导式生成一个由0和1组成的列表,其中1代表满足条件,0代表不满足条件。然后使用sum函数对列表中的元素求和,得到满足条件的数的个数。

B选项:sum(g(i) for i in range(1,100))
这个选项使用了生成器表达式,与A选项类似,对范围1到99内的每个数调用了函数g。生成器表达式生成一个迭代器,而不是立即创建一个列表。然后使用sum函数对迭代器中的元素求和。

C选项:sum([i for i in range(1,100) if g(i)==1])
这个选项使用了条件判断来筛选出满足条件的数,并将它们放入列表中。然后使用sum函数对列表中的元素求和。

根据题目中给出的函数g的定义,无论是A选项、B选项还是C选项,它们都可以正确计算100以内能被3或5整除的数的个数。但是题目要求选择一个选项,因此答案是A选项。

因此,选择A选项sum([g(i) for i in range(1,100)])来计算100以内能被3或5整除的数的个数是正确的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-23 11:25:50 | 显示全部楼层    本楼为最佳答案   
在给定的问题中,我们需要计算100以内能被3或5整除的数的个数。我们已经给出了一个函数g,该函数返回1(True)如果给定的数可以被3或5整除,否则返回0(False)。

选项A、B、C都是使用列表推导式和sum函数来计算满足条件的数的个数。让我们逐个分析选项:

A选项:sum([g(i) for i in range(1,100)])
这个选项使用了列表推导式,在范围1到99内对每个数调用了函数g。列表推导式生成一个由0和1组成的列表,其中1代表满足条件,0代表不满足条件。然后使用sum函数对列表中的元素求和,得到满足条件的数的个数。

B选项:sum(g(i) for i in range(1,100))
这个选项使用了生成器表达式,与A选项类似,对范围1到99内的每个数调用了函数g。生成器表达式生成一个迭代器,而不是立即创建一个列表。然后使用sum函数对迭代器中的元素求和。

C选项:sum([i for i in range(1,100) if g(i)==1])
这个选项使用了条件判断来筛选出满足条件的数,并将它们放入列表中。然后使用sum函数对列表中的元素求和。

根据题目中给出的函数g的定义,无论是A选项、B选项还是C选项,它们都可以正确计算100以内能被3或5整除的数的个数。但是题目要求选择一个选项,因此答案是A选项。

因此,选择A选项sum([g(i) for i in range(1,100)])来计算100以内能被3或5整除的数的个数是正确的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-23 11:30:53 From FishC Mobile | 显示全部楼层
陶远航 发表于 2023-6-23 11:25
在给定的问题中,我们需要计算100以内能被3或5整除的数的个数。我们已经给出了一个函数g,该函数返回1(Tru ...

那既然ABC都可以 是不是因为A放在最前面所以选它?如果把A 的内容换成B的内容 是不是也是选A
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-23 11:53:06 | 显示全部楼层
你这个题目不太好,其实正常编程的话B选项是比A选项那种写法更好的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-23 12:13:10 | 显示全部楼层
gslytherinap 发表于 2023-6-23 11:30
那既然ABC都可以 是不是因为A放在最前面所以选它?如果把A 的内容换成B的内容 是不是也是选A

不,选项A被选为正确答案的原因不是因为它放在最前面,而是因为它使用了列表推导式,并且在每个数上都调用了函数g。选项B使用生成器表达式的方式,也是可以得到正确结果的,但在给定的选项中,A更加直接和清晰地表达了问题的要求。

如果将选项A的内容换成B的内容,即将A选项改为sum(g(i) for i in range(1,100)),那么它依然是可以得到正确结果的,因为这两种表达方式是等价的。在这个特定的问题中,无论选择A选项还是B选项,都可以正确计算100以内能被3或5整除的数的个数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-23 13:05:53 | 显示全部楼层
陶远航 发表于 2023-6-23 12:13
不,选项A被选为正确答案的原因不是因为它放在最前面,而是因为它使用了列表推导式,并且在每个数上都调 ...

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

使用道具 举报

 楼主| 发表于 2023-6-23 13:11:10 | 显示全部楼层
isdkz 发表于 2023-6-23 11:53
你这个题目不太好,其实正常编程的话B选项是比A选项那种写法更好的

我也不理解为什么要出这种争议题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 17:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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