在理解 python 中的縮進問題之前,讓我們看一下關於 python 編程語言的簡介。
python 區別於其他編程語言的地方是什麼?
- Python 是一種解釋的高級面向對象編程語言,具有動態語義。
- 它有一個非常簡單的語法,,並且與其他編程語言相比非常容易實現。
- 使用 python,程序員可以專註於邏輯構建,而不是記住語法或面臨在編碼中實現邏輯的問題。
- 它是一種動態而智能的高級語言,在各種用戶中使用最為廣泛。
- 我們將 python 編程語言語法與其他編程語言進行比較,如 C、C++、Java、以及更多遵循特定語法的語言。對於每個代碼塊,都有左大括號和右大括號。
- 但是在 python 中,我們將遵循適當的縮進規則。
- 縮進是指在開始一個特定的代碼塊時,空格的適當參與。
- 它不太複雜,也不太注重語法。
- 它比其他編程語言更快更有效。
- Python 代碼可以很容易地實現和編寫,並且很容易執行。
現在讓我們討論 python 中縮進的概念。
Python 編程語言中的縮進是什麼?
- 縮進是指在 python 編程語言中的任何語句、方法和代碼塊開始時實現適當的空格和製表符。
- 由於這些縮進,我們可以很容易地識別任何條件循環、函數、
If-else
語句等的起點和終點。 - 假設我們觀察其他編程語言,如 C、C++和 Java。在這種情況下,使用小括號和大括號以及分號來指定特定的代碼塊和標識特定的語句。
- 但是在 python 中,我們不會關心在語法中使用分號和不同的大括號。
- c 語言中沒有空格的重要性,其他編程語言或者編譯器會忽略所有的空格和注釋,在詞法階段本身,在開始階段;因此,它不會產生語法錯誤。
- 所有空白空間的作用都很重要;如果一個代碼塊通過應用空格開始,它必須在相同的縮進處結束。
- 所有語句必須具有相同數量的空格或製表符,以便屏幕左側的距離屬於同一代碼塊。如果一個塊必須嵌套得更深,它將進一步向右縮進。
- 假設我們用 python 編程語言觀察。在這種情況下,沒有主函數的概念,因為我們將其與其他編程語言進行了比較。它們都有一個主函數的概念,在其他函數之後執行。如果主函數調用另一個函數,指針將指向執行其他函數並再次返回主函數。
- 由於縮進,決定了最初縮進的塊是主函數的主體。如果有其他函數,那麼初始縮進塊將調用該函數。附加函數的縮進也不同於主體,這樣編譯器可以區分主函數和派生函數的塊。
Python 編程語言中使用的一些基本縮進規則
- 在開始和結束任何代碼塊時,必須維護特定代碼塊的適當縮進。
- 程序員可以通過使用反斜杠將縮進分成多行。
- 如果任何沒有保持適當縮進的塊,python 編譯將拋出縮進錯誤。
- 如果代碼太大或包含大量代碼行,遵循縮進規則的一致性對程序員來說是非常混亂的。
- 但是縮進可以幫助我們使用簡單的語法來實現代碼,而不是像在其他編程語言中那樣,為每個代碼塊應用括號。
- 不僅對我們來說很容易,而且節省了我們的時間,減少了代碼的行數;因此,最終速度會提高,執行速度會降低。
- 特定代碼塊的空白數量已經固定。如果我們使用嵌套的條件語句,那麼根據 sub sub 語句的規則,空格的數量會增加。
Python 中縮進錯誤是如何出現的?
如果我們根據某種邏輯編寫某一行代碼以獲得期望的結果,但同時,我們遵循上述縮進規則。編譯器將生成縮進錯誤。
讓我們藉助一個例子來理解-
在上圖中,如果我們觀察到提到 python 如何識別每個代碼塊。
正如我們將在這個圖中注意到的,每個塊的縮進是從語句的左上角到開始的空格的計算。每當特定代碼塊開始時,它將跟隨縮進。一開始,無論何時區塊開始,直到區塊結束,它都會保持適當的空格和製表符。如果在這種情況下,該特定塊內部包含嵌套塊,它將為其分配空白,直到該嵌套塊結束。
這樣,在 python 編程語言中,塊的縮進匹配。
每當特定塊沒有結束,或者為開始代碼塊分配的空白數不同時,就會出現縮進錯誤。在塊結束的同時,最終會出現縮進錯誤。
上圖描述-
- 在上圖中,將執行語句一。然後,指針將指向「
if
語句」並檢查條件;如果條件為真,它將進入塊並進入嵌套的 if-else 塊。 - 同樣在嵌套的
if
語句中,它將檢查條件是否為真,然後執行下一條語句。 - 這樣,語句的執行就會進行下去,現在;如果我們以塊失敗為例,它將不會進入嵌套的 if-else 塊。它直接從所有塊中退出,最後的語句將執行,它與塊 1,初始塊相匹配。
現在讓我們看看有縮進錯誤的圖-
上面提到的圖顯然有縮進錯誤,因為塊 2 縮進與起點和終點空格不匹配。塊 2 的開頭將包含 0 個空格,但是當它結束時,它包含 2 個空格,這將產生一個錯誤。
現在出現了一個疑問,如果塊 3 下面的塊 2 可以作為塊 4 的嵌套塊,那麼它不會產生縮進錯誤,那麼這個疑問的答案是否定的,因為塊 4;與塊 3 相比,塊 3 下方的嵌套塊將具有更多空白。畢竟,它嵌套在塊 3 中。第二個原因是 python 解釋器會找到塊 2 的結尾,但它無法從塊 2 中檢測到匹配的空格;因此,它會產生縮進錯誤。
如何修復 python 編程語言中的縮進錯誤?
修復縮進錯誤時,必須記住以下幾點:
正如我們前面所看到的,縮進錯誤的發生僅僅是由於不匹配的空格和製表符;因此,我們需要修復所有的空格和標籤。
- 首先,您需要找到特定代碼行中的錯誤。
- 之後,檢查那一行中的空格數,並檢測那一行所在的代碼塊。
- 通過計算在該塊的開始和結束處使用的空白數,將該塊的縮進與該塊的結束和開始點匹配。
- 儘管如此,如果錯誤沒有被解決,通過使用計算空格和製表符的相同方法,將每個代碼塊的縮進與另一個相應的代碼塊匹配。
- 此外,您還可以藉助正在使用的編輯器來檢查所使用的空格和製表符的數量,並且通過找出所使用的不必要的空格,您可以很容易地從中檢測出來。
Python 中縮進的優勢
- 縮進在 python 中用於表示某個代碼塊,但在其他編程語言中,它們指的是各種括號。由於縮進,代碼看起來更高效,結構更美觀。
- python 編程語言中使用的縮進規則非常簡單;甚至程序員也希望他們的代碼可讀。
- 此外,縮進通過漂亮的結構提高了代碼的效率和可讀性。
Python 中縮進的缺點
- 由於在縮進中使用了空格,當有很多行代碼時,有時修復縮進錯誤是一項非常困難的任務。
- 各種流行的編程語言,如 C、C++、Java,都使用大括號進行縮進,因此來自發達世界另一端的任何人都很難適應使用空格進行縮進的想法。
Python 縮進錯誤示例:
例 1:
# Python program to find the maximum out of two numbers:
def max(x,y): # max function will return the maximum among the two numbers
if(x>y):
return x
else:
return y
a = int(input("Enter a number: "))
b = int(input("Enter another number: "))
print("Finding the Maximum out of a:", a ,"and b:", b)
c=max(a,b) # calling the max function
print(c,"is maximum") # printing the result
上述程序的輸出:
IndentationError: expected an indented block
例 2:
# Python program to find the maximum out of three numbers:
def max(x,y,z): # max function will return the maximum among the three numbers
if(x>y):
if(x>z):
return x
else: # Nested if else block
return z
else:
if(y>z):
return y
else:
return z
a = int(input("Enter first number: "))
b = int(input("Enter second number: "))
c = int(input("Enter third number: "))
print("Finding the Maximum out of a:", a ,"and b:", b, "and c:",c)
d=max(a,b,c) # calling the max function
print(d,"is maximum") # printing the result
上述程序的輸出:
IndentationError: expected an indented block
例 3:
# Python program to calculate the grade from the given result of a student:
# Grade function is used to obtain the corresponding grade from the given result
def grade(x):
if(x>=95):
return 'A+'
elif(90<=x<95):
return 'A'
elif(85<=x<90):
return 'B+'
elif(80<=x<85):
return 'B'
elif(70<=x<80):
return 'B-'
elif(60<=x<70):
return 'C'
elif(40<=x<60):
return 'D'
else:
return 'FAIL'
a=int(input("Enter total marks of a student: "))
print("Finding the grade obtained by a student from the given marks: ")
g=grade(a)
# Printing the result
print("Result of a student having marks:",a,"obtained grade is:",g)
上述程序的輸出:
IndentationError: expected an indented block
現在修復 python 程序上面例子中的縮進錯誤:
例 1:
# Python program to find the maximum out of two numbers:
def max(x,y): # max function will return the maximum among the two numbers
if(x>y):
return x
else:
return y
a = int(input("Enter a number: "))
b = int(input("Enter another number: "))
print("Finding the Maximum out of a:", a ,"and b:", b)
c=max(a,b) # calling the max function
print(c,"is maximum") # printing the result
上述程序的輸出:
例 2:
# Python program to find the maximum out of three numbers:
def max(x,y,z): # max function will return the maximum among the three numbers
if(x>y):
if(x>z):
return x
else: # Nested if else block
return z
else:
if(y>z):
return y
else:
return z
a = int(input("Enter first number: "))
b = int(input("Enter second number: "))
c = int(input("Enter third number: "))
print("Finding the Maximum out of a:", a ,"and b:", b, "and c:",c)
d=max(a,b,c) # calling the max function
print(d,"is maximum") # printing the result
上述程序的輸出:
例 3:
# Python program to calculate the grade from the given result of a student:
# Grade function is used to obtain the corresponding grade from the given result
def grade(x):
if(x>=95):
return 'A+'
elif(90<=x<95):
return 'A'
elif(85<=x<90):
return 'B+'
elif(80<=x<85):
return 'B'
elif(70<=x<80):
return 'B-'
elif(60<=x<70):
return 'C'
elif(40<=x<60):
return 'D'
else:
return 'FAIL'
a=int(input("Enter total marks of a student: "))
print("Finding the grade obtained by a student from the given marks: ")
g=grade(a)
# Printing the result
print("Result of a student having marks:",a,"obtained grade is:",g)
上述程序的輸出:
原創文章,作者:OG007,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/128828.html