Life is too short
프로그램의 입력과 출력
입출력은 프로그래밍 설계와 관련이 있다. 프로그래머는 프로그램을 만들기 전에 어떤 식으로 동작하게 될 것인지 설계부터 하게 되는데 그때 가장 중요한 부분이 입출력의 설계이다.
함수
일반적인 함수
def 함수명(입력 인수):
수행할 문장
...
return 결과값
아래와 같이 함수로 선언을 하며 아래의 리턴값을 받는다
def sum(a,b):
result = a+b
return result
a=3
b=4
c=sum(a,b)
print(c)
결과값을 받을 변수 = 함수명(입력 인수1, 입력인수 2,,,)
입력값이 없는 함수
아래와 같이 a로 say()를 받고 a를 출력해주면 된다.
def say():
return 'HI'
a=say()
print(a)
결과값을 받을 변수 = 함수명()
결과값이 없는 함수
def sum(a,b):
print("%d,%d의 합은 %d입니다."%(a,b,a+b))
여기까지는 입력값이 없음.
sum(3,4)
>>>3,4의 합은 7입니다.
함수명(입력 인수1, 입력 인수2,,,)
입력값이 몇개인지 모를 경우
여러 개의 입력값을 받는 함수 만들기
def sum_many(*args):
sum=0
for i in args:
sum = sum+i
return sum
입력 변수앞에 *를 붙이면 입력값들을 전부 모아서 튜플로 변환시켜준다.
result=sum_many(1,2,3)
print(result)
>>>6
result=sum_many(1,2,3,4,5,6,7,8,9,10)
print(result)
>>>55
함수의 결과값은 항상 한개이다.
def sum_and_mul(a,b):
return a+b,a*b
result=sum_and_mul(3,4)
이 문장을 보면 a+b,a*b 두개이나 결과값은 하나를 묶은 (7,12)로 출력된다.
즉, 함수는 return을 만나는 순간 결과값을 반환 후 빠져나간다.
def say_nick(nick):
if nick == "바보":
return
print("나의 별명은 %s입니다."%nick)
say_nick("키키")
>>>나의 별명은 키키입니다.
say_nick("바보")
>>> (바보라면 리턴을 만나 바로 빠져나온다)
def say_myself(name,old, man=True)
정상적인 선언
def say_myself(name,man=True,old)
오류가 발생, 초기화시키고 싶은 입력 변수들을 항상 뒤쪽에 위치시키는 것을 잊이말자.
함수 안에서 선언된 변수의 효력 범위
a=1
def vartest(a):
a=a+1
vartest(a)
print(a)
>>> 1
a=1를 선언하고 함수안에서 a=a+1이라서 vartest(a)를 선언하면 함수안에서 2가 되지만 print(a)는 함수 안에서 이루어진 a를 출력하는게 아니라 a=1를 출력해서 1이 출려됨.
함수 안에서 함수 밖의 변수를 변경하는 방법
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)
이 방법은 권장하지않음. 함수는 독립적으로 존재하는 것이 좋기 때문에 가급적이면 return방법을 선호.
사용자 입력과 출력
사용자입력
1.input의 사용
a=input()
print(a)
input은 입력되는 모든 것을 문자열로 취급한다.
2.프롬포트를 띄워서 사용자 입력 받기
number=input("숫자를 입력하세요")
"숫자를 입력하세요: "
print 자세히 알기
a=123
print(a) <- 숫자 출력하기
a="Python"
print(a) <- 문자열 출력하기
a=[1,2,3]
print(a) <- 리스트르 출력하기
큰따옴표(")로 둘러싸인 문자열은 + 연산과 동일하다
print("life""is""too short")
print("life"+"is"+"too short")
>>>lifeistoo short
문자열 띄어쓰기는 콤마(,)로 한다.
print("life","is","too short")
>>>life is too short
한 줄에 결과값 출력하기
파일 읽고 쓰기
파일 생성하기
파일 객체 = open(파일 이름, 파일 열기 모드)
파일열기 모드 | 설명 |
r | 읽기 모드 - 파일을 읽기만 할 때 사용 |
w | 쓰기 모드- 파일에 내용을 쓸 때 사용 |
a | 추가 모드 - 파일의 마지막에 새로운 내용을 추가할 때 사용 |
f=open("D:/새파일.txt",'w')
f.close()
D드라이브에 새파일.txt를 생성
f=open("D:/새파일.txt",'w')
for i in range(1,11):
data = "%d번째 줄입니다.\n"%i
f.write(data)
f.close()
D드라이브에 이와 같은 메모장이 생선된다
프로그램의 외부에 저장된 파일을 읽는 여러 가지 방법
readline()함수 이용하기
f=open("D:/새파일.txt",'r')
line=f.readline()
print(line)
f.close()
>>>1번째 줄입니다. (첫 번째 줄을 읽음)
f=open("D:/새파일.txt",'r')
while True:
line=f.readline()
if not line: break
print(line)
f.close()
만약 모든 라인을 읽어서 화면에 출력하고 싶다면 while문을 사용 가능
readlines()함수 이용하기
f=open("D:/새파일.txt",'r')
lines = f.readlines()
for line in lines:
print(line)
f.close()
readline과는 다르게 모든 라인이 줄단위로 출력되는 것을 알 수 있음.
read()함수 이용하기
f=open("D:/새파일.txt",'r')
data=f.read()
print(data)
f.close
모든 라인이 출력됨.
파일에 새로운 내용 추가하기
쓰기모드('w')로 파일을 열 때 이미 존재하는 파일의 경우 파일의 내용이 사라진다.
추가모드('a')로 열 경우 원래 있던 값을 유지하면서 단지 새로운 값만 추가한다.
f=open("D:/새파일.txt",'a')
for i in range(11,20):
data="%d번째 줄입니다.\n" %i
f.write(data)
f.close()
이렇게 추가 된 것을 확인할 수 있다.
with문과 함께 사용하기
with open("foo.txt") as f:
f.write("Life is too short, you need python")
with을 사용할 경우 f가 자동으로 close가 되어 편리하다.
재귀호출을 통한 피보나치 함수를 다음과 같이 작성
def fib(n):
if n == 0:return 0
if n == 1:return 1
return fib(n-2)+fib(n-1)
for i in range(10):
print(fib(i))
파일 읽고 쓰기-sample.txt를 불러와 평균과 총합을 result.txt에 입력한다.
f = open("D:/sample.txt", 'r')
lines = f.readlines() readlines()는 줄단위로 모두 읽는다.
f.close
total=0
for line in lines:
score = int(line) 줄에 적힌 점수를 숫자형으로 변환
total += score
average = total/len(lines)
print(total)
print(average)
f=open("result.txt",'w')
f.write(str(average))
f.close()