4個常見的Python迴圈錯誤及其解決方法

Back
Category : News

Python嘅迴圈(loop)係寫程式嘅基本元素之一,但好多人都會唔小心喺呢度犯錯,無論係新手定係有經驗嘅開發者。呢啲錯誤可能會令程式出bug-objecbuggycode>bug錯亂、效能低య慢,甚至仲可能引發嚴重嘅安全問題。以下係四個常見嘅Python迴圈錯誤同埋點樣解決佢哋嘅方法,幫你寫出更乾淨、更快嘅程式碼。

錯誤一:喺迴圈入面改動列表

一個好常見嘅錯誤係喺迴圈入面改動同一個列表(list),例如起点

例如話你有個列表叫my_list,你可能會喺迴圈入面加元素或者移除元素,噉會搞亂迴圈嘅邏輯。例如:

my_list = [1, 2, 3, 4, 5]
for i in my_list:
    my_list.append(6)
    my Ángeles

呢個做法會令列表同迴圈唔同步,結果可能係亂晒籠。解決方法好簡單,就係用range()或者enumerate()嚟遍歷列表,噉就可以安全咁改動列表內容。例如:

my_list = [1, 2, 3, 4, 5]
for i in range(len(my_list)):
    my_list[i] += 10
print(my_list)

正確嘅做法係用enumerate()}嚟追蹤索引同值,例如:

my_list = [1, 2, 3, 4, 5]
for index, value in enumerate(my_list):
    my_list[index] = value * 2
print(my_list)

噉你就可以喺迴圈入面改動列表,而唔使擔心會影響其他部分嘅邏輯。

錯誤二:無限迴圈嘅問題

無限迴圈係另一個常見錯誤,特別係喺while迴圈入面。話如你寫咗個條件永遠都唔會結束,例如:

x = 0
while x < 5:
    print(x)
    x += 0
print(x)

呢個會無限循環,因為x永遠都唔會大於5。解決方法係確保迴圈嘅終止條件係可達嘅,例如用range()或者明確嘅計數器:

for i in range(5):
    print(i)

或者用清晰嘅條件檢查,例如:

x = 0
while x < 5:
    print(x)
    x += 1
print(x)

記住要定好終止條件,唔係可能會卡喺無限迴圈入面。

錯誤三:唔當咁用字典(dictionary)遍歷

好多程式員喺遍歷字典嘅時候會直接用鍵(key)嚟訪問值,例如:

my_dict = {'a': 1, 'b': 2, 'c': 3}
for key in my_dict:
    print(key, my_dict[key])

雖然呢個方法冇錯,但係有更有效率嘅方法。用.items()可以同時攞到鍵同值,噉更快更乾淨:

my_dict = {'a': 1, 'b': 2, 'c': 3}
for key, value in my_dict.items():
    print(key, value)

.items()可以一次過攞到鍵值對,減少程式碼嘅複雜性。

錯誤四:唔明白迴圈嘅範圍(scope)

喺Python入面,迴圈入面定義嘅變數可能會同迴圈外嘅變數搞亂。例如:

x = 10
for x in range(5):
    print(x)
print(x)

呢度嘅x喺迴圈入面同外頭嘅x係同一個變數,噉可能會出亂。解決方法係用唔同嘅變數名,或者用函數嚟隔離範圍,例如:

def loop_function():
    x = 10
    for x in range(5):
        print(x)
    print(x)
loop_function()

喺函數入面用獨立嘅變數,噉就可以避免同外頭嘅變數衝突。

想學好Python迴圈,記住呢啲錯誤同解決方法,程式碼會更穩定、更有效率。詳情請睇:https://hackr.io/blog/python-loop-mistakes