• Home
  • About
    • Yerim Oh photo

      Yerim Oh

      Happy and worthwhile day by day :)

    • Learn More
    • Email
    • LinkedIn
    • Instagram
    • Github
    • Youtube
  • Posts
    • All Posts
    • All Tags
  • Projects

[05] Python

24 Jun 2020

Reading time ~4 minutes

Table of Contents
  • 프로그램의 입력과 출력은 어떻게 해야 할까?
  • 함수
    • 파이썬 함수의 구조
    • 입력값과 결괏값에 따른 함수의 형태
    • 매개변수 지정하여 호출하기
    • 입력값의 개수가 미지수
    • 키워드 파라미터
    • 함수의 결괏값
    • 매개변수에 초기값 미리 설정하기
    • 함수 안에서 선언한 변수의 효력 범위
    • lambda
  • 사용자 입력과 출력
    • 입력
    • 출력
  • 파일 읽고 쓰기
    • 파일 생성하기
    • 파일을 쓰기 모드로 열어 출력값 적기
    • 프로그램의 외부에 저장된 파일을 읽는 여러 가지 방법
    • 파일에 새로운 내용 추가
    • with문과 함께 사용하기

프로그램의 입력과 출력은 어떻게 해야 할까?

  • 함수
    • 파이썬 함수의 구조
    • 입력값과 결괏값에 따른 함수의 형태
    • 매개변수 지정하여 호출하기
    • 입력값의 개수가 미지수
    • 키워드 파라미터
    • 함수의 결괏값
    • 매개변수에 초기값 미리 설정하기
    • 함수 안에서 선언한 변수의 효력 범위
    • lambda
  • 사용자 입력과 출력
    • 입력
    • 출력
  • 파일 읽고 쓰기
    • 파일 생성하기
    • 파일을 쓰기 모드로 열어 출력값 적기
    • 프로그램의 외부에 저장된 파일을 읽는 여러 가지 방법
    • 파일에 새로운 내용 추가
    • with문과 함께 사용하기

함수

파이썬 함수의 구조


def add(a, b): ->a,b는 매개변수(parameter)
return a + b
print(add(3, 4)) ->3,4는 인수(arguments)
def는 함수를 만들 때 사용하는 예약어

입력값과 결괏값에 따른 함수의 형태

1.일반적인 함수

>>> def add(a, b): 
...     result = a + b 
...     return result
>>> a = add(3, 4) 
>>> print(a)
7

2.입력 값이 없는 함수

>>> def say(  ): 
...     return 'Hi' 
...        
>>> a = say(  ) -> a에 Hi 문자열이 대입
>>> print(a)
Hi


위 함수를 쓰기 위해서는 say( )처럼 괄호 안에 아무 값도 넣지 않아야 한다.
입력값은 없지만 결괏값으로 Hi라는 문자열 3.결과값이 없는 함수

>>> def add(a, b): 
...     print("%d, %d의 합은 %d입니다." % (a, b, a+b))
...          
>>> add(3, 4) 
3, 4의 합은 7입니다.->호출해도 값 돌려주지 않음(그냥 수행할  문장, 그냥 출력, 반환X)
>>> a = add(3, 4) 
3, 4의 합은 7입니다. 
>>> print(a)
None

4.입력값도 결괏값도 없는 함수

>>> def say(  ): 
...     print('Hi')
... 
>>> say(  ) ->이거 밖에 못함//함수 이름()
Hi

매개변수 지정하여 호출하기

>>> def add(a, b):
...     return a+b
... |-> b에 5, a에 3을 전달(이게 가능해서 씀)
>>> result = add(b=5, a=3) 
>>> print(result)
8

입력값의 개수가 미지수

def 함수 이름(*매개변수):
수행할 문장

>>> def add_many(*args): 
...     result = 0 
...     for i in args: 
...         result = result + i 
...     return result 
...        
>>> result = add_many(1,2,3) 
>>> print(result)
6 
>>> def add_mul(choice, *args): 
...     if choice == "add": 
...         result = 0 
...         for i in args: 
...             result = result + i 
...     elif choice == "mul": 
...         result = 1 
...         for i in args: 
...             result = result * i 
...     return result 
...      
>>> result = add_mul('add', 1,2,3,4,5) 
>>> print(result) 
15 
>>> result = add_mul('mul', 1,2,3,4,5) 
>>> print(result)
120

키워드 파라미터

** 딕셔너리로 변화

>>> def print_kwargs(** kwargs):
...     print(kwargs)
...
>>> print_kwargs(a=1)
{'a': 1}
>>> print_kwargs(name='foo', age=3)
{'age': 3, 'name': 'foo'}

