개발일기

#4 파이썬 연습 (예외처리, 파일 불러오기, 한 줄의 마법) 본문

오늘의 공부일기/파이썬 공부일기

#4 파이썬 연습 (예외처리, 파일 불러오기, 한 줄의 마법)

츄98 2023. 3. 21. 10:16

Content

  • 새로 알게된 점(복습!)
  • 내맘대로 활용해보기
  • 느낀 점

1. 예외처리 try-except

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby'},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

#people의 bobby를 보면.. age 값이 없다. 
#이런 경우, 바로 for 문이나 if문을 돌리면.. 오류메세지가 나온다. 이를 방지하기 위해 예외처리를 한다.
#if문의 else처럼 exception을 쓰면 정의되지 않은 모든 에러에 대해서 exception구문으로 빠져나간다.

for a in people:
    try:
        if a['age']>20:
            print(a['name'])
    except:
        print(a['name'],'에러입니다.')

출력값:

carry
ben
bobby 에러입니다.
red
queen

 

근데.. 웬만하면 쓰지 말기..! 남용하면 어디서 오류인지 찾지를 못한다.

 

약간 심화내용..? 이런 게 있구나~

except ValueError: #int로 변환하는 과정에서 에러가 발생했을 때

except ZeroDivisionError: #0으로 나누면서 에러가 발생했을 때

except Exception as e: #위에서 정의하지 않은 에러가 발생했을 때 (권장하지 않음)
	print(f"예상하지 못한 에러가 발생했습니다. error:{e}")
    
#except 문법도 if/elif처럼 연달아 쓸 수 있음

 

2. 파일 불러오기

이것만 알고 넘어가자. from 파일명 import 함수명..

자세한 건 모듈에서 살펴보자

 

3. 한 줄의 마법 : 코드 짧게 쓰기

#sol1
num = 3
if num % 2 == 0:
    print('짝수')
else:
    print('홀수')


#sol2
num = 3
if num % 2 == 0:
    result = '짝수'
else:
    result = '홀수'
print(f'{num}은 {result}입니다.')


#sol3
num = 3
result = ('짝수' if num%2==0 else '홀수')
print(f'{num}은 {result}입니다.')

if 문을 sol3처럼 짧게 쓸 수 있다..!

#sol1
a_list = [1,3,2,5,1,2]
b_list = []
for a in a_list:
    b_list.append(a*2)
print(b_list)


#sol2
a_list = [1,3,2,5,1,2]
b_list = []
b_list = [a*2 for a in a_list]
print(b_list)

for 문을 sol2처럼 짧게 쓸 수 있다.

 

내 맘대로 활용하기

앞에서 만들었었던 you함수를 한 줄 마법을 이용해 짧게 바꿔보겠다..!

def you(name, mbti) :
    a= name.strip()
    b= (mbti.strip()).upper()
    print(f'{a}의 mbti는 {b}이다.')
    
    result = ('지금 신나게 수다 떨면서 놀고 싶다. 혼자 있기 싫다.' if b[:1] == 'E'
              else '지금 집에 가고 싶다. 넷플릭스를 보며 혼자만의 시간을 갖고 싶다.')
    print(f'{a}님은 {result}')

name = str(input("이름을 적어주세요."))
mbti = str(input("mbti를 적어주세요."))

you(name,mbti)

출력값:

이름을 적어주세요. Jisu

mbti를 적어주세요. ENFJ

Jisu의 mbti는 ENFJ이다.

Jisu님은 지금 신나게 수다 떨면서 놀고 싶다. 혼자 있기 싫다.

 

짜잔! 

 

느낀 점

  • 한 줄의 마법..!
  • 가독성을 높인다. 내가 보기도 좋고 남이 보기도 좋다 :)
  • 한 줄의 마법으로 긴 코드를 정리해서 더 깔끔하게 코드를 작성할 수 있을 것 같다.
  • 유용한 마법이다. ㅎㅎ