ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] 20.12.17 Python 함수, 파일 읽기/쓰기
    Cloud/클라우드 아키택트 양성과정 2021. 1. 3. 22:08

    [20.12.17] Python 함수, 파일 읽기/쓰기

     

    함수와 파일 읽고 쓰기에 대해 학습했다.

     

     

    * 함수(Function)

    - 어떠한 입력값을 갖고 특정 일을 수행한 뒤 결과물을 내놓는 것.

    - 함수를 사용하여 반복적인 루틴을 따로 분리한 후 재사용하기 좋다.

    - 함수를 사용하면 프로그램의 흐름과 오류 파악이 쉽다.

     

    * 함수의 구조

    - def : 함수 생성 시 사용하는 예약어

    - 함수에 따라 매개변수(함수에 입력값으로 전달되는 변수)를 정의할 수 있음

    # 기본 형태
    def add(a,b):
    	return a + b
        
    # 함수 호출
    c = add(1,2)
    print(c)	# 출력 : 3

    - 매개변수(Parameter) : 함수에 입력으로 전달된 값을 받는 변수

    - 인수(Arguments) : 함수를 호출할 때 전달받는 입력값

    - 인수는 사용자가 전달하는 값이고 매개변수는 함수가 사용자의 전달 값을 받아서 저장하는 변수다.

     

    * 함수의 형태

    1) 입력값, 결과값이 있는 함수

    def add(a,b):
    	return a + b

    2) 입력값이 없는 함수

    def hello():
    	return 'hello'
    
    print(hello())	# 출력 : hello

    3) 결과값이 없는 함수

    def add(a,b):
    	print(f'두 수의 합은 {a+b}입니다.')
    
    add(1,2)	# 출력 : 두 수의 합은 3입니다.

    > 실제로 결과값이 없는 것은 아니고 출력해보면 None 객체로 반환된다.

     

    4) 입력값, 결과값이 없는 함수

    def hello():
    	print('hello')
    
    hello()	# 출력 : hello

     

    * 매개변수 활용

    1) 매개변수 지정

    > 매개변수를 직접 지정해서 사용이 가능하다.

    def add(a,b):
    	return a+b
        
    result = add(a=3, b=7)
    result2 = add(b=7, a=3)

    > 매개변수를 직접 지정할 시 순서에 상관없이 사용할 수 있다.

     

    2) 매개변수 초기값 설정

    > 함수 선언 시 초기값을 미리 설정할 수 있다.

    # 함수 선언
    def print_info(name, old, man=True):
    	print(f'이름은 {name} 입니다.')
        print(f'나이는 {old} 입니다.')
        if man:
        	print('성별은 남자입니다.')
        else:
        	print('성별은 여자입니다.')
            
    # 함수 호출
    print_info('홍길동', 20)	# 초기값을 정해주면 값을 전달해주지 않아도 함수 호출 가능.
    print_info('홍길동', 20, True)
    # 위 두 함수는 같은 내용을 출력한다.

     

    * I/O

    1) 사용자 입력(input)

    > 사용자가 입력한 값을 문자열 형태로 받는 함수이다.

    a = input()	# 사용자의 입력 값을 문자열로 저장
    
    b = input('값을 입력하세요 : ')	# 괄호 안에 내용을 출력한 뒤 입력한 값을 문자열로 저장

    2) 출력 print()

    > 문자열 출력 시 큰 따옴표를 이용해 문자열을 연결할 수 있다.

    print("a" "b" "c")
    # 출력 : abc
    print("a"+"b"+"c")
    # 출력 : abc
    print("a","b","c")
    # 출력 : a b c
    
    for i in range(5):
    	print(i, end=' ')	# end로 끝 문자를 지정할 수 있다. (생략할 경우 \n, 개행문자가 들어감)
    # 출력 : 0 1 2 3 4

     

    * 파일 읽기, 쓰기

    1) 파일 생성

    > open() 함수를 사용해서 파일을 생성한다.

    > 파일 이름, 파일 열기 모드를 입력값으로 받고 파일 객체를 반환한다.

    > close() 함수로 열려 있는 파일 객체를 닫을 수 있다.

    > 파일은 기본적으로 해당 .py 파일의 경로와 동일한 곳에서 객체를 생성한다.

     

    ※ 파일 열기 모드

    파일 열기 모드 설명
    r 읽기 모드 - 파일 읽을 때 사용
    w 쓰기 모드 - 파일에 내용을 쓸 때 사용(이전 내용 삭제)
    a 추가 모드 - 파일의 마지막에 새 내용 추가할 때 사용

     

    2) 파일 읽기

    > 파일의 내용을 읽는 방법으로는 read(), readline(), readlines()가 있다.

    > 메모장을 이용해서 '새파일.txt'라는 이름으로 파일을 생성해놨다.

    새파일.txt

    2-a) read()

    > 파일의 내용 전체를 문자열 형태로 받아오는 함수다.

    f = open("새파일.txt", "r", encoding="UTF-8")
    print(f.read())	# 파일의 전체 내용 문자열로 받아옴.
    '''
    출력
    1번 줄
    2번 줄
    3번 줄
    4번 줄
    5번 줄
    '''
    f.close()

    > 'encoding = "UTF-8"'은 인코딩 방식이다. 파일을 읽고 쓸 때는 이 인코딩 방식이 동일해야 한다.

     

    2-b) readline()

    > 파일의 내용 중 한 줄을 읽어오는 함수이다.

    > 여러 줄을 받아오고 싶다면 여러 번 호출하면 된다.

    f = open("새파일.txt", "r", encoding = "UTF-8")
    print(f.readline())
    # 출력 : 1번 줄
    print(f.readline())
    # 출력 : 2번 줄
    f.close()

    2-c) readlines()

    > 파일의 내용 전체를 한 줄씩 나눠서 리스트로 반환하는 함수이다.

    f = open("새파일.txt", "r", encoding = "UTF-8")
    print(f.readlines())
    # 출력 : ['1번 줄\n', '2번 줄\n', '3번 줄\n', '4번 줄\n', '5번 줄']
    f.close()

     

    3) 파일 쓰기

    > write() 함수를 활용해서 파일에 내용을 쓸 수 있다.

    > 파일에 내용을 쓸 땐 파일 읽기 모드가 'w', 'a' 인지를 명확하게 체크할 필요가 있다.

    f = open("a.txt", "w", encoding="UTF-8")
    f.write("테스트")
    f.close()

    a.txt

    > 'a.txt'라는 파일에 '테스트'라는 텍스트가 추가됐다.

    > 만약 파일 열기 모드를 'w'로 다시 파일을 열고 쓸 경우 위 내용은 지워지고 새로운 내용이 쓰인다.

    > 파일 열기 모드를 'r'로 할 경우 기존 파일에 내용을 추가할 수 있다.

     

    * 실습 문제

    1) 함수 만들기

    a. 함수명 : printAvg, 매개변수 : 3개의 숫자, 동작 : 평균 출력

    def printAvg(a,b,c):
    	result = (a+b+c)/3
        print(result)
    printAvg(1,2,3)

    b. 함수명 : printInfo, 매개변수 : 이름, 나이, 동작 : 이름, 나이 출력

    def printInfo(name, age):
    	print(f'이름 : {name}')
        print(f'나이 : {age}')
    name = input('이름을 입력하세요 : ')
    age = input('나이를 입력하세요 : ')
    printInfo(name,age)

    c. 함수명 : bmi, 매개변수 : 키, 동작 : 표준체중 = (키-100)*0.9 를 계산해서 반환

    def bmi(height):
    	return (height-100)	* 0.9

    d. 함수명 : makeAvg, 매개변수 : 3개의 숫자, 동작 : 평균 반환

    def makeAvg(a,b,c):
    	return (a+b+c)/3

    2) 파일 생성

    > 사용자에게 이름을 입력받고 'students.txt'파일에 내용을 저장하기

    > 이름 입력 후 사용자가 Y를 누르면 추가 입력, N을 누르면 프로그램을 종료.

    f = open("students.txt", "a", encoding="UTF-8")
    while 1:
        name = input('이름을 입력하세요 : ')
        add = input('추가로 입력하시겠습니까? (Y/N)\n')
        if add == 'Y':
            continue
        else:
            f.write(name)
            break
    f.close()

     

    ※ 이 게시물은 'Do it 점프 투 파이썬' 교재와 엔코아 플레이데이터에서 배운 내용을 토대로 작성되었습니다.

    댓글

Designed by Tistory.