파이썬 - divmod

Minji Lee·2023년 2월 14일
0

몫과 나머지 구하는 문제

[내가 작성한 코드]

a, b = map(int, input().strip().split(' '))
quot=a//b
remain=a%b
print(quot, remain)

❗️파이썬에서는 divmodunpacking 사용하면 더 간결하게 짤 수 있음

a, b = map(int, input().strip().split(' '))
print(*divmod(a,b))
  • 무조건 divmod를 사용하는 것이 아니고 필요에 따라 선택하여 사용
    ex) 작은 숫자 다룰 때는 a//b, a%b보다 느리지만, 큰 숫자를 다룰 때는 divmod가 더 빠름

packing(패킹)? unpacking(언패킹)?

1. packing(패킹)

: 함수에서 여러 개의 매개변수를 쓰기 위해 묶는 것

1) *args(arguments의 줄임말)
: 함수에서 여러 개의 매개변수를 쓰기 위해 사용

def score(name, *args):
	print(name, args)
score("홍길동","수학")
score("홍길동","수학","국어","영어")
// 결과값
// 홍길동 ('수학',)
// 홍길동 ('수학','국어','영어')
  • *args로 받은 매개변수는 튜플로 출력

2) **kwargs(keyword argument의 줄임말)
: '키워드=특정 값' 형태로 함수 호출

def score(name, **kwargs):
	print(name, kwargs)
score("홍길동", 국어="90", 수학="80", 영어="70")
// 결과값
// 홍길동 ('국어':'90', '수학':'80', 영어:'70')
  • 딕셔너리로 결과 값 출력

❗️ *는 **의 무조건 앞에 있어야 함!(즉, args는 kwargs앞에 있어야 함)


2. unpacking(언패킹)
: 여러 매개변수를 포함하는 하나의 객체를 여러 개로 풀어주는 방법
패킹은 매개변수 앞사용, 언패킹은 인수 앞를 사용

def average(a,b,c):
	return (a+b+c)/3
n=[90,80,70]
print("average:",average(*n))
//결과값
// average: 80
  • 입력은 리스트형으로 한꺼번에 넣었지만, *를 앞에 넣어서 언패킹되어 결과가 나옴
  • 언패킹은 집합 타입 경우에도 사용 가능
def total(a,b,c):
	return a+b+c
    
n=[90,80,70]
s='abc'
s1={'a','b','c'}
s2={'패킹':1, '언패킹': 2, '이해완료':3}

print("result:",total(*n))
print("result:",total(*s))
print("result:",total(*s1))
print("result:",total(*s2))

//결과값
//result:240
//result:abc
//result:cab
//result:패킹언패킹이해완료

[참고사이트]
https://wjunsea.tistory.com/65

0개의 댓글