<Python>04.프로그램의 입력과 출력은 어떻게 해야할까?

박서연·2023년 1월 20일
0

Python

목록 보기
4/8
post-thumbnail

1. 함수

input이 들어와 function(함수)을 거쳐 output 출력
입력과 출력이 없을 수 있음

1. 함수 정의

아래 구조에서 매개변수가 input, 리턴값이 output, 수행할 문장이 function

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

2. 함수 호출

함수를 정의하기만 하면 아무것도 출력X
함수를 사용하는 것을 함수 호출이라 함

def sum(a,b):	#함수 정의
	result = a+b
    return result	
print(sum(1,2))	#함수 호출

3. 입출력값이 없는 경우

1) 입력값만 없는 경우

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

2) 출력값만 없는 경우

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

3) 입출력값 둘 다 없는 경우

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

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

4. 여러 개의 입력값

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

💡 example

#1
def sum_many(*args):	#*args: 여러개의 값 입력하라는 의미, args 대신해 다른 변수명 써도되지만 일반적으로 args 사용
	sum = 0
    for i in args:	#args가 리스트처럼 여러 개 요소 담고 있음
    	sum = sum+i
    return sum
    
#2
def print_kwargs(**kwargs):	#**kwargs: 딕셔너리 형태로 입력받음
	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"))

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

💡 example

def sum_and_mul():
	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 출력

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

해당 인수를 넣지 않아도 기본으로 설정한 값 출력
맨 뒤에 있어야 생략 가능, 가운데에 있을 경우 반드시 써야함

💡 example

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)	#순서가 바뀔 경우 각각의 맵핑해야함

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

✔ 지역변수

함수 내에 존재하는 변수는 함수 밖에 영향을 주지 않음

💡 example

a = 1
def vartest(a):	#이 함수 내에 존재하는 a는 함수 밖에 영향을 주지 않음(return 값 X)
	a = a+1
vartest(a)
print(a)	#1 출력

✔ 지역변수 -> 전역변수

1) return
💡 example

a = 1
def vartest(a):
	a = a+1
    return a
a = vartest(a)
print(a)	#2 출력

2) 예약어 global
💡 example

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

8. Lambda

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

1) Lambda 기본 구조

#1
def add(a,b):
	return a+b
#2 위 코드와 같은 결과
add = lambda a,b : a+b

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

💡 example (Lambda 사용 예제)

myList = [lambda a,b:a+b, lambda a,b:a*b]	#myList는 [덧셈, 곱셈] 함수가 각각 들어있음, 이 때 이름X
print(myList[0](1,2))	#3 출력, a+b 
print(myList[1](1,2))	#2 출력, a*b

2. 사용자 입력과 출력

1. input 함수

input과 같이 사전에 정의된 함수를 내장함수,
def를 사용해 함수를 정의한 함수를 사용자 정의 함수라 부름

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

💡 example

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

2. print 함수

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

1) 띄어쓰기

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

2) end=" " 또는 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  
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() 함수 사용
💡 example

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")로 읽고 처리

1) 파일 한 줄 씩 읽어오기
readline() 함수 사용
: 파일을 한 줄 씩 읽어오는 함수

💡 example

f = open("새파일.txt","r", encoding="UTF-8")
line = f.readline()
print(line)
f.close()

2) 파일 여러 줄 씩 읽어오기
readline() 함수 사용

f = open("새파일.txt","r",encoding="UTF-8")
while True: 
	line = f.readline()
  if not line: break	#빠져나갈 조건, 무한반복X, line값이 없을 경우 빠져나감
  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=" "또는 .strip("\n") 작성

3) 파일 한 번에 읽어오기
read() 함수 사용

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

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

f = open("새파일.txt","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")

0개의 댓글