함수처리
함수 정의
# 함수 하나 정의, 사용
def deposit(balance, money): # 함수 정의, 전달값
print("입금 완료! 잔액은 {0}원 입니다.".format(balance + money))
return balance + money # 반환값
balance = 0
balance = deposit(balance , 1000) # 함수 사용
print(balance) -> 입금 완료! 잔액은 1000원입니다.
-> 1000
# 함수 여러개 사용
def deposit(balance, money): # 함수 정의
print("입금 완료! 잔액은 {0}원 입니다.".format(balance + money))
return balance + money
def withdraw(balance, money):
if balance >= money:
print("출금 완료! 잔액은 {0}원 입니다.".format(balance - money))
return balance - money
else:
print("출금 안됨! 잔액은 {0}원 입니다.".format(balance))
return balance
def withdraw_night(balance, money):
commission = 100 # 수수료
return commission, balance - money - commission
balance = 0
balance = deposit(balance , 1000) # 함수 사용
balance = withdraw(balance, 500) # 함수 사용
commission, balance = withdraw_night(balance, 200)
print("수수료 {0}원, 잔액은 {1}원입니다.".format(commission, balance))
-> 입금 완료! 잔액은 1000원입니다.
-> 출금 완료! 잔액은 500원입니다.
-> 수수료 100원, 잔액은 200원입니다.
기본값
# 기본값 : 호출 시 지정해놓으면 기본으로 설정됨
def profile(name, age = 17, main_lang = "python"):
print("이름 : {0}\t나이 : {1}\t주 사용 언어 : {2}"\
.format(name, age, main_lang))
profile("유재석")
profile("김태호")
-> 이름 : 유재석 나이 : 17 주 사용 언어 : python
-> 이름 : 김태호 나이 : 17 주 사용 언어 : python
키워드 인자
# 키워드로 작성시 순서 바껴도 상관없음
def profile(name, age, main_lang): # 키워드 인자 : name, age, main_lang
print(name, age, main_lang)
profile(name="유재석", main_lang="파이썬", age=20)
profile(main_lang="자바", age=25, name="김태호")
가변인자
def profile(name, age, lang1, lang2, lang3, lang4, lang5):
print("이름 : {0}\t나이 : {1}\t".format(name, age), end = " ")
print(lang1, lang2, lang3, lang4, lang5)
profile("유재석", 20, "python", "java", "c", "c++", "c#")
profile("김태호", 25, "kotlin", "swift", "", "", "")
-> 이름 : 유재석 나이 : 20 python, java, c, c++,c c#
-> 이름 : 김태호 나이 : 25 kotlin, swift
# 언어의 개수가 달라지는 경우
# 가변인자 설정
def profile(name, age, *language): # 언어 정보를 전달하고 싶은 갯수 만큼 전달 가능
print("이름 : {0}\t나이 : {1}\t".format(name, age), end=" ")
for lang in language:
print(lang, end=" ") # 언어들을 모두 한 줄에 표시
print() # 줄바꿈 목적
profile("유재석", 20, "python", "java", "c", "c++", "c#")
profile("김태호", 25, "kotlin", "swift")
-> 이름 : 유재석 나이 : 20 python, java, c, c++,c c#
-> 이름 : 김태호 나이 : 25 kotlin, swift
# end = " " -> # 문장 출력 후 줄바꿈 대신 띄어쓰기
# 다음 문장과 연결 가능
지역변수와 전역변수
# 지역변수 : 함수 내에서 쓸 수 있는 변수
# 전역변수 : 모든 곳에서 쓸 수 있는 변수
# 총이 10자루 있을 때 총을 들고나간 군인 수 만큼의 총 수를 빼 남은 총 개수 구하기
gun = 10 # 전역변수 선언
def checkpoint(soldiers):
gun = gun - soldiers # 지역변수 gun이 선언된 적 없음
print("[함수 내] 남은 총 : {0}".format(gun))
print("전체 총 : {0}".format(gun))
checkpoint(2)
print("남은 총 : {0}".format(gun)) -> 오류 뜸, 변수오류
# 1) global 키워드로 전역변수를 함수 내에서도 사용하기
gun = 10 # 전역변수 선언
def checkpoint(soldiers):
global gun # 전역공간의 gun이라는 변수 사용
gun = gun - soldiers # 지역변수 gun이 선언된 적 없음
print("[함수 내] 남은 총 : {0}".format(gun))
print("전체 총 : {0}".format(gun)) -> 전체 총 : 10
checkpoint(2) -> [함수 내] 남은 총 : 8
print("남은 총 : {0}".format(gun)) -> 남은 총 : 8
# 2) 전달값과 반환값 활용
gun = 10
def checkpoint_ret(gun, soldiers): # 전체 총 수와 군인 수를 전달받음
gun = gun - soldiers # 전달받은 gun 사용
print("[함수 내] 남은 총 : {0}".format(gun))
print("전체 총 : {0}".format(gun))
gun = checkpoint(gun, 2) # gun 값을 함수에 전달
print("남은 총 : {0}".format(gun))
-> 전체 총 : 10
-> [함수 내] 남은 총 : 8
-> 남은 총 : 8
# global 선언보다는 전달값과 반환값을 활용하여
# 전체적인 상황을 몰라도 전달받은 값만 이용하게끔 작성하는 것이 간결!
숫자함수
함수이름 | 의미 | 예제 |
---|---|---|
abs | 절대값 | abs(-5) |
pow | 제곱 | pow(4, 2) |
max | 가장 큰 값 | max(5, 12) |
min | 가장 작은 값 | min(5, 12) |
round | 반올림 | round(3.14) |
print(abs(-5)) # -5 의 절대값 = 5
print(pow(4, 2)) # 4의 2제곱 = 4 * 4 = 16
print(max(5, 12)) # 5 와 12 중 큰 값 = 12
print(min(5, 12)) # 5 와 12 중 작은 값 = 5
print(round(3.14)) # 3.14 의 반올림 = 3
print(round(4.99)) # 4.99 의 반올림 = 5
* math 모듈을 활용하면 보다 다양한 숫자 처리 가능
함수 이름 | 의미 | 예제 |
---|---|---|
floor | 내림 | floor(4.99) |
ceil | 올림 | ceil(3.14) |
sqrt | 제곱근 | sqrt(14) |
# math 모듈사용
from math import * # math 모듈 내의 모든 내용을 가져다 쓰겠다는 의미
print(floor(4.99)) # 4.99 의 내림 = 4
print(ceil(3.14)) # 3.14 의 올림 = 4
print(sqrt(16)) # 16 의 제곱근 = 4
# 다른 방법
import math # 모듈이름과 점(.) 을 반드시 적어야 함.
print(math.floor(4.99)) # math. 과 함께 사용
print(math.ceil(3.14))
print(math.sqrt(16))
random 함수
from random import *
print(random()) # 0.0 이상 1.0 미만의 임의의 값 생성
# 다양한 방법
print(random() * 10) # 0.0 이상 10.0 미만의 임의의 값 생성
print(int(random() * 10)) # 0 이상 10 미만의 임의의 정수 값 생성
print(int(random() * 10) + 1) # 1 이상 10 이하 (11 미만) 의 임의의 정수 값 생성
# 로또번호를 1-45에서 구하는 방법
print(int(random() * 45) + 1) # 1 이상 46 미만의 임의의 정수 값 생성
# 추가 함수
randrange 주어진 범위 내의 임의의 정수 값 생성
randint 주어진 범위 내의 임의의 정수 값 생성(마지막 값 포함)
print(randrange(1, 46)) # 1 이상 46 미만의 임의의 정수 값 생성
print(randint(1, 45)) # 1 이상 45 이하(45를 포함해요!!)의 임의의 정수 값 생성
# 무작위로 데이트 날짜 구하기
from random inport *
date = randint(1, 30)
print("데이트 날짜는 " + str(date) + "일 입니다.")
# -> 데이트 날짜는 15일 입니다.
# (1 - 30 중에 무작위, date는 정수라 str로 문자로 변환하여 함께 출력)
문자열 함수
# len. replace
python = "Python is Amazing"
print(len(python)) # 띄어쓰기를 포함한 문자열의 전체 길이 (length)
print(python.replace("Python", "Java")) # Java is Amazing
# index, find
# index는 찾는 문자열이 없으면 오류남! (find는 -1 처리)
index = python.index("n") # 처음으로 발견된 n 의 인덱스
print(index) # 5 : Python 의 n
index = python.index("n", index + 1) # 6 번째 인덱스 이후에 처음으로 발견된 n 의 인덱스
print(index) # 15 : Amazing 의 n
find = python.find("n") # 처음으로 발견된 n 의 인덱스
print(find) # 5 : Python 의 n
find = python.find("n", find + 1) # 6 번째 인덱스 이후에 처음으로 발견된 n 의 인덱스
print(find) # 15 : Amazing 의 n
# count
print(python.count("n")) # 2 : 문자열 내에서 n 이 나온 횟수
예시
# 1.사이트 별로 비밀번호를 만들어주는 프로그램을 작성하시오.
예) http://naver.com
규칙1 : http:// 부분은 제외 → naver.com
규칙2 : 처음 만나는 점(.) 이후 부분은 제외 → naver
규칙3 : 남은 글자 중 처음 세 자리 + 글자 갯수 + 글자 내 'e'의 갯수 + '!'로 구성
(nav) (5) (1) (!)
url = "http://naver.com"
my_str = url.replace("http://", "")
my_str = my_str[:my_str.index(".")]
password = my_str[:3] + str(len(my_str)) + str(my_str.count("e")) +"!"
print("{0}의 비밀번호는 {1}입니다.".format(url, password))
# -> http://naver.com의 비밀번호는 nav51!입니다.
Author And Source
이 문제에 관하여(함수처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ilov-/함수처리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)