Python 구문 오류 및 예외 처리

PythonBeginner
지금 연습하기

소개

Python 구문 오류 및 예외 랩에 오신 것을 환영합니다! 이 랩에서는 Python 코드에서 구문 오류를 식별하고 수정하는 방법과 코드 실행 중에 발생할 수 있는 예외를 처리하는 방법을 배우게 됩니다.

성과

  • 구문 오류 (Syntax Errors)
  • 예외 (Exceptions)
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 100%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

구문 오류 이해

구문 오류는 Python 인터프리터가 코드의 구조를 이해할 수 없을 때 발생합니다. 이는 괄호 누락 또는 잘못된 들여쓰기와 같은 다양한 문제로 인해 발생할 수 있습니다.

새로운 Python 인터프리터를 엽니다.

python3

다음은 for 루프의 끝에 콜론이 누락되어 발생하는 구문 오류의 예입니다.

for i in range(10)
  print(i)

인터프리터는 구문 오류를 발생시키고 오류가 발생한 위치를 알려줍니다.

File "<stdin>", line 1
    for i in range(10)
                      ^
SyntaxError: invalid syntax

캐럿 기호 (^) 는 구문 오류의 위치를 나타내며, 오류 메시지는 구문이 유효하지 않다고 알려줍니다.

이 구문 오류를 수정하려면 for 루프의 끝에 콜론을 추가하기만 하면 됩니다.

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

이제 잘못된 들여쓰기가 있는 예제를 시도해 보겠습니다.

if True:
print("Hello, World!")

이 예제에서 print 문은 if 문 아래에 제대로 들여쓰기되지 않았습니다. 이 구문 오류를 수정하려면 print 문을 올바르게 들여쓰기해야 합니다.

if True:
  print("Hello, World!")

예외 처리

예외는 프로그램 실행 중에 발생하는 오류입니다. Python 에서는 tryexcept 문을 사용하여 예외를 처리할 수 있습니다.

ZeroDivisionError 예외를 처리하는 방법의 예는 다음과 같습니다.

try:
  x = 10 / 0
except ZeroDivisionError:
  print("Cannot divide by zero!")

이 예제에서 try 블록에는 ZeroDivisionError 예외를 발생시킬 수 있는 코드가 포함되어 있습니다. 예외가 발생하면 제어가 except 블록으로 전달되어 오류 메시지를 출력하여 예외를 처리합니다.

또한 여러 예외를 포함하는 except 문을 사용하여 동일한 try 블록에서 여러 예외를 처리할 수 있습니다.

try:
  x = 10 / 0
  y = int('abc')
except ZeroDivisionError:
  print("Cannot divide by zero!")
except ValueError:
  print("Invalid input!")

이 예제에서 try 블록에는 ZeroDivisionError 또는 ValueError를 발생시킬 수 있는 코드가 포함되어 있습니다. ZeroDivisionError가 발생하면 ZeroDivisionError가 있는 except 블록이 이를 처리합니다. ValueError가 발생하면 ValueError가 있는 except 블록이 이를 처리합니다.

예외 발생시키기

예외를 처리하는 것 외에도 raise 문을 사용하여 코드에서 예외를 발생시킬 수도 있습니다.

ValueError 예외를 발생시키는 방법의 예는 다음과 같습니다.

def validate_age(age):
  if age < 0:
    raise ValueError("Age cannot be negative.")

try:
  validate_age(-1)
except ValueError as e:
  print(e)

이 예제에서 validate_age 함수는 나이가 음수이면 ValueError 예외를 발생시킵니다. try 블록은 음수 나이로 validate_age 함수를 호출하여 ValueError 예외가 발생하도록 합니다. except 블록은 예외를 처리하고 오류 메시지를 출력합니다.

모든 예외 잡기

때로는 try 블록에서 발생할 수 있는 모든 예외를 잡고 싶을 수 있습니다. 예외를 지정하지 않은 except 문을 사용하여 이를 수행할 수 있습니다.

try:
  x = 10 / 0
  y = int('abc')
except:
  print("An error occurred!")

이 예제에서 try 블록에는 ZeroDivisionError 또는 ValueError를 발생시킬 수 있는 코드가 포함되어 있습니다. 두 예외 중 하나라도 발생하면 except 블록에서 잡혀 오류 메시지를 출력합니다.

Else 절

try 문에서 else 절을 사용하여 try 블록에서 예외가 발생하지 않은 경우에만 실행될 코드 블록을 지정할 수 있습니다.

try:
  x = int(input("Enter a number: "))
except ValueError:
  print("Invalid input!")
else:
  print("The number is", x)

이 예제에서 try 블록에는 사용자가 잘못된 값을 입력하면 ValueError를 발생시킬 수 있는 코드가 포함되어 있습니다. 예외가 발생하지 않으면 else 블록이 실행되고 숫자가 출력됩니다.

Finally 절

try 문에서 finally 절을 사용하여 예외가 발생했는지 여부에 관계없이 항상 실행되어야 하는 코드 블록을 지정할 수 있습니다.

try:
  x = int(input("Enter a number: "))
except ValueError:
  print("Invalid input!")
finally:
  print("Exiting program.")

이 예제에서 try 블록에는 사용자가 잘못된 값을 입력하면 ValueError를 발생시킬 수 있는 코드가 포함되어 있습니다. 예외가 발생했는지 여부에 관계없이 finally 블록은 항상 실행되고 프로그램이 종료됩니다.

요약

이 랩에서는 Python 코드에서 구문 오류를 식별하고 수정하는 방법과 tryexcept 문을 사용하여 예외를 처리하는 방법을 배웠습니다. 또한 raise 문을 사용하여 코드에서 예외를 발생시키는 방법과 try 문에서 elsefinally 절을 사용하는 방법을 배웠습니다.

이 랩이 도움이 되었고 Python 구문 오류 및 예외 작업에 대해 더 자신감을 갖게 되셨기를 바랍니다!