亲爱的社区,我开始学习python,并希望创建一个由5个下一个(给定数字之后)数字组成的列表,这些数字不被3(模)除。这是我的密码:
def main(N):
# print a list of 5 next numbers that are not divided by 3
l = list()
for i in range(int(N), 150):
if len(l) < 5:
if i%3==0:
l.append(i+1)
return [l]
最后我拿到了f.e print(main(99))
: >>> [100, 103, 106, 109, 112]
我还试图在if语句后面加上i+=1,但最后得到了更奇怪的结果: [101, 101, 102, 104, 104]
我做错了什么?我怎样才能纠正它?谢谢!
3条答案
按热度按时间zzlelutf1#
我会编写一个生成器,生成不可被3整除的数字和一个基数,并作为参数计算:
然后用它得到5个不能被3整除的数字:
tjjdgumg2#
5uzkadbs3#
除非有特定的理由将值限制为150,否则可以让循环运行直到列表已满。
使用
!=
操作员是关键。请注意,我返回的是结果列表,而您返回的列表仅包含必需的列表元素,这是因为您的return
项目。每个循环可以填写一次列表,也可以填写5次:
在这里,如果候选值没有通过测试(可以被3整除),我们只需向其添加一个增量。我们知道下一个号码是合格的。
最后你可以把这三个案子分开处理。这里不特别推荐,但硬编码有时是您的朋友: