# 1번 문제 : 구구단을 2 - 9단까지 출력하시오
x = 2
while x <= 9:
y = 1
while y <= 9:
print(x, 'x', y, '=', x * y)
y += 1
x += 1
# 2번 문제 : 1 - 100까지 정수 중 2의 배수 또는 11의 배수를 모두 출력하시오
nums = list(range(1, 101))
for x in nums:
if x % 2 == 0 or x % 11 == 0:
print(x)
# 3번 문제 : a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] 에서 최대값과 최소값을 찾으시오. (sorted, sort 사용 금지)
# sort 함수(정렬)을 사용한 경우
a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45]
a.sort()
a[0], a[-1]
# 최대 최소 동시에
_min = a[0]
_max = a[0]
for x in a:
if x < _min:
_min = x
if x > _max:
_max = x
print(_min, _max)
# 4번 문제 : a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] 에서 평균을 구하세요.
# while
i = 0
_sum = 0
while i < len(a):
_sum += a[i]
i += 1
print(_sum / len(a))
# for
_sum = 0
for x in a:
_sum += x
print(_sum / len(a))
### 함수?
# 내장 함수의 예
a = [1, 2, 3, 4]
length = len(a)
print(length)
summation = sum(a)
print(summation)
정의 시 최초에 def 키워드 사용
argument 정의 (함수에 입력으로 전달하는 값을 의미, argument 또는 parameter라고 함)
: (콜론) -> 함수 역시 코드 블록이기 때문에 콜론(:) 필요
body (함수의 구현 부분, 함수 역시 코드 블록이기 떄문에 들여쓰기 된 부분까지 함수의 코드블록으로 인지함)
함수의 네이밍 역시 중요
#### 함수의 정의
def add(x, y):
n = x + y
return n
c = add(30, 300)
print(c)
#### 함수의 사용(호출)
d = add(30, 40)
print(d)
#### 함수 네이밍(naming)
# 의미에 맞지않는 함수명은 사용하지 말자
def substract(x, y):
sub = x - y
return sub
print(substract(4, 3))
#### parameter(argument)(인자)
def test():
print('haha')
print('good')
return 100
a = test()
print(a)
#### Default parameter(기본 인자)
def add2(x, y, z=5):
a = x + y + z
return a
add2(10, 20)
# 기본 파라미터의 다른 예
print(1, 2, 3, sep='!', end='%%%') # 1!2!3%%%
print(2, 3, 4, sep='p') # 2p3p4
디폴트 파라미터 뒤에 일반 파라미터가 위치할 수 없음
e.g) 올바른 예
def test(a, b, c = 1)
def test(a, b =1, c = 2)
def test(a = 1, b = 1, c = 3)
e.g) 올바르지 않은 예
def test(a, b = 1, c)
def test(a = 1, b, c)
def test(a = 1, b = 1, c)
#### keyword parameter (키워드 파라미터)
def test(x, y, z):
a = x + y + z
return a
test(x=10, y=50, z=3) # 63
기본적으로 함수의 종료를 명시
#### return (리턴)
def weird_multiply(x, y):
if x > 10:
return x * y
print(x + y)
return (x + 2) * y
print(weird_multiply(12, 5))
# 비교
def weird_multiply2(x, y):
if x > 10:
return x * y
print(weird_multiply2(2, 5))
#### multiple return (복수 값 반환)
def add_mul(x, y):
s = x + y
m = x * y
return s, m
c = add_mul(20, 3)
print(type(c))
print(c)
a, b = add_mul(20, 3)
print(a, b)
#### variable scope (변수의 범위)
num1 = 10
num2 = 30
def test(num1, num2):
print(num1, num2)
return num1 + num2
test(30, 40)
print(num1, num2)
전달되는 파라미터의 개수가 고정적이지 않은 경우 사용
e.g)
*args, **kwargs
*args : 파라미터를 튜플의 형태로 전달
**kwags : 파라미터를 딕셔너리 형태로 전달(네임드 파라미터)
#### variable length argument (가변길이 인자)
# 파라미터를 정의할때 앞에 * 붙이게 되면 그 함수는 호출하는 입장에선 가변길이 함수가 되고 내부적으론 튜플로 인식이 된다.
def test(*x):
print(type(x))
test(10, 20)
def test_2(*args): # arguments
for item in args:
print(item)
test_2(10, 30, 40)
#### keyword parameter (키워드 파라미터)
def test2(**kwargs): # key word arguments
for key, value in kwargs.items():
print('key:', key, ', value:', value)
test2(a=1, b=2, c=3, d=4, name='Bob', age=90)
# 가변길이 함수의 대표적인 예 **문자열 포맷 함수**
a = '오늘 온도: {today_temp}도, 강수확률은: {today_prob}% 내일온도: {tomorrow_temp}도'.format(tomorrow_temp = 23, today_prob = 40, today_temp = 40)
print(a)