Language/Python

[Python] 제어문 & 오류 & 예외처리

S_sun 2024. 5. 13. 20:38

1. 조건문 ( if )

  • 조건에 따라 처리를 한다.
# 방법1
if 조건문:
	# 조건에 맞을 경우 실행
else:
	# 조건문에 맞지 않을 경우 실행

# 방법2
조건에 맞을 경우 if 조건문 else 조건문에 맞지 않을 경우
# 방법1
a = 5 
if a > 3:
  print('~~~~')
else:
  print('@@@@')

# 방법2
print('---') if a > 3 else print('@@@')
  • 다중 if
if 조건문:
	# 조건문에 맞을 경우 실행
elif 조건문:
	# 조건문에 맞을 경우 실행
else:
	# 조건문에 맞지 않을 경우 실행

💡 퀴즈

str1 = "코딩좋아^^"
endWord = str1.count('^')

# 조건1 : str1 길이가 a보다 큰가? -> print : str1 길이가 a보다 큼
# 조건2 : str1에 '^'의 갯수가 a보다 큰가? -> print : str1의 '^'의 갯수가 a보다 큼
# else : print format을 이용해서 글을 작성 -> 'a의 값은 {}입니다.'
if len(str1) > a:
    print("str1 길이가 a보다 큼")
elif endWord > a:
    print("str1의 '^'의 갯수가 a보다 큼")
else:
    print(f"a의 값은 {a}입니다.")

⭐ if는 집합의 관점으로 교집합이 가장 적은 범위부터 if 조건을 걸어야 한다.
ex) 부자 → 중산층 → 서민 : 필터링

1 - 1. 비교연산자

  • <, >, ==, ≠, ≥, ≤
  • or, and, not
  • in

 

2. 반복문 ( for, while )

  • list, tuple, str과 같이 인덱싱을 할 수 있는 자료형 이용
    • dict는 인덱싱이 아닌 key, value이기에 안됨
  • pass : 계속 진행
    • 제어문 안에 쓸 내용이 없는데 코드를 진행해야 하는 경우 사용
lst = [1, 2, 3, 4, 5, 6, 7]

for i in lst:
  if i % 3 == 0: 
    # 어떤 내용으로 채울지 모를 때 사용
    # 아무것도 채우지 않는다면 오류가 나기 때문에
    pass
  else:
    print(f'i: {i}\n')
  • break : loop를 나간다.
  • continue : 다음 순서로 넘어간다.
lst = [1, 2, 3]

# 방법1
for i in lst:
  print(i)

# 방법2
[ i for i in lst ]
  • for - else
    • for문 실행이 정상적으로 완료되면 else가 실행
    • for문 내에 오류가 발생 했을 시 else는 실행되지 않는다.
    • break를 만나면 실행되지 않는다. (pass, continue는 실행된다.)
lst = [1, 2, 3]

for i in lst:
  	print(i)
else:
	print("for문 완료")
lst = [1, 2, 3]

for i in lst:
	break
  print(i)
else:
	print("for문 완료")     # 실행 X
  • while
    • for문과 친구
    • 조건이 참일 경우에만 계속 실행 (무한)
      • 거짓일 경우에는 끝난다.
      • for는 요소의 값이 끝나면 끝난다.
    • pass, break, continue ⇒ for문과 동일
while 조건문:
	# 참일 경우 실행 코드
total = 0
index = 0

while index < 10:
  index += 1 # index = index + 1
  print(f'i: {index}')
  total += index

print(total)
  • while - else
    • for - else와 동일

 

3. Exception (오류)

  • ValueError
  • IndexError
  • SyntaxError
  • NameError
  • ZeroDivisionError
  • FileNotFoundError
  • TypeError
  • AttributeError
  • KeyError
  • ….

 

4. 예외처리

  • 왜 써야 하나?
    • 물건 선택
    • 결제
    • 배송  ⇒ 오류 발생
      • ⇒ 오류 발생 시 처리가 필요하다.
  • try/except
try:
	# 로직, 기능
except <오류종류>:
	# try문에서 Exception이 발생했을 경우 실행됨
try:
  x = int('abc')
  print(x)
except ValueError as e:
  print(f'오류 메세지: {e}')

try:
  int('abc')
except Exception as e:
  print(f'오류명: {type(e)} / 오류 메세지: {e}')

try:
  x = [1, 2, 3]
  x.appe(4)
except ValueError as e:
  print(f'오류명: {type(e)} / 오류 메세지: {e}')
except TypeError as e:
  print(f'오류명: {type(e)} / 오류 메세지: {e}')
except Exception as e:
  print(f'오류명: {type(e)} / 오류 메세지: {e}')
  • else/finally
try:
	# 로직, 기능
except <오류종류>:
	# try문에서 Exception이 발생했을 경우 실행됨
else:
	# try문이 성공했을 경우 실행
finally:
	# try문의 결과와 상관없이 실행, 가장 마지막에 실행
try:
  x = 11 + int('22')
  print(x)
except:
  print('except ~~')
else:
  print('else ~~')
finally:
  print('finally ~~')

 

5. assert

  • 조건이 False일 경우, 발생
  • 디버깅 모드에서만 작동

 

6. raise error

  • 내가 작성한 에러 메시지가 뜬다.
try:
  x = 5
  if x % 3 != 0:
    raise Exception('3의 배수가 아닙니다.')
  print('3의 배수 입니다.')
except Exception as e:
  print(f'에러 메세지: {e}')

# 에러 메세지: 3의 배수가 아닙니다.

 

728x90
반응형

'Language > Python' 카테고리의 다른 글

[Python] 함수 (Function)  (0) 2024.05.13
[Python] 문제  (0) 2024.05.13
[Python] 자료구조  (0) 2024.05.13
[Python] 문법  (0) 2024.05.13
[Python] 개발환경 설정  (0) 2024.05.05