→ C언어의 간단한 예제
/*Sample C program*/
#include <stdio.h>
int main() {
int year = 2020;
printf("Hello World!\n)"
printf("올해는 %d 년도 입니다\n", year);
return 0
}
\n
넣어줘야 함→ Python의 간단한 예제
# Sample Python program
year = 2020
print("Hello World!")
print("올해는 %d 년도 입니다"%(year))
→ Python 들여쓰기
def fib(n):
a, b = 0, 1
while a < n:
print(a, end = ' ')
a, b = b, a+b
print()
fib(500)
# 출력 결과:
# 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
🡆 이런 이유로 머신 러닝, AI 뿐만 아니라 과학계에서 파이썬 사용이 지속적으로 증가
# 함수: '특정 기능'을 수행. '매개변수'로 자료를 전달
my_list = [1, 2, 3]
len(my_list)
sum(my_list)
max(my_list)
.append()
, .sort()
등이 리스트의 메서드에 해당# 메서드: '특정 자료형'에서 '특정 기능'을 수행. 자료명 뒤에 마침표(.)를 찍어서 사용
my_list = [1, 2, 3]
my_list.append(0)
my_list.sort()
my_list.pop()
len(인수)
>>> x = "1234567890"
>>> len(x)
10
x = "1234567890"
i = 0
for temp in x:
i += 1
print(i)
→ 두 줄이면 될 코딩이 5줄이 되었음
🡆 함수는 가독성 뿐만 아니라 재사용 가능한 내용을 여러 번 반복하지 않고 한 번의 정의로 간단하게 사용할 수 있다는 장점이 있음!
🡆 프로그램 코딩 시 길게 코딩하면 흐름을 판단하기 어려워져 디버깅(오류가 발생하는 부분 찾기)이 어려움 → 함수를 사용해 프로그램을 좀 더 간결하게 적을 수 있고 흐름 파악도 쉬어짐
def 함수명(매개변수):
<실행할 문장>
<실행할 문장>
…
return 결과값
인수(argument)와 인자(parameter, 매개변수)의 차이
- 인자 값(Parameter), 매개변수(Parameter)
- 함수를 정의할 때 외부로부터 받아들이는 임의의 값
- 인자 값 == 매개변수 == Parameter
function 함수(a, b) return a+b # 여기에서 a, b가 파라미터 # 파라미터: 함소의 정의에서 사용되는 변수
- 인수(Argument)
- 함수를 호출할 때 사용되는 값
- 위의 함수를 호출한다고 하면
함수(3, 4)
에서 3, 4의 값이 인수(argument)에 해당
- "파라미터의 값으로 아규먼트 3과 4를 대입"이라는 의미
# 출력 함수 정의
>>> def in_print(x):
print(x)
# 자료형에 상관없이 매개변수에 전달되는 자료형을
# 파이썬이 알아서 자료형 인지하고 받아들임
>>> in_print(1)
1
# 문자열 인자 전달
>>> in_print("abcd")
abcd
# 자료형 인자 전달
>>> in_print([1, 2, 3, 4])
[1, 2, 3, 4]
# 튜플형 인자 전달
>>> in_print([('a', 1), ('b', 2)])
[('a', 1), ('b', 2)]
# 매개변수의 개수가 다를 때 오류 발생
>>> in_print(1, 2)
# 입력 받은 3개의 매개변수를 합하는 함수
>>> def user_sum(x, y, z):
return x+y+z
# 인수는 순서대로 전달: 1 → x, 2 → y, 3 → z
>> print(user_sum(1, 2, 3))
6
>> print(user_sum(3, 4, 5))
12
# 파이썬이 매개변수를 받을 땐 자료형을 알아서 받아주지만
# return x+y+z에서 숫자와 문자를 더할 수 없어
# 오류 발생
>> print(user_sum(1, 'a', 4))
# 인수의 개수가 달라도 오류 발생
>> print(user_sum(1, 2))
# 함수 정의
>>> def subtraction(x, y):
return x-y
# 5 → x, 3 → y에 전달되어 5-3의 결과가 나옴
>>> a = subtraction(5, 3)
>>> print(a)
2
# 5 → y, 3 → 3이므로 3-5의 결과가 나옴
>>> a = subtraction(y=5, x=3)
>>> print(a)
-2
*
사용# 가장 큰 값을 구하는 함수를 정의
>>>> def user_max(*args):
ret = args[0]
for x in args:
if x>ret: ret=x
return ret
>>> print(user_max(1, 4, 6, 3, 8))
8
>>> print(user_max(9, -10, -4, 3, 5, 0, 1))
9
>>> print(user_max(1))
1
>>> print(user_max(1, 6))
6
>>> print(user_max('c', 'a', 'b'))
'c'
>>>> def user_max(*args):
print(args)
ret = args[0]
for x in args:
if x>ret: ret=x
return ret
>>> print(user_max(1, 4, 6, 3, 8))
(1, 4, 6, 3, 8)
8
>>> print(user_max(9, -10, -4, 3, 5, 0, 1))
(9, -10, -4, 3, 5, 0, 1)
9
>>> print(user_max('c', 'a', 'b'))
('c', 'a', 'b')
'c'
# 마지막 매개변수 option이
# True이거나 값이 없으면 곱하기
# False이면 나누기를 하는 함수
>>> def calculate(x, y, option=True):
if option: ret = x*y
else: ret = x/y
return ret
>>> calculate(8, 4, True)
32
# 값이 없으면 초기값인 True → 곱하기
>>> calculate(8, 4)
32
# 나누기
>>> calculate(8, 4, False)
2.0
>>> def test():
print("Hello")
>>> priont(test())
Hello # test라는 함수를 실행해서 출력됨
None # print(test())의 test() 함수 결과값 출력
>>> def test():
print("Hello")
return # 중간에 return되므로 World는 출력 X
print("World")
>>> test()
Hello
>> print(test())
Hello
None
>>> def user_sum(x, y, z):
return x+y+z
>>> a = user_sum(1, 2, 3)
>>> print(a)
6
>>> def calc(x, y, z):
return x+y+z, x*y*z
>>> a = calc(2, 3, 4)
>>> print(a)
(9, 24)
# 리턴 값을 각각의 변수로 반환 받고 싶으면
# 콤마 구분자로 각각 받아도 되고
# 튜플 형식으로 받아도 됨
>>> a, b = calc(2, 3, 4)
>>> print(a)
9
>>> print(b)
24
>>> (a, b) = calc(2, 3, 4)
>>> print(a)
9
>>> print(b)
24
>>> def calc(x, y, z):
return x+y+z
return x*y*z
>>> a = calc(2, 3, 4)
>>> print(a)
9
→ xyz의 값은 출력되지 않음!
함수는 return문을 만나는 순간 리턴값을 반환한 다음 함수를 빠져나가게 되어 있기 때문
a = 3
def solution(a):
a += 1
solution(a)
print(a)
def solution(a):
a += 1
solution(4)
print(a)
global 명령어
return 사용
a = 3
def example(a):
a = a + 5
return a
a = example(a)
print(a)
# 살행 결과: 8
함수 이름 = lambda 매개변수1, 매개변수2, … : 매개변수를 이용한 표현식
multiple = lambda a, b : a*b
result = multiple(5, 7)
print(result)
# 실행 결과: 35
if 조건문:
수행할_문장1
수행할_문장2
...
else:
수행할_문장A
수행할_문장B
...
파이썬이 다른 언어보다 보기 쉽고 소스 코드가 간결한 이유는 바로 콜론(:)을 사용하여 들여쓰기를 하도록 만들었기 때문이다. 하지만 이는 숙련된 프로그래머들이 파이썬을 처음 접할 때 제일 혼란스러워하는 부분이기도 하다. 다른 언어에서는 if 문에 속한 문장들을 {}로 감싸지만, 파이썬에서는 들여쓰기로 해결한다는 점을 기억하자.
>>> pocket = ['paper', 'money', 'cellphone']
>>> if 'money' in pocket:
... pass
... else:
... print("카드를 꺼내라")
...
→ pocket 리스트 안에 money 문자열이 있기 때문에 if 문 다음 문장인 pass가 수행되고 아무런 결괏값도 보여 주지 않음
if 조건문:
수행할_문장1
수행할_문장2
...
elif 조건문:
수행할_문장1
수행할_문장2
...
elif 조건문:
수행할_문장1
수행할_문장2
...
...
else:
수행할_문장1
수행할_문장2
...
>>> pocket = ['paper', 'money', 'cellphone']
>>> if 'money' in pocket: pass
... else: print("카드를 꺼내라")
변수 = 조건문이_참인_경우의_값 if 조건문 else 조건문이_거짓인_경우의_값
message = "success" if score >= 60 else "failure"