over 3 years ago

Avoid else Blocks After for and while Loops

以前寫過Python 慣用語 - 9 loop 可以有 else這篇文章,但是 Effective Python 作者不贊同使用,他認為使用該語法容易讓人誤解,他反而認為使用 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))
← Effective Python 心得筆記: Item 11 Effective Python 心得筆記: Item 13 →
 
comments powered by Disqus