오늘 학습한 내용 (Fundamental Stage)
: 노드 4. 파이썬으로 코딩 시작하기
♣ 시간관계상 아쉽게도 Fundamental Stage는 4.15절까지만 포스팅 하겠습니다 ㅠㅠ
<4.1~4.5절>
- 수학에서의 함수 : 입력값에 대해 출력값을 가지는 관계
- 프로그래밍에서의 함수 : 불려진 시점에 작업을 수행. 입력값이 있을 수도, 없을 수도 있다.
- 파이썬 print() 실행 결과 : 빈값
- 파이썬 print(1) 실행 결과 : 1
- 파이썬 print(1+1) 실행 결과 : 2 → 수학에서의 계산과 같음
- 프로그래밍 분야에서는 입력값을 다른 말로 인자(argument)라고 한다.
- 문자열 : 숫자 대신 글자를 표현하기 위해 '' or "" 로 둘러싸인 글자들의 집합
- 문자열은 더하기(+)를 통해 결합이 가능하지만, 빼기(-)는 오류가 발생한다. 예를 들어 print('인공' + '지능') 은 '인공지능'으로 출력되지만, print('인공지능' - '인') 은 오류구문이다.
- 문자열을 출력하기 위해서는 반드시 '' 나 "" 를 붙여서 표현해야 한다. 예를 들어 print(something) 은 오류구문이 된다.
- def : 파이썬에서 함수를 정의해 주는 예약어이다.
- 입력값을 받지 않는 say_hi 함수는 '안녕!'을 출력한다.
- 위의 코드와 같이 def는 함수를 정의하는 것이기 때문에, 함수의 정의가 끝나는 시점까지는 반드시 들여쓰기를 유지해야 한다.
- 아래 코드와 같이 함수를 정의한 후에 변수를 지정하여 변수를 출력하면 오류구문이다.
- 아래 코드와 같이 함수 밖에서 정의된 변수를 읽어와서 함수를 실행하면 '하루'가 출력된다. 뒤이어 name을 '시우'로 재설정하면 이미 name이 함수 내에 내장되어 있으므로 재설정된 name인 '시우'가 출력된다.
- 아래 코드가 16번과 다른 점은 코드 세 번째 줄에 있다. 세 번째 줄의 name = '시우'는 그 함수 내에서만의 문자열로 간주되므로 함수를 호출해도 변화가 없다. 첫째 줄의 name 문자열이 그대로 출력되는 것이다.
- 따라서, 함수에 옵션을 넣고 싶을 때는 'print(함수 밖에서 정의된 임의의 변수)' 형태로 나타내어 함수를 호출해야 오류가 나지 않는다.
<4.6~4.8절>
- 첫째 줄과 같이(마치. y=f(x)와 같이) 함수와 변수를 정의하고 둘째 줄처럼 출력을 실행하면 이전에 살펴보았던 문자열의 더하기와 같은 방식으로 출력된다. 여기서 더하기는 공백도 모두 포함한다.
- 위의 코드에서 name은 입력값으로 주어진 인자를 받는 변수로서, 매개변수라고 한다.
- 위의 코드에서 외부에서 함수를 호출할 때 넣어 준 '준이'는 매개변수에 대한 인자가 된다.
- 위의 코드와 같이 함수가 정의된 상태에서 매개변수 없이 함수만 출력하면 오류가 발생한다.
- 이와 같이 함수를 호출할 때는 미리 정의된 입력값을 넣어야 문제가 생기지 않는다.
- 아래의 코드와 같이 함수가 정의되었다면, name을 아무 것도 지정하지 않았을 때 기본값인 'somebody'를 출력하고, 이름이 있을 경우에는 그 이름을 출력해준다. 따라서 각각의 함수에 대한 Output은 다음과 같이 나온다.
- 함수에 매개변수가 2개 들어가도록 설정되어 있다면, 인자 또한 반드시 2개가 들어가야 한다. 그렇지 않으면 오류가 발생한다.
- 함수를 정의할 때 쓰인 인자를 알고 있다면 함수 호출 시 직접 붙이는 것도 가능하다.
- 위의 코드에서 name1, name2 이외의 매개변수를 쓰고 인자를 지정할 경우, 오류가 발생한다.
- 아래의 코드와 같이 기본값이 있는 인자들이 기본값이 없는 필수 인자들의 뒤에 배치되는 규칙이 있다. 이 규칙을 어기면 오류가 발생한다.
- 아래 코드와 같이 add 함수와 매개변수 2개를 지정하고 출력하는 코드에 따라 세 번째 줄의 결과는 정상적으로 3으로 출력된다.
- 위의 코드의 네 번째 줄의 오류 사유는 NoneType와 int 간의 +연산은 가능하지 않다는 것입니다. 여기서 NoneType는 add(1, 2)를 의미한다.
- 아래의 코드와 같이 함수 실행 결과를 가지고 무언가를 하기를 원하면, return을 이용해서 그 값을 출력값으로 반환하도록 하면 된다.
★ 이 부분은 좀 이해하기 어려운 부분이었는데, 혹시 이 코드 이해 되시는 분 있으시면 이 글에 댓글로 남겨주시면 그걸로 이해해 보도록 하겠습니다... ㅠ
(+) 긴급수정 : 정답 BCAD(X) → DCAB(O)
<4.9~4.12절 : 제어문>
♣ 본 내용은 Python Master에서 다룬 일부 내용이 응용된 부분으로, 이해를 위주로 작성하고 필요한 부분만 정리했습니다.
- 파이썬에서 특정 조건에 따라 필요한 횟수만큼 반복 실행하는 등 프로그램의 흐름을 제어할 수 있는 방법이 있다. (if, elif, else, while, for 등)
- 피보나치 수는 F(1)=F(2)=1이라고 두고 F(3)부터 그 전전 값과 전 값을 더하여 만들어진 수이다. 예를 들면, F(10) = F(8)+F(9)이다. 피보나치 수를 이용하여 다음과 같이 조건이 참일 동안 반복을 실행하는 while 구문에 적용한 예시이다.
- 위와 같은 유한한 반복문을 루프(Loop)라 하며, 무한한 반복문은 무한 루프(Infinite Loop)라고 한다.
- for도 루프의 일종이다.
- for 루프를 쓰면 순서대로 엮인 값들을 하나씩 처리할 수 있다.
- 여기서 순서대로 엮인 값을 프로그래밍에서는 반복 가능한(Iterable) 객체라고 한다.
- 문자열 'IRENE'을 for를 이용해 한 글자씩 출력하는 방법이다.
<4.13~4.15절 : 다양한 자료형(부분소수점 수까지..)>
♣ 본 내용은 이전 AI-REMEMBER의 Python Master 영역에서 다루었던 내용이거나 곧 다뤄지는 내용이기 때문에, 자료형에 대한 간단한 구조만 정리하고 넘어가겠습니다.
- 파이썬은 숫자가 커지면 알아서 메모리를 더 사용한다. 따라서 아무리 숫자가 곱절로 커져도 크게 신경 쓸 필요는 없다. 가령 1000을 10제곱하면 짐작할 수 없을만큼 엄청난 수가 나오는데, 위와 같은 근거로 정상적으로 출력된 값을 확인할 수 있다.
- int : 정수를 나타낸다. 예를 들어 10은 정수이므로 print(type(10))을 실행하면 class가 int로 출력되는 것을 알 수 있다.
- float : 정수를 제외한 실수를 나타낸다. 예를 들어 1.1, 3.16은 실수이므로 print(type())에 각각 값을 넣고 실행하면 class가 float로 출력되는 것을 알 수 있다.
- 파이썬에서 1과 1.0은 자료형이 다르다. 1은 int이나 1.0은 float로 처리한다.
- 1과 1.0은 비록 자료형이 서로 다르긴 하지만, 값의 비교는 같다. 따라서 아래 코드의 첫 번째 줄은 True로 출력되고, 두 번째 줄의 경우는 서로 다른 자료형의 두 값을 더하는 것으로, 정수와 실수를 더하면 실수로 출력된다.
- 소수를 표현하는 두 가지 방식은 고정소수점, 부동소수점이다.
- 파이썬에서는 부동소수점 방식을 채택하여 활용한다.
- 고정소수점 : 정수를 표현하는 비트 수와 소수를 표현하는 비트 수를 미리 정해 놓고,
해당 비트만큼만 사용해서 숫자를 표현
- 부동소수점 : 소수점 위치를 고정하지 않고 그 위치를 나타내는 수를 따로 적는 것으로,
유효숫자를 나타내는 가수와 소수점의 위치를 풀이하는 지수로 나누어 표현
- 4Byte(32Bit)에 대하여 고정소수점 수에서의 구분은 1Bit(부호)+16Bit(정수)+15Bit(소수)로 구분한다.
- 4Byte(32Bit)에 대하여 부동소수점 수에서의 구분은 1Bit(부호)+8Bit(지수)+23Bit(가수)로 구분한다.
오늘 학습한 내용 (Python Master)
♣ 오늘 Python Master는 가족 생일 회식으로 인해 풀잎 시간에 정리했던 내용을 캡쳐하여 올립니다. 제가 작업했던 내역만 올립니다. 더 궁금하다면 파이썬 코딩 도장에서 확인하세요!
16장. for 반복문
17장. while 반복문
18장. break, continue