함수의 활용
팩토리얼 (Factorial)
n! = n * )n-1) * (n-2) * ...*1
피보나치 수열
#메모 변수를 만듭니다.
dictionary = {1:1,2:1}
#함수를 선언합니다.
def fibonacci(n):
if n in dictionary:
#메모가 되어 있으면 메모된 값을 리턴
return dictionary[n]
else:
#메모가 되어 있지 않으면 값을 구함
output = fibonacci(n-1) + fibonacci(n-2)
dictionary[n] = output
return output
#함수 호출
print(fibonacci(10))
print(fibonacci(20))
print(fibonacci(30))
print(fibonacci(40))
print(fibonacci(50))
함수 고급
튜플(Tuple)
-함수와 함께 많이 사용되는 리스트와 비슷한 자료형
-한번 결정되 요소를 바꿀 수 없다는 점이 리스트와 다름
람다(Lambda)
-매개변수로 함수를 전달하기 위해 함수 구문을 작성하는 것이 번거롭고 코드 낭비라 생각될 때 ㅎ마수를 간단하고 쉽게 선언하는 방법
-1회용 함수를 만들어야 할 때 많이 사용함
람다란? ->간단한 함수를 쉽게 선언하는 방법
lamda 매개변수 : 리턴값
함수를 매개변수로 전달하는 대표적인 표준 함수
map() 함수
리스트의 요소를 함수에 넣고 리턴된 값으로 새로운 리스트를 구성함
map(함수, 리스트)
filter() 함수
리스트의 요소를 함수에 넣고 리턴된 값이 True인것으로 , 새로운 리스트를 구성함
filter(함수, 리스트)
파일 처리
파일 열고 닫기
open() 함수
파일 객체 = open(문자열: 파일경로, 문자열: 읽기 모드)
모드에 다음을 지정할 수 있음
closed()함수
파일 객체.close()
file = open("basic.txt","w")
file.write("Hellow world")
file.closed()
with 키워드
조건문과 반복문이 들어가다 보면 파일을 열고 나서 닫지 않는 실수를 하는 경우가 있음
with구문 종료 시 파일을 자동으로 닫음
with open(문자영: 파일 경로, 문자열: 모드) as 파일 객체 :
문장
with open("basic.txt","w") as file:
file.write("Helloe Python Programming...!")
텍스트 읽기
read() 함수
파일 객체.read()
with open("basic.txt","r") as file:
contents = file.read()
print(contents)
텍스트 한줄 씩 읽기
CSV, XML, JSON 방법 등으로 텍스트를 사용하여 데이터를 구조적으로 표현함
텍스트 한줄씩 읽기
랜덤하게 1,000명의 키와 몸무게 만들기
#랜덤한 숫자를 만들기 위해 가져옵니다.
import random
#간단한 한글 리스트를 만듭니다.
hanguls = list("가나다라마바사아자차카타파하")
#파일을 쓰기 모드로 엽니다.
with open("info.txt","w") as file:
for i in range(1000):
#랜덤한 값으로 변수를 생성 합니다.
name = random.choice(hanguls) + random.choice(hanguls)
weight = random.randrange(40,100)
height = random.randrange(140,200)
#텍스트를 씁니다.
file.write("{}, {}, {}\n".format(name, weight, height))
텍스트 한 줄식 읽기
데이터를 한 줄씩 읽어 들일 때는 for 반복문을 다음과 같이 사용함
for 한줄을 나타내는 문자열 in 파일 객체:
처리
with open("info.txt","r") as file:
for line in file:
#변수를 선언합니다.
(name, weight, height) = line.strip().split(". ")
#데이터가 문제없는지 확인합니다 : 문제가 있으면 지나감
if(not name) or (not weight) or (not height):
continue
#결과를 계산합니다.
bmi = int(weight)/((int(height)/100)**2)
result = ""
if 25<=bmi:
result = " 과체중"
elif 18.5<= bmi:
result = "정상 체중"
else :
result = "저체중"
#출력 합니다
print('\n'.join(["이름: {}","몸무게: {}","키: {}","BMI: {}","결과: {}"])
.format(name, weight, height, bmi, result))
print()