해당 포스팅은 AIFFEL에서 제공한 학습자료를 통해 공부한 것을 정리한 것임을 밝힙니다.
1. 함수
- 인자 (argument) : 입력값
- 매개변수 (parameter) : 인자를 받는 변수
def say_hi_somebody(name):
print(name + ', 안녕!')
say_hI_somebody('준이')
→ name : 매개변수, '준이' : 인자
2. 스코프(scope)
: 변수가 유효한 범위
name = '하루'
def change_name():
name = '시우'
change_name()
print(name)
→ 함수 내에서 선언한 '시우'는 함수 밖에서는 알 순 없으니 change_name()에서 출력이 되지 않음.
→ print(name)에서 '하루'만 출력이 됨.
▶ 전역스코프(global scope) : name = '하루' / 지역스코프(local scope) : name = '시우'
🔥'스코프(scope)는 생소해서 어려움🔥
3. 함수의 결과로 값을 반환하기
def print_two(word1, word2):
print(word1)
print(word2)
def print_and_return(word1, word2, word3):
print_two(word3, word2)
return word1
print_two('A', print_and_return('B', 'C', 'D'))
① printand_return('B', 'C', 'D') 우선 호출
→ D, C 출력
② print('A')와 print(print_and_return('B', 'C', 'D')) 호출
→ A, D 출력 (print_and_return('B', 'C', 'D') → return된 word1을 대입)
🔥 틀렸던 문제 / return에 대한 지식이 다소 부족 🔥
4. 제어문
1) if : 진실 혹은 거짓
- if : 명제가 참이면 실행
- else : if명제 이외의 경우 실행
- elif : if명제 이외의 경우에 또 다른 명제가 참일 때 실행 (if 뒤, else 앞)
def print_whether(number):
if number > 0:
print('+')
elif number == 0:
print('0')
else:
print('-')
2) while : 조건이 참인 동안 반복
n = 1
while n <= 20:
print(chicken(n))
n = n + 1
print('끝!')
+) 피보나치(fibonacci)
3) for : 주어진 값을 하나씩 반복
for a in A 형태
목록 A에서 값을 하나씩 꺼내어 a변수에 담아 실행
for character in 'Hello':
print(character)
H
e
l
l
o
🔥 더 다양한 for문 예제를 접할 필요가 있음 🔥
5. 자료형
1) 정수(integer / int)
print(type(1))
<class 'int'>
2) 부동소수점 수(float)
정수를 제외한 실수를 부동소수점 수(float)이라고 함.
🔥부동소수점 수와 고정소수점 수에 대해 잘 모르겠음...🔥
3) NoneType
4) 불리언(boolean / bool)
불리언 자료형에는 참(True)와 거짓(False) 딱 2가지의 값만 존재함.
print(type(True))
print(type(False))
<class 'bool'>
<class 'bool'>
5) 문자열 (String / str)
print('He said, "spam"')
He said, "spam"
print("""Line1
Line2""")
Line1
Line2
6) 튜플 & 리스트 (tuple & list)
(1) 튜플
- ( , ) 사용
- 특정 위치 값을 읽을 수 있음 (ex. print(tuple_123[0]))
- 변경이 불가함⭐
(2) 리스트
- [ , ] 사용
- 값을 변경할 수 있음⭐
- .append 함수 (값 추가), .remove 함수 (값 제거), .pop함수 (특정 값 제거) 사용 가능
7) 딕셔너리 (Dictionary / dict)
- { , } 사용
- {key 값 : value 값}
- 새로운 값을 넣기
conductor = {'firstname' : '단테', 'lastname' : '안'}
conductor['gender'] = 'male'
print(conductor)
{'first_name': '단테', 'last_name': '안', 'gender': 'male'}
- .items() 함수 사용
conductor = {'first_name': '단테', 'last_name': '안'}
for key, value in conductor.items():
print(key + ' : ' + value)
first_name : 단테
last_name : 안
6. 피보나치 수열 (fibonacci)
- 피보나치 수열의 n번째 수는 n-1번째 수와 n-2번째 피보나치 수의 합
- 피보나치 수열의 첫 번째 수와 두 번째 수는 1
def fibonacci(n):
if n <= 2:
number = 1
else:
number = fibonacci(n-1) + fibonacci(n-2)
return number
print(fibonacci(10))
55
⭐BUT! n의 크기가 커질수록 계산 횟수가 증가하기에 속도가 느려짐...!
그렇기에 메모이제이션(memoization)기법을 사용하기!⭐
→ 중간 계산 값을 기억하고 다시 계산하는 대신 기억한 값을 바로 읽어내는 기법
memory = {1:1, 2:1}
def fibonacci(n):
if n in memory:
number = memory[n]
else:
number = fibonacci(n-1) + fibonacci(n-2)
memory[n] = number
return number
print(fibonacci(100))
354224848179261915075
공부 후기
파이썬 기초 문법에 대해 배웠을 때 세세히 배우지 못해 아쉬웠는데 오늘 LMS 진행하면서 꼼꼼히 배울 수 있었다.
'스코프'와 '피보나치 수열'에 대해서는 처음 들어보았는데 예제와 함께 공부하니 이해가 쉬웠다. 그리고 제어문 각각의 역할을 알게 되었다.
완벽하게 이해하진 못했지만 좀 더 파이썬을 공부하다보면 같이 이해가 되지 않을까 싶다!
그리고 처음 글쓰기를 하는거라 너무 많은 양을 끄적인 것 같은데,,, 차차 해보지 뭐...!