Super Kawaii Cute Cat Kaoani [Python] 04. 프로그램의 입출력

[Python] 04. 프로그램의 입출력

2024. 1. 21. 04:29
728x90
SMALL

📌  1. 함수

  • input이 들어와 function(함수)를 거쳐 output 출력
  • 입력과 출력이 없는 프로그램도 있음

1) 함수 정의

  • 매개변수 : input
  • 리턴값 : output
  • 수행할 문장 : function
def 함수명(매개변수 input):
    <수행할 문장1>
    <수행할 문장2>
    <...>
    return 리턴값 output

 

2) 함수 호출

  • 함수 호출 : 함수를 사용하는 것
  • 함수를 정의하기만 하면 아무것도 출력하지 않음
def sum(a, b): #함수 정의
    result = a + b
    return result
print(sum(1, 2)) #함수 호출

 

3) 입출력 값이 없는 경우

 

✔ 입력값만 없는 경우

def say():
    return "Hi"
print(say()) #Hi 출력

 

✔ 출력값만 없는 경우

def sum(a, b):
    print("%d, %d의 합은 %d입니다" %(a, b, a+b))

 

✔ 입출력값 둘 다 없는 경우

def say()
    print("Hi") #Hi 출력
print(say()) #None 출력

 

❗list의 메소드(함수st) 중 print 했을 때 값이 나오는 경우가 있고 아닌 경우 존재
❗print(<메소드>) 했을 때 값이 나오면 출력(return)이 있는 것, 값이 none이면 출력이 없는 것

 

✔ 여러 개의 입력값

    • *args : 여러 개의 입력 받기
    • **kwargs : 딕셔너리 형태의 입력 받기
    • 둘 다 변수 바꿔도 되지만 일반적인 형태로 주로 쓰이므로 위와 같이 사용함

 

#ex1)
def sum_many(*args): #*args : 여러 개의 값을 입력하라는 의미, args를 대신해 다른 변수명을 사용해도 되지만 일반적으로 args 사용
    sum = 0
    for i in args: #args가 리스트처럼 여러 개의 요소를 담고 있음
        sum = sum + i
    return sum


#ex2)
def print_kwargs(**kwargs): #**kwargs : 딕셔너리 형태로 입력 받음, *args와 마찬가지로 변수 명이 정해진건 아님
    for k in kwargs.keys(): #key를 k변수에 담음
        if (k=="name"):
            print("당신의 이름은: " + kwargs[k]) #kwargs[k]에서 k는 key이므로 해당 key에 관한 value 값 출력

print(print_kwargs(name = "int조수", b = "2"))

 

✔ 함수의 결과(return)값은 언제나 하나

#ex)
def sum_and_mul(a, b):
    return a+b, a*b, a-b #return 값은 언제나 하나이므로 튜플 형태로 return
print(sum_and_mul(1, 2)) #(3, 2, -1) 튜플 형태로 출력
print(sum_and_mul(1, 2)[0]) #3 출력

 

✔ 매개 변수에 초깃값 미리 설정

  • 해당 인수를 넣지 않아도 기본으로 설정한 값 출력
  • 맨 뒤에 있어야 생략 가능
  • 가운데 에 있을 경우 반드시 써야 함
#ex)
def say_myself(name, old, man=True):
    print("나의 이름은 %s입니다" %name)
    print("나이는 %d입니다" %old)
    if man:
        print("남자입니다")
    else:
        print("여자입니다")

say_myself("라이유튜브", 20, True)
say_myself("라이유튜브", 20) #직전 코드와 같은 결과, man = True를 쓰지 않을 경우 오류 발생
say_myself(old = 20, name = "라이유튜브", man = True) #순서가 바뀔 경우 맵핑해야 함)

 

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

  • 지역변수 : 함수 내에 존재하는 변수는 함수 밖에 영향을 주지 않음
#ex) 
a = 1
def vartest(a): #이 함수 내에 존재하는 a는 함수 밖에 영향을 주지 않음(return 값 x)
 a = a + 1
vartest(a)
print(a) #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

  • 함수를 간단하게 표현하는 방법
  • 함수명 없을 수도 있음

🔶 Lambda 기본 구조

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

#ex2)
add = lambda a,b : a + b

 

🔶 기존 함수 정의 사용 못하는 경우에도 사용 가능

#ex) Lambda 사용 예제
myList = [lambda a,b: a+b, lambda a,b: a*b] #myList는 [덧셈, 곱셈] 함수가 각각 들어있음
print(myList[0](1, 2)) #3 출력, a+b
print(myList[1](1, 2)) #2 출력, a*b

 

 

 

📌 2. 사용자 입력과 출력

 

1) input 함수

  • 내장 함수 : input과 같이 사전에 정의된 함수
  • 사용자 정의 함수 : def를 사용해 함수를 정의한 함수

