함수 사용 해보기
def test(): # 함수를 선언 하는 부분
print('hellow world!') # 함수 실행시 실행되는 명령문
test() # 함수 사용하는 부분
연습 문제
구구단 출력하기
def test():
for i in range(2,10):
for v in range(1,10):
print(f'{i} * {v} = {i*v:2d}')
print()
test()
def multi(m):
for n in range(1, 10):
print(f'{m} * {n} = {m*n:2d}')
if __name__ == '__main__':
for i in range(2, 10):
multi(i)
print()
__name__ 의 의미?
__name__ 는 숨겨진 변수 이다. 모듈의 이름을 가지고 있는 변수로 실행한 파일의 이름을
가지고 있는 변수 이다.
if __name__ == '__main__' 는 왜 사용 할까?
파이썬은 최초로 시작한 스크립트 파일과 모듈의 차이가 없기 때문에 어떤 스크립트 파일이든 시작점도 될 수 있고 모듈도 될 수 있다.
그래서 name 변수를 통해 현재 스크립트 파일이 시작점인지 모듈인지 판단한다.
예를 들어
app.py 라는 파일에 아래 코드를 작성하고 app.py를 실행하면 __main__ 이라고 찍히는걸 확인 할 수 있다.
print(__name__)
app2.py 라는 파일에 아래 코드를 작성 하고 실행 시키면 app 이라고 찍히는걸 확인 할 수있다.
import app
즉 import 로 다른 파일을 불러올 경우 if __name__ == '__main__' 의 조건문을 달아서 함수가 바로 실행되는 걸 막을 수 있다.
숫자 읽기 함수 - 매개변수는 정수 1이상 10 이하의 정수
def korean_number(num):
if num == 1:
return '일'
elif num == 2:
return '이'
elif num == 3:
return '삼'
elif num == 4:
return '사'
elif num == 5:
return '오'
elif num == 6:
return '육'
elif num == 7:
return '칠'
elif num == 8:
return '팔'
elif num == 9:
return '구'
elif num == 10:
return '십'
print(korean_number(3))
# 삼
태어난 해를 네 자리 숫자로 입력하면 한국 나이를 반환화는 함수
from datetime import datetime
def korean_age(age):
year = datetime.today().year
reutnr year - age + 1
print( korean_age(1995) )
# 28
이자 (단리) 계산
원금(Principal) , 이율(rate) , 기간(time) 주어 줬을 때, 이자(Interest) 구하는 공식
I = Prt
원리금(Amount) 구하는 식
A = P(1+rt)
# 이자 구하는 함수
def simple_interest(p,r,t):
return p * r * t
print( simple_interest(10000000, 0.03875, 5) )
# 1937500.0
# 원리금 구하는 함수
def simple_interest_amount(p,r,t):
return p*(1+r*t)
# return p + (p * r * t)
print( simple_interest_amount(10000000, 0.03875, 5) )
# 11937500.0
이자 (복리) 계산
P' = 원리금
P = 원금
r = 연이율
t = 기간
n = 복리 횟수
p = 1500000
r = 0.043
t = 6
n = 4
p * (1 + r / n) ** (n * t)
#1938836.8221341055
def compound_interest_amount(p,r,t,n):
return p * (1 + r /n) ** (n * t)
print( compound_interest_amount(1500000,0.043,6,4) )
# 1938836.8221341055
lambda 매개변수 : 표현식
(lambda x,y:x+y)(10,20)
30
map( 함수,리스트 )
map( lambda x: x ** 2 , range(5) ) # 파이썬 2
[ 0 , 1 , 4 , 9 , 16 ]
list( map( lambda x: x ** 2 , range(5) ) ) # 파이썬 2 or 파이썬 3
[ 0 , 1 , 4 , 9 , 16 ]
reduce( 함수 , 시퀀스 )
from functools import reduce
test = reduce(lambda x,y : x+y,range(5))
print(test)
# 10
filter( 함수 , 리스트 )
filter(lambda x: x % 2, range(10)) # 파이썬 2
[1, 3, 5, 7, 9]
list(filter(lambda x: x % 2, range(10))) # 파이썬 2 및 파이썬 3
[1, 3, 5, 7, 9]
연습 문제
놀이공원 - 놀이기구의 이름과 키 제한을 나타낸 문자열을 입력 받아 놀이 기구의 이름,탑승 가능한 키의 하한,상한을 각 행에 출력
split 메서드를 써서 , 구분자 기준으로 문자열을 분할
text = 'test : www'
text = text.split(':')
# ['test ',' www']
str.strip 으로 문자열 앞뒤의 공백을 제거 할 수 있다.
str.strip(" I am a boy. ")
# 'I am a boy.'
replace 매서드는 구분자를 원하는 문자열로 변경 할 수 있다.
text = '100cm'
text.replace('cm','')
# 100
def read(text):
ridename, limit = map(str.strip, text.split(':'))
cmmin = cmmax = None
if '~' in limit: # 문자열에 '~' 가 있다면 실행
cmmin, cmmax = map(lambda x: int(x.replace('cm', '')), limit.split('~'))
elif "이상" in limit: # 문자열에 '이상' 이 있다면 실행
cmmin = int(limit.split("cm")[0])
return ridename, cmmin, cmmax
if __name__ == "__main__":
ridename, cmmin, cmmax = read(input())
print("이름:", ridename , '\n')
print("하한:", cmmin)
print("상한:", cmmax)
ex )
입력
와일드 윙: 110cm 이상
출력
이름: 와일드 윙
하한: 110
상한: None
입력
플라이벤처: 140cm~195cm
출력
이름: 플라이벤처
하한: 140
상한: 195
'PYTHON > 기본 문법' 카테고리의 다른 글
PYTHON - 문자열 리스트 (0) | 2022.11.10 |
---|---|
PYTHON - 데이터 타입 (0) | 2022.11.08 |
PYTHON 기본 문법 ( for , match - case 문 ) (1) | 2022.11.08 |
PYTHON 기본 문법 (while,if-elif-else 문) (0) | 2022.11.07 |
PYTHON 기본 문법 (사칙연산,변수선언,배열) (0) | 2022.11.07 |