【发布时间】:2020-10-13 02:20:28
【问题描述】:
我在 Python 上)我必须使用 filter() 创建一个从 1 到 100(含)的所有数字的列表,这些数字可以被 7、9 和 42 整除。但是,当我开始编写这段代码时它,它没有给我正确的解决方案。你知道问题出在哪里吗?
listnumbers = []
for x in range (1, 101):
x = str(x)
listnumbers.append(x)
print (listnumbers)
def dividable(k):
for t in k:
if int(t) % 7 == 0:
return True
if int(t) % 9 == 0:
return True
if int(t) % 42 == 0:
return True
else:
return False
return dividable
s2u = list(filter(dividable, listnumbers))
for q in s2u:
print(q)
【问题讨论】:
-
您将数字转换为字符串是否有原因?有这个要求吗?
-
return dividable应该做什么?就此而言,您是否知道您的for循环只会执行一次迭代? -
不,我试图纠正指示的错误,但我可能搞砸了代码..
-
传递给
filter的函数应该采用单个值(数字)并返回True或False。您不需要在其中使用for循环。 -
不,
filter()将列表中的每个值一一传递给函数。