Python

[Python] 함수

아잠만_ 2024. 6. 26. 10:55

함수

def 함수이름(매개변수) :

# 자바는 컴파일러 언어이기 때문에 기계어로 만들어 클래스를 호출하지만
# 파이썬은 인터프리터 방식이기 때문에 순서대로 읽어가기 때문에 함수를 호출하기 위해서 위에서 선언해줘야한다
def add(a,b): 
    return a+b

def minus(a,b): 
    return a-b

def multiply(a,b): 
    return a*b

def divide(a,b): 
    return a/b

sum = add(4,2)
min = minus(4,2)
mul = multiply(4,2)
div = divide(4,2)

print("sum:", sum) # sum: 6
print("min:", min) # min: 2
print("mul:", mul) # mul: 8
print("div:", div) # div: 2.0
더보기
자바 형식
package day03;

public class MyDef01 {
	public static void main(String[] args) {
		int sum = add(4, 2);
		
		System.out.println("sum: "+sum);
		
	}
	
	public static int add(int a, int b) {
		return a+b;
	}
}

자바는 컴파일러 언어이기 때문에 아래에서 선언해줘도 함수를 사용할 수 있으나

파이선은 인터프리터 언어이기 때문에 아래에서 선언해주면 위에서부터 순차적으로 읽어오기 때문에 오류가 발생한다

문제 1. 홀짝

from random import random
def getHJ(): # 홀, 짝을 반환하는 함수
    rnd = random()
    if rnd>0.5 :
        return "홀"
    else :
        return "짝"

com = getHJ()

print("com", com)

문제 2. 구구단

def showDan(dan):
    print("== {}단 ==".format(dan))
    for i in range(1,9+1):
        print("{} * {} = {}".format(dan, i, dan*i))
        
showDan(6)

showDan은 출력(return)하는 값이 없음

더보기
package day03;

public class MyDef03 {

	public static void main(String[] args) {
		showDan(6);
	}
	
	public static void showDan(int dan) {
		for(int i=1; i<=9; i++) {
			System.out.println(dan + " * " + i + " = "+ dan*i);
		}
	}
}

문제 3. 단순 출력

def printYourCeleb():
    print("오리")
    
printYourCeleb()

출력

  java python
input (매개변수) 여러개 가능 ( 0 ~ n ) 여러개 가능 ( 0 ~ n )
output (return) 없거나(void), 1개만 존재 튜플(Tuple)

튜플(tuple)

배열은 아니지만 배열처럼 동작하는 python의 output 형식

return이 2개 이상일 경우에는 각각의 변수의 수의 맞게 초기화하면 각각의 값이 들어가지만

하나의 변수에만 넣을 경우 그 해당 변수에 tuple값이 들어가게 된다

그 tuple값 한 개를 꺼내고 싶을 경우 배열을 사용하는 방식과 동일하게

이름[index번호] 를 사용하면 된다

def add_min_mul_div(a,b):
    return a+b, a-b, a*b, a/b

sum, min, mul, div = add_min_mul_div(4, 2)

# sum, min, mul = add_min_mul_div(4, 2) # too many values unpack 오류 
sum = add_min_mul_div(4, 2) 

print("sum:", sum) # sum: (6, 2, 8, 2.0) -> tuple
print("mul:", sum[2]) # mul: 8

# print("min:", min)
# print("mul:", mul) 
# print("div:", div)

로또를 자바형식으로 표현하기

python 형식

package day03;

import java.util.Arrays;

public class MyLotto {
	public static void main(String[] args) {
		int[] arr = new int[45]; // 번호를 저장할 배열 선언
		int num = 1; // 숫자가 들어갈 값
		for(int i=0; i<arr.length; i++) { // 로또 번호 저장
			arr[i]=num++;
		}
		
		for(int i=0; i<1000; i++) { // 번호 섞기
			int rnd = (int) (Math.random()*45);
			int temp = arr[0];
			arr[0]=arr[rnd];
			arr[rnd]=temp;
		}
		
		int[] lotto = {arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]}; // 6개 숫자 뽑음
		
		Arrays.sort(lotto); // 번호 정렬
		
		for(int i=0; i<lotto.length; i++) { // 출력
			System.out.print(lotto[i]+" ");
		}
	}
}

package day03;

import java.util.ArrayList;
import java.util.Collections;

public class MyLotto2 {
	public static void main(String[] args) {
		ArrayList<Integer> list = new ArrayList<>();
		
		int num = 1;
		for(int i=0; i<45; i++) {
			list.add(num++);
		}
		
		for(int i=0; i<1000; i++) {
			int rnd = (int) (Math.random()*45);
			int temp = list.get(0);
			list.set(0, list.get(rnd));
			list.set(rnd, temp);
		}
		
		ArrayList<Integer> lotto = new ArrayList<>();
		
		for(int i=0; i<6; i++) {
			lotto.add(list.get(i));
		}
		
		Collections.sort(lotto);
		
		for(int i=0; i<lotto.size(); i++) {
			System.out.print(lotto.get(i)+" ");
		}
	}
}