β

Effective Python 心得筆記: Item 12

Python Life 52 阅读

Avoid else Blocks After for and while Loops

作者不贊同 Python 慣用語 - 9 loop 可以有 else 這篇的觀點,認為使用該與法容易讓人誤解,他反而認為使用 flag 是比較好的作法。

a = 4
b = 9

for i in range(2, min(a, b) + 1):
    print('Testing', i)
    if a % i == 0 and b % i == 0:
        print('Not coprime')
        break
else:
    print('Coprime')

雖然書上認為使用 flag 或是寫成函式都較 loop else 來得清楚簡單,但其實函式才是最好的選擇,既避免使用 flag 也不必用到 loop else 語法。

def coprime(a, b):
    for i in range(2, min(a, b) + 1):
        if a % i == 0 and b % i == 0:
            return False
    return True
print(coprime(4, 9))
print(coprime(3, 6))
作者:Python Life
原文地址:Effective Python 心得筆記: Item 12, 感谢原作者分享。