함수의 결괏값

Return은 무조건 함수 바로 빠져나옴

>>> def add_and_mul(a,b): 
...     return a+b, a*b
>>> result = add_and_mul(3,4)
result = (7, 12)
>>> result1, result2 = add_and_mul(3, 4)
result1, result2 = (7, 12)가 되어 result1은 7이 되고 result2

매개변수에 초기값 미리 설정하기

매개변수에 들어갈 값이 항상 변하는 것이 아닐 경우 변수와 프린트함수 순서 바꾸면 오류

def say_myself(name, old, man=True): 
    print("나의 이름은 %s입니다." % name) 
    print("나이는 %d살입니다." % old) 
    if man: 
        print("남자입니다.")
    else: 
        print("여자입니다.")
say_myself("박응용", 27)
say_myself("박응용", 27, True)

함수 안에서 선언한 변수의 효력 범위

함수 안에서만!

a = 1 
def vartest(a):
     a = a +1
vartest(a)
print(a)

->1이나옴 : return값이 없어서 첫째 줄 대로 변경법
1.return 사용

a = 1 
def vartest(a):
 a = a + 1 
return a

a = vartest(a) 
print(a)

2.global 명령어 사용

a = 1 
def vartest(  ): 
    global a 
    a = a + 1
vartest(  ) 
print(a)

lambda

복잡하지 않거나, list 함수에 쓰임

>>> add = lambda a, b: a+b
>>> result = add(3, 4)
>>> print(result)
7

mylist = [lambda a,b: a+b, lambda a,b:a*b]
print(mylist[0](1,2))
# 0번째 이므로 lambda a,b: a+b 실행
#3

print(mylist[1](1,2))
#2

사용자 입력과 출력

입력

>>> number = input("숫자를 입력하세요: ") 

숫자를 입력하세요:

출력

1.큰따옴표(“)로 둘러싸인 문자열
+ 연산과 동일하다

>>> print("life" "is" "too short") 
lifeistoo short 
>>> print("life"+"is"+"too short") 
lifeistoo short

2.문자열 띄어쓰기
콤마로 한다

>>> print("life", "is", "too short") 
life is too short

3.한 줄에 결괏값 출력
한 줄에 결괏값을 계속 이어서 출력하려면 매개변수 end를 사용해 끝 문자를 지정

>>> for i in range(10): 
...     print(i, end=' ')
...     
0 1 2 3 4 5 6 7 8 9 >>>

파일 읽고 쓰기

파일 생성하기

파일 객체 = open(파일 이름, 파일 열기 모드)
Or 디렉터리 A 저장 f = open(“A/새파일.txt”, ‘w’)


파일 열기모드
r 읽기 모드 - 파일을 읽기만 할 때 사용
w 쓰기 모드 - 파일에 내용을 쓸 때 사용
a 추가 모드 - 파일의 마지막에 새로운 내용을 추가할 때 사용
f.close( )는 열려 있는 파일 객체를 닫아 주는 역할

파일을 쓰기 모드로 열어 출력값 적기

1.모니터 화면 대신 파일에 결괏값을 적는 방법

f = open("C:/doit/새파일.txt", 'w')
for i in range(1, 11): 
    data = "%d번째 줄입니다.\n" % i 
    f.write(data) 
f.close(  )

2.모니터 화면에 출력

for i in range(1, 11): 
    data = "%d번째 줄입니다.\n" % i 
    print(data)

프로그램의 외부에 저장된 파일을 읽는 여러 가지 방법

1.readline 함수
한 줄만

f = open("C:/doit/새파일.txt", 'r') 
line = f.readline(  ) 
print(line)
f.close(  )

모든 줄

f = open("C:/doit/새파일.txt", 'r')
while True: 
    line = f.readline(  )
    if not line: break 
    print(line)
f.close(  )

2.readlines 함수
모든 줄

f = open("C:/doit/새파일.txt", 'r') 
lines = f.readlines(  )
for line in lines: 
     print(line) 
f.close(  )

3.read 함수 사용하기
for없이 전체

f = open("C:/doit/새파일.txt", 'r') 
data = f.read(  )
print(data) 
f.close(  )

파일에 새로운 내용 추가


쓰기 모드(‘w’)로 파일을 열 때: 기존 내용 삭제
추가 모드(‘a’)로 파일을 열 때: 기존 내용 유지

with문과 함께 사용하기


바로 다음줄에서 지역변수 개념이 끝나서 자동 close

with open("foo.txt", "w") as f:
    f.write("Life is too short, you need python")


PythonBasic Share Tweet +1