❗알고리즘 문제 해결할 때 주로 쓰임

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

 

2) print 함수

  • 기본적으로 하나 출력 후 다음 줄로 넘어가서 출력

✔ 띄어쓰기

print("life""is""too short") #lifeistoo short 출력, 자동으로 + 생성
print("life"+"is"+"too short") #직전 코드와 같은 결과
print("life", "is", "too", "short") #life is too short 출력

 

✔ end = " " or end = ' '

  • 한 줄 씩 내려가지 말고 옆으로 주어진 문자를 넣고(end = " "은 띄어쓰기) 출력
for i in range(10):
    print(i, end = " ") #1 2 3 4 5 6 7 8 9 10출력

for i in range(10):
    print(i) #1\n 2\n 3\n 4\n 5\n 6\n 7\n 8\n 9\n 10\n

for i in range(10):
    print(i, end = "hi") #1hi2hi3hi4hi5hi6hi7hi8hi9hi10
반응형

 

 

📌 3. 파일 읽고 쓰기

  • 텍스트 파일을 여고 작성한 후 파일을 닫고 저장하는 개념

❗ 파일은 open 했으면 반드시 close 해야함.
-> 하지 않을 경우 오류 발생 가능성 존재

 

1) 파일 생성하기

f = open("새파일.txt", "w") #상대주소
f.close()

 

2) 파일 열기 모드

파일열기모드 설명
r 읽기모드 : 파일을 읽기만 할 때 사용
w 쓰기모드 : 파일에 내용을 쓸 때 사용
a 추가모드 : 파일의 마지막에 새로운 내용을 추가시킬 때 사용

 

 w 기존 파일의 내용을 삭제하고 작성하는 것이고, a 기존 파일 뒤에 내용을 추가하는 것

 

3) 파일 쓰기 모드("w")로 열고 출력값 작성

  • 주소 작성
    • 절대 주소 : 처음부분(C:/)부터 주소 작성
    • 상대 주소 : 현재 실행하는 파일을 기준으로 상대적인 경로 작성, 현재 폴더에 작성

❗ 크롤링할 때 유용하게 사용 가능

  • write()함수 사용
f = open("C:/Python/새파일.txt", "w", encoding="UTF-8") #절대주소, 한글이 깨지지 않도록
for i in range(1, 11):
    data = "%d 번째 줄입니다.\n" %i
    f.write(data)
f.close

 

4) 파일 읽기 모드("r")로 읽고 처리

 

✔ 파일 한 줄 씩 읽어오기

  • readline() 함수 사용 : 파일을 한 줄 씩 읽어오는 함수
f = open("새파일.txt", "r", encoding = "UTF-8")
line = f.readline()
print(line)
f.close()

 

✔ 파일 여러 줄 씩 읽어오기

  • readline() 함수 사용
f = open("새파일.txt", "r", encoding="UTF-8")
while True:
    line = f.readline()
    if not line: break #빠저나갈 조건에 성립하면 무한반복에서 빠져나간다
    print(line)
f.close()
  • readlines() 함수 사용

❗ 리스트 형태

f = open("새파일.txt", "r", encoding="UTF-8")
lines = f.readlines() #리스트 형태
for line in lines:
    print(line)
f.close()

 

❗ 기존 파일에 한 문장이 끝날 때마다 \n이 존재하는데, print는 기본적으로 한 문장씩 내려가므로 두 번 내려가는 것처럼 보임
-> 방지하려면 : end = " " or .strip("\n") 작성

 

✔ 파일 한 번에 읽어오기

  • read() 함수 사용
f = open("새파일.txt", "r", encoding="UTF-8")
data = f.read()
print(data)
f.close()

 

5) 파일 추가 모드("a")로 수정하기

for i in range(11, 20):
    data = "%d번째 줄입니다. \n" %i
    f.write(data)
f.close()

 

6) with문

  • close() 사용하지 않아도 자동으로 파일 닫는 기능
with open("새파일.txt", "w", encoding="UTF-8") as f:
    f.write("Life is too short, you need python")

 

 

 

<조코딩, "최신 파이썬 코딩 무료 강의"> 을 참고하여 작성한 글입니다.

 

 


PREV

 

[Python] 03. 제어문

📌 1. 조건문 들여쓰기를 잘못할 경우 SyntaxError 발생 VSCode에서 코드 진행 상황을 보려면 코드 번호 왼쪽에 Breakpoint(시작포인트)를 건 후 Run->Start debugging 실행해 한 줄씩 확인 가능 ++연산자와 --연

nyeroni.tistory.com

 

NEXT

728x90
LIST

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

[Python] 03. 제어문  (1) 2024.01.21
[Python] 02. Python 프로그래밍의 기초, 자료형  (0) 2024.01.21
[Python] 01. Python이란 무엇인가?  (0) 2024.01.21

BELATED ARTICLES

more