gslytherinap 发表于 2023-6-23 11:24:45

求助各位大佬

问问各位大佬们为什么这题选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()
B、 sum(g(i) for i in range(1,100))
C、 sum()
D、 以上均不是
答案: A

陶远航 发表于 2023-6-23 11:25:50

在给定的问题中,我们需要计算100以内能被3或5整除的数的个数。我们已经给出了一个函数g,该函数返回1(True)如果给定的数可以被3或5整除,否则返回0(False)。

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

A选项:sum()
这个选项使用了列表推导式,在范围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()
这个选项使用了条件判断来筛选出满足条件的数,并将它们放入列表中。然后使用sum函数对列表中的元素求和。

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

因此,选择A选项sum()来计算100以内能被3或5整除的数的个数是正确的。

gslytherinap 发表于 2023-6-23 11:30:53

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

那既然ABC都可以 是不是因为A放在最前面所以选它?如果把A 的内容换成B的内容 是不是也是选A

isdkz 发表于 2023-6-23 11:53:06

你这个题目不太好,其实正常编程的话B选项是比A选项那种写法更好的

陶远航 发表于 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整除的数的个数。

gslytherinap 发表于 2023-6-23 13:05:53

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

噢噢!谢谢大佬!!!

gslytherinap 发表于 2023-6-23 13:11:10

isdkz 发表于 2023-6-23 11:53
你这个题目不太好,其实正常编程的话B选项是比A选项那种写法更好的

我也不理解为什么要出这种争议题{:10_266:}
页: [1]
查看完整版本: 求助各位大佬