phython 기초 공부 내용 정리(함수, 메소드)

홍준성·2022년 5월 29일
0

python 기초 공부

목록 보기
8/12

함수의 선언

def 메소드명(매개변수,...)
	실행할 문장
    리턴값
번호이름설명
(1)메소드명동사로 작성한다.
(2)매개변수매개변수는 f(x) = 2x+1에서 f(x)의 (x)를 뜻함 → 외부에서 값을 전달받기 위해서는 반드시 선언되어야 하며, 생략이 가능하다.
(3)실행할 문장생략가능
(4)리턴 값생략가능

메소드 선언 시 주의사항

  • 메소드 내에서 메소드를 선언하지 않고 메소드를 사용할 때는 보통 메소드 안에서 사용한다.
  • 매개변수가 없을 때에는 사용 시 값을 전달할 수 없다.
  • 리턴 값이 있다면 사용하는 부분 통째로 리턴값으로 봐야한다.
  • 메소드의 목적
    (1) 재사용의 목적(단, 특정성을 부여해서는 안된다)
    (2) 소스코드 간결화

메소드 선언 순서

(예시) 두 정수의 덧셈 메소드 만들기
1. 메소드의 이름을 생각한다.
def add()
2. 매개변수를 생각한다.
def add(num1, num2):
3. 실행할 문장을 생각한다.

def add(num1, num2):
	result = num1 + num2
  1. 리턴 값을 생각한다.
def add(num1, num2):
	result = num1 + num2
    return result
  • 리턴을 해야 할 때
    (1) 메소드 내에서 모든 작업이 끝나지 않을 때
    (2) 사용하는 부분에 메소드 내의 작업 결과를 알려주어야 할 때
f(x) = 2x+1
def f(x):
	return 2*x+1

print(f(3) +9)
  • 리턴을 하지 않아야 할 때
    (1) 메소드 내에서 모든 작업이 완료될 때
    (2) 사용하는 부분에 결과를 알릴 필요가 없을 때
def add(num1, num2):
	result = num1 + num2
    print(result)
add(1, 3)

예시

1~100까지 print()로 출력하는 메소드
def printFrom1To100():
	for i in range(100):
    	print(i+1)
printFrom1To100()
1~10까지의 합을 구하는 메소드
def sumFrom1To10():
	result = 0
    for i in range(10):
    	result += i + 1
    return result
sumFrom1To10()
자연수를 음수로 바꿔주는 메소드
def changeToNegative(num):
	result = 0
    
    if num > 0 :
    	result = num * -1
    else :
    	result = False
        
    return result

result = changeToNegative(int(input("자연수 : ")))

if not result:
	print("자연수만 가능합니다.")
else:
	print(result)
1~n까지의 합을 print()로 출력하는 메소드
def printSumFrom1(end):
	result = 0
    for i in range(end):
    	result += i + 1
    print(result)
printSumFrom1(10) -> 1부터 10까지의 합 출력됨
홀수를 짝수로, 짝수를 홀수로 바꿔주는 메소드
def change(num):
	if num > -1 :
    	num += 1
    else :
    	num = False
    return num

num = int(input("정수 : "))
result = change(num)
msg = ""

if not result :
	msg = "음수는 불가능합니다."
else:
	if result % 2 == 0:
    	msg = "홀수에서 짝수로 변경되었습니다."
    else:
    	msg = "짝수에서 홀수로 변경되었습니다."
        
print(msg)
5개의 정수를 오름차순으로 정렬해주는 메소드
def sortASC(numList):
	for i in range(len(numList) - 1) :
    	for j in range(i+1, len(numList)):
        	if numList[i] > numList[j] :
            	temp = numList[i]
                numList[i] = numList[j]
                numList[j] = temp

// 처음 비교를 예로 들면, i는 9가 되고 비교 대상은 i+1인 7,3,1,2가 되기때문에 j는 i+1이 된다.
// range(len(numList)-1)인 이유는 9, 7, 3, 1까지 비교를 다 했다면 마지막 2는 할 필요가 없기 때문
//하지만 j에서는 끝까지 계속 비교를 해줘야하기 때문에 len(numList)로 작성
//temp라는 빈 공간에 임시로 저장을 해두어야 i값과 j값이 섞이지 않는다.(3자 교환)
numList = [9, 7, 3, 1, 2]
sortASC(numList)
print(numList)

심화 예시

5개의 정수 중 최대값과 최소값을 구해주는 메소드
def getMaxAndMin(dataList):
	maxData = dataList[0]
    minData = dataList[0]
    resultList = []
    //이런식으로 대소 비교를 할 때는 항상 0번째 값을 기준으로 진행
    //따라서 비교도 range(1, len(dataList))부터 시작
    
    for i in range(1, len(dataList)) :
    	if maxData < dataList[i]:
        	maxData = dataList[i]
        
        if minData > dataList[i]:
        	minData = dataList[i]
            
        resultList.append(maxData)
        resultList.append(minData)
        return resultList
        // 만약 resultList에 담지 않고, 
           return maxData, minData를 한다면 tuple로 담겨져서 들어옴(방법은 무엇으로 해도 상관 없다)
            
dataList = [3, 5, 7, 8]
result = getMaxAndMin(dataList)
print("최대값 : " + str(result[0]))
print("최소값 : " + str(result[1]))
소문자를 대문자로 바꿔주는 메소드
def changeToUpper(string):
	for i in string:
    	if ord(i) >= 97 and ord(i) <= 122:
        	//소문자 a 아스키코드 값은 97, 대문자 A는 65로 두 문자의 아스키코드 값 차이는 32
            chr(ord(i) -32)
        else :
        	result += i
    return result
한글을 정수로 바꿔주는 메소드(일공이사 → 1024)

def changeToInteger(hangle):
	hangle_org = "공일이삼사오율칠팔구"
    result = ::
    for i in hangle:
    	result += str(hangle_org.index(i)) 
        // 정수는 연산이 되기 때문에 연결이 안되어서 문자열로 바꿔줌
    return int(result)
profile
준성이의 개발자 공부 velog

0개의 댓글