如何解决在列表理解中使用带有for循环的break和else条件语句
如何根据条件打破列表理解中的循环并在其后使用else块?
这是我想在列表理解中转换的代码:
x=int(input("Enter a number : "))
for i in range(2,x+1):
for j in range(2,i):
if i%j==0:
break
else:
print(i)
#this program prints all prime numbers upto x.
我的尝试:
x=int(input())
def end_loop():
raise stopiteration
prime=list(i for i in range(2,x+1) for j in range(2,i) end_loop() if i%j==0 )
print(prime)
输出:
SyntaxError
必需的输出:
All prime numbers upto x
我更喜欢:
⏺️One班轮
⏺️Purepython
解决方法
技巧是考虑for
循环要检查的条件,然后考虑表达它的不同方式。在这种情况下,循环正在测试以查看i
值中的any
是否可被j
整除:
print([
i for i in range(2,int(input("Enter a number : ")) + 1)
if not any(i % j == 0 for j in range(2,i))
])
请注意,您只能说not any(i % j == 0 ...
而不是all(i % j ...
!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。