Python中的缩进错误

Python中的缩进错误

在理解Python中的缩进问题之前,让我们简要了解一下Python编程语言。

什么使Python与其他编程语言不同

Python中的缩进错误

  • Python是一种解释性、高级、面向对象的编程语言,具有动态语义。
  • 与其他编程语言相比,它具有非常简单的语法,易于实现。
  • 使用Python,程序员可以专注于逻辑构建,而不是记住语法或在编码中遇到问题。
  • 它是一种动态而智能的高级语言,在各种用户中广泛使用。
  • 我们将Python编程语言的语法与其他编程语言进行比较,如CC++、Java等这些遵循特定语法的语言。对于每个代码块,都有开放和闭合的大括号。
  • 但是在Python中,我们将遵循适当的缩进规则。
  • 缩进是指在开始特定的代码块时正确使用空格。
  • 它并不太复杂,也不过于关注语法。
  • 它比其他编程语言更快速、高效。
  • Python代码可以很容易地实现、编写和执行。

现在让我们讨论Python中的缩进概念。

Python编程语言中的缩进是什么

Python中的缩进错误

  • 缩进是指在Python编程语言中的任何语句、方法和代码块的开头实现正确的空格和制表位。
  • 由于这些缩进,我们可以很容易地识别任何条件循环、函数、if-else语句等的起始点和终点。
  • 假设我们观察C、C++和Java等其他编程语言。在这种情况下,使用小括号和大括号以及分号来指定特定的代码块和标识特定的语句。
  • 但在Python中,我们不需要关心分号和不同的括号语法。
  • 在C中没有空格的重要性。其他编程语言或编译器将忽略所有的空格和注释,在词法阶段本身会忽略,因此无法生成语法错误。
  • 所有空白字符的角色都很重要;如果一个代码块以应用空格开始,它必须以同样的缩进结束。
  • 所有语句必须具有相同数量的空格或制表符,以便屏幕左侧的距离属于同一代码块。如果块需要进一步嵌套,它会缩进到右侧。
  • 假设我们观察Python编程语言。在这种情况下,没有主函数的概念,我们与其他编程语言进行了比较。它们都具有主函数的概念,在其他函数执行之后执行。如果主函数调用其他函数,指针将指向执行其他函数,然后返回到主函数。
  • 由于缩进,决定初始缩进的块是主函数的主体。如果有其他功能,则初始缩进的块将调用该功能。附加功能的缩进与主体也不同,以便编译器可以区分主体和派生函数的块。

在Python编程语言中使用的一些基本缩进规则

  • 在开始和结束任何代码块时,必须保持特定代码块的适当缩进。
  • 程序员可以使用反斜杠将缩进拆分成多行。
  • 如果没有维护适当的缩进的块,Python编译器将抛出缩进错误。
  • 对于程序员来说,遵循缩进规则的一致性在代码太大或包含大量代码行时相当困惑。
  • 但是缩进帮助我们使用简单的语法来实现代码,而不是在其他编程语言中为每个代码块应用括号。
  • 它不仅对我们来说很容易,而且还节省了我们的时间,减少了代码行数;因此,速度增加,执行时间减少。
  • 特定块代码的空格数已经固定。如果我们使用嵌套的条件语句,则根据子子语句的规则增加空格数。

Python中缩进错误是如何发生的

如果我们根据某种逻辑编写了一段代码行来获得所需的结果,但同时我们遵循了以上的缩进规则。编译器将生成一个缩进错误。

让我们通过一个示例来理解 –

Python中的缩进错误

在上图中,如果我们观察到其中提到了Python如何识别每个代码块。

正如我们在这个图中所注意到的,每个代码块的缩进是从左上角到语句开始的空格计算。每当特定的代码块开始时,它将遵循缩进。首先,它将保持适当的空格和制表符,直到该块结束。如果在该特定块内包括一个嵌套块,它将为该嵌套块分配空格,直到该嵌套块结束。

这样,在Python编程语言中,块的缩进匹配。

当特定块没有结束,或者为开始代码块分配的空格数不同的时候,就会发生缩进错误。当块结束时,最终会发生缩进错误。

上图的描述

  • 在上图中,将执行语句一。然后,指针将指向“if语句”并检查条件;如果条件为真,则进入该块并进入嵌套的if-else块。
  • 再次在嵌套的if语句中,它将检查条件,如果条件为真,则执行下一条语句。
  • 这样,语句的执行将继续进行,现在,如果我们取一个块失败的情况,它将不会进入嵌套的if-else块。它直接退出所有块,执行与块1、初始块匹配的最终语句。

    现在让我们看看具有缩进错误的图示。

Python中的缩进错误

上述提到的图表中明显存在缩进错误,因为第2个块的缩进与起始和结束点的空格不匹配。块2的开头将包含0个空格,但结束时则包含2个空格,这将导致错误。

现在产生了一个疑问,即如果块2在块3下面作为块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

上述程序的输出:

Python中的缩进错误

示例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

上述程序的输出:

Python中的缩进错误

示例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)  

上面程序的输出:

Python中的缩进错误

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程