f = open('exam.txt','wt') #파이썬이 돌아가는 폴더에 동일한 이름의 텍스트 파일을 먼저 만들어 준다, 내용을 쓸거기때문에 'wt'

f.write('========english exam test=========\n') #텍스트파일에 채워질 내용 쓰기
lines = ['listening\n', 'speaking\n', 'writing\n'] #여러줄로 쓸거라 리스트로 한번에 넣어버리기
f.writelines(lines) #여러줄 쓸수있는 writeline 메소드 사용 

f.close() #반드시 close() 꼭 해주고

 

이렇게 파일이 생성되서 열어보면

 

위에 내가 코드로 작성한 문구가 쓰여진것 확인.

class Monster:
    def __init__(self,name): #__init__ 생성자 함수
        self.name = name #self.name은 속성
    def say(self):
        print(f"I'm {self.name}")


shark = Monster("상어") #제일 먼저 init으로 가서 name 변수 위치로 들어감.
shark.say()

wolf = Monster("늑대") #제일 먼저 init으로 가서 name 변수 위치로 들어감.
wolf.say()
 

##참고한 영상 ## 스타트코딩 

class Monster:
    def __init__(self,name,age): #__init__ 생성자 함수
        self.name = name #self.name은 속성
        self.age = age
    def say(self):
        print(f"I'm {self.name} {self.age}살")


shark = Monster("상어",7) #제일 먼저 init으로 가서 name 변수 위치로 들어감.
wolf = Monster("늑대",3) #제일 먼저 init으로 가서 name 변수 위치로 들어감.

shark.say()
wolf.say()

 

#try except 구문으로 예외 처리하기
try:
    number_input_a = int((input("정수 입력 :")))
    print("원의 반지름 :", number_input_a)
    print("원의 둘레 :", 2*3.14*number_input_a)
    print("원의 넓이 :", 3.14*number_input_a*number_input_a)
except:
    print("정수를 입력하지 않았습니다.")
else:
    print("예외가 발생하지 않았습니다.")
finally:
    print("일단 프로그램이 어떻게든 끝났습니다.")

1. 내가 입력한 값 : 3일때 

정상 try 구문 진행되며 예외 except 건너뛰고 종료된다.

 

2. 내가 입력한 값 : zz일때 

예외값 except로 넘어가 프로그램 종료된다.

 

두가지 경우 모두 finally 구문이 실행되는 모습을 볼 수 있다.

finally 구문은 예외 처리 구문에서 가장 마지막에 사용할 수 있는 구문이다. 예외가 발생하든 발생하지 않든 무조건 실행할 때 사용하는 코드이다.  정리하면

 

  • try : 예외가 발생할 가능성이 있는 코드
  • except : 예외가 발생했을 때 실행할 코드
  • else : 예외가 발생하지 않았을 때 실행할 코드
  • finally : 무조건 실행할 코드

조합해보면 아래와 같다. 이 외에 조합은 실행 시 구문 오류 발생한다.

  • try + except
  • try + except + else
  • try + except + finally
  • try + except + else + finally
  • try + finally
#try except 구문으로 파일 열고 닫기
try:
    file = open('hi.txt', 'w')
    file.write('안녕!')
except:
    print('오류 발생')

file.close()
print('#파일이 제대로 닫혔는지 확인하세요')
print('file.closed:', file.closed)

마지막에 finally 안쓰고도 try +except 구문만 해도 아무 문제 없다. 

finally 구문은 반복문 또는 함수 내부에 있을 때 위력을 발휘한다. 🌟

def test():
    print('test() 함수의 첫 줄')
    try:
        print('try 구문 시작')
        return
        print('try 구문의 return 키워드 뒤')
    except:
        print('except 구문 실행됨')
    finally:
        print('finally 구문 실행됨')
    print('test() 함수의 마지막 줄')

test()

👩🏻‍💻  try 구문 내부에 return 키워드 있는게 포인트. try 구문 중간에서 탈출해도 finally 구문은 무조건 실행된다. 따라서 함수 내부에서 파일 처리 코드를 깔끔하게 만들고 싶을 때 finally 구문을 활용하는 경우가 많다. try구문에서 원할 때 return키워드로 빠져나가도 파일이 무조건 닫히기 때문 ! 

def write_text_file(filename, text):
    try:
        file = open(filename, 'w')
        file.write(text)
    except:
        print('오류가 발생했습니다.')
    finally:
        file.close()

write_text_file('TEST.txt','확인하세요')

finally 구문에서 close()함수를 호출하도록 코드 작성하면 깔끔해짐.

print('프로그램 시작됨')
while True:
    try:
        print('try구문 시작됨')
        break
        print('try구문의 break 키워드 뒤')
    except:
        print('except구문이 실행됨')
    finally:
        print('finally 구문이 실행됨')
    print('while반복문의 마지막 줄')
    
print('프로그램 종료')

break 키워드로 try 구문 전체를 빠져나가도 ! finally 구문이 실행되는 것을 볼 수 있다 🌟

break안넣으면 while문 못 빠져나가니 참고 ㅎㅎ

contact = {}
while True : 
    print('======연락처 프로그램======')
    print('''
    1. 추가 2. 목록보기 3. 검색 4. 수정 5. 삭제 9. 종료
    ===================================================
    ''')
    menu = int(input('메뉴 선택:'))
    if menu == 1:
        print('연락처 추가 작업')
        name = input('이름:')
        tel = input('전화번호:')
        contact.setdefault(name, tel) #딕셔너리에 요소 추가 하는 것
        print('추가 작업 완료')
    elif menu == 2:
        print('연락처 목록보기')
        for i, j in contact.items():
            print(i,':',j)
    elif menu == 3:
        print('연락처 검색')
        name = input('검색할 이름:')
        if name in contact:
            tel = contact[name]
            print(name, ':', tel)        
        else:
            print('등록되지 않은 이름입니다!')
    elif menu == 4:
        print('연락처 수정')
        name = input('수정할 이름:')
        if name not in contact:
            print('등록되지 않은 이름입니다!')
        else:
            tel = input('새 전화번호:')
            contact[name]= tel
            print('수정 작업 완료')
    elif menu == 5:
        print('연락처 삭제')
        name = input('삭제할 이름:')
        if name in contact:
            contact.pop(name) #삭제 
            print('삭제 작업 완료')
        else :
            print('등록되지 않은 이름입니다!')
    elif menu == 9:
        print('프로그램을 종료합니다!')
        break

+ Recent posts