for i in range(3):
print(i)
# if i == 2:
# continue
else:
print("hello world")
"""输出:
0
1
2
hello world
"""
在if/else结构里,else的意思是:如果没执行前面那块语句,那就执行else块。在try/except/else结构里,else也是这个意思:如果没有异常需要处理,那就执行这块语句。奇怪的是,for/else中程序做完整个for循环之后,竟然会执行else块里的内容。
另外for循环对象为空时,也不会运行else
# 会输出:hello world
for i in range(3):
print(i)
if i == 2:
continue
else:
print("hello world")
# 不会输出:hello world
for i in range(3):
print(i)
if i == 2:
break
else:
print("hello world")
# 不会输出:hello world
for i in []:
print(i)
else:
print("hello world")
所以不建议使用for/else 的原因就有了两点:
1,else使用含义不同于其他地方;
2,循环对象是否为空会影响else的运行;
为什么会出现for/else呢?
设计初衷是想让你利用它实现搜索逻辑。但这种通常使用函数更利于理解
例如:
# 判断两个数是否互质(也就是除了1之外,是不是没有别的数能够同时整除它们)
a = 4
b = 9
for i in range(2, min(a, b) + 1):
print(i)
if a % i == 0 and b % i == 0:
print("not coprime")
else:
print("coprime")
"""
2
3
4
coprime
"""
# 使用函数替代更利于理解
def coprime(a, b):
for i in range(2, min(a, b) + 1):
print(i)
if a % i == 0 and b % i == 0:
return False
return True