Python 中的縮進錯誤

在理解 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-tw/n/128828.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
OG007的頭像OG007
上一篇 2024-10-03 23:25
下一篇 2024-10-03 23:25

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論