4-1 함수
def는 함수를 만들때 사용하는 예약어이다.
입력값이 몇 개가 될지 모를 때는?
입력 인수에 '*'를 붙인다.
def 함수명(*입력변수) :
수행할 문장
인수를 주는 대로 다 더하는 함수
def sum_many(*args) :
sum =0
for i in args:
sum += i
return sum
a =sum_many(3,4,3,5)
print(a)
입력 변수명 앞에 *을 붙이면 입력값들을 전부 모아서 튜플로 만들어준다!
함수의 결과값은 언제나 하나이다.
def sum_many(a,b) :
return a+b, a*b
a = sum_many(3,4)
print(a)
return 으로 a+b, a*b를 하더라도 이들이 튜플로 묶여 반환된다.
만약 각각 값을 가지고 싶다면
sum, mul = sum_many(3,4)
입력인수의 초기값
초기화시키고 싶은 입력변수들을 항상 뒤쪽에 위치시켜야한다.
def say_intro(name,old,man=True) :
print('이름은 %s 입니다.' %name)
print('나이는 %d 입니다.' %old)
if man :
print('남성입니다.')
else: print ('여성입니다')
세번째 인수 man에 아무것도 입력되지않는다면
기본적으로 True가된다.
함수 안에서 선언된 변수의 효력범위
a = 1
def vartest(a) :
a += 1
vartest(a)
print(a)
출력은 어떻게 될까?
2가 나올것 같지만 1이 나온다.
함수안에서 +1 이 되어서 함수내부에서는 2가 된다. 그러나 함수를 나오면서 그 효력은 사라지므로
다시 1이 출력된다.
함수안에서 연산한 결과로 함수 밖의 변수를 변경하는 방법은?
1. return 이용
a = 1
def vartest(a) :
a += 1
return a
a = vartest(a)
print(a)
2. global 이용
a = 1
def vartest() :
global a
a += 1
vartest()
print(a)
global a 는 함수 밖 a를 직접 사용하겠다는 의미를 나타낸다.
그러나 함수는 독립적인 것이 좋으므로
가급적 return을 사용하는 것을 권한다 .
4-2 사용자 입력과 출력
input()은 입력되는 모든 것을 문자열로 취급한다.
입력을 받을 때 안내문구가 필요하다면 input("이 자리!") 에 넣어주면 프롬프트를 띄운다 .
print에 대하여
1. 큰 따옴표(") 또는 작은따옴표(') 로 둘러싸인 문자열은 + 연산과 동일하다.
print('python' 'is' 'cool')
print("python"+ "is" +"cool")
2. 문자열 띄어쓰기는 콤마(,)로 한다.
print('python','is', 'cool')
3. 한 줄에 결과값을 출력하려면 입력인수 end를 이용한다.
for i in range(5):
print(i, end =' ')
4-3 파일 읽고 쓰기
파일객체 = open(파일 이름, 파일 열기 모드)
파일 열기 모드에는 'w', 'r', 'a' 가 있다.
'w'는 읽기모드, 'r'은 쓰기모드이다. 쓰기모드로 열면 해당 파일이 있었다면 원래 내용을 사라지고
원래 없었다면 파일 이름으로 새롭게 생성된다.
'a'는 추가모드이다.
f = open("newfile.txt",'w')
f.close()
이와 같이 코드를 작성하고 실행하면
이처럼 지정한 이름으로 txt파일이 생성됨을 확인할 수 있다.
f = open("newfile.txt",'w')
for i in range(1,11):
data = '%d 번째 줄입니다.\n' %i
f.write(data)
f.close()
이와 같이 잘 저장되었음을 알 수 있다.
외부에 저장된 파일을 읽는 여러 방법
1. readline()
f = open("newfile.txt",'r')
while True :
line = f.readline()
if not line : break # 다 읽었다면
print(line)
f.close()
위와 같은 코드를 이용해 출력할 수 있다.
2. readlines()
파일의 모든 라인을 읽어서 각각의 줄을 요소로 갖는 리스트로 반환한다.
3. read()
파일 내용 전체를 문자열로 반환한다.
파일에 새로운 내용 추가하기
추가모드 'a'
> 원래 있던 값을 유지하면서 새로운 값을 추가해야 할 경우
f = open("newfile.txt",'a')
for i in range(11,20):
data = '%d 번째 줄입니다.\n' %i
f.write(data)
f.close()
with 문과 함께라면
open 과 close를 하는 것이 하는 것이 귀찮다면 한번에 처리 할 수 있는 방법이 있다.
with open("newfile.txt",'r') as f:
line= f.readline()
print(line)
close를 작성하지않아도 된다.
with 을 벗어나면 자동으로 close 된다.
4장 연습문제
Q1.
def fib(n):
if n==0 : return 0
if n==1 : return 1
return fib(n-1) + fib(n-2)
Q2.
sp= open('sample.txt','r')
r= open('result.txt','w')
lines = sp.readlines()
sum =0
for i in lines :
sum += int(i)
average = sum / len(lines)
r.write(str(average))
sp.close()
r.close()
숫자값은 write으로 바로 쓸 수 없음 str()을 이용해 문자열로 변경 후 적어주기
'프로그래밍 > 파이썬🐍' 카테고리의 다른 글
(8)점프투파이썬_[5-2모듈 : 5-4예외처리] (0) | 2022.01.09 |
---|---|
(7)점프투파이썬_[5-1파이썬 프로그래밍의 핵심, 클래스] (1) | 2022.01.08 |
(5)점프투파이썬_[3장for,if,while] (0) | 2022.01.08 |
(4)점프투파이썬_2장 연습문제 (0) | 2022.01.08 |
(3)점프투파이썬[2-6 집합자료형:2-8 변수] (0) | 2022.01.08 |