AIFFEL FD #04 파이썬(Python) 기초

이재준·2021년 7월 7일
0

AIFFEL Fundamental

목록 보기
5/25

사람이 컴퓨터에게 일을 시키려면 컴퓨터가 알아들을 수 있는 언어로 일을 시켜야한다. 바로 그 언어가 프로그래밍 언어이다. 수많은 프로그래밍 언어 중 하나인 파이썬은 본래 교육용으로 만들어진 언어로, 코드가 간결하고 알아보기 쉽다. 그러한 장점으로 인해, 파이썬은 현재 실무와 교육 양쪽으로 엄청난 인기를 끌고 있고 인공지능 분야에서도 파이썬을 적극적으로 사용하고 있다.

✅ 핵심 요약

  • 함수와 변수
  • if,for,while을 이용한 제어문
  • 다양한 자료형에 대한 이해

❓ 함수와 변수

함수란 어떤 입력값 x가 함수 f 로 들어가 출력값 f(x) 가 나오는 것이다. 프로그래밍에서 함수는 특정한 작업을 수행하며, 입력값에 대한 출력값을 얻는 것이다.

수학에서 함수를 y=f(x) 로 표시하고 f 와 x 가 각각 함수의 이름과 입력값을 의미하듯이, 프로그래밍 분야에서는 입력값을 주로 인자(argument) 라고 부른다.

프로그래밍을 하다보면 복잡한 기능을 반복적으로 구현하기 위해 코드가 굉장히 길고 가독성이 떨어질 수 있다. 기능을 반복적으로 적용해야할 때 함수를 정의해 필요한 곳에 바로 사용하면 편리할 뿐만아니라 코드의 가독성도 확보할 수 있다.

새로운 함수 정의하기

새로운 함수를 정의 할때는 define 에서 나온 명령어 def 를 사용하고 다음과 같은 구조로 이루어져있다.

def 함수이름(인자):
    실행코드

def 를 사용할때 함수를 정의하는 기능 부분에 띄어쓰기 4회가 필수적으로 들어가야한다.

또한 인자를 한 개 뿐만아니라 여러 개를 한꺼번에 받게 설정할 수 도 있다. 그리고 다음과 같은 형식으로 입력값이 여러 개 일 때도 각 입력값마다 기본값을 지정해 줄 수 있다.

def 함수이름(인자1=기본값1,인자2=기본값2):
	실행코드

단, 여기서 기본값이 있는 인자들이 기본값이 없는 필수 인자들의 뒤에 와야한다.

간단한 더하기 기능의 함수를 만들어보자.

def sum(a,b):   # 더하기 함수 생성
    return a+b
    
v = sum(1,3)
print(v)

출력

5

이와 같은 방법으로 새로운 함수를 정의할 수 있다. 위의 경우에는 인자가 2개만 있으므로 sum(1,2,3) 이나 sum(1,2,3,4,5) 와 같이 2개의 값이 아닌 값들의 더하기는 수행을 하지 못한다. 이런 상황을 대비한 파이썬의 기능이 존재한다.

def test(*val):   # 인자 값이 얼마나 들어올지 모를때 이렇게 사용
    for i in val:
        print(i)
        
test(1,2,3,4)

출력

1
2
3
4

*val을 사용하면 인자값이 몇개가 오던 값을 다 받을 수 있다. 다음과 같은 코드로 인자에 여러 값이 들어갔을때 val이 튜플(tuple) 형태의 자료형으로 받아진다는 것을 알 수 있다.

def val_type(*val):
    print(val)
    print(type(val))

val_type(1,2,3)

출력

(1, 2, 3)
<class 'tuple'>

신기한것은 아래의 코드와 같이 인자에 한개의 값만 들어가더라도 val 값은 튜플 형태로 들어가는 것도 알 수 있었다.

def val_type(*val):
    print(val)
    print(type(val))

val_type(1)

출력

(1,)
<class 'tuple'>

변수

변수란 "여러 값으로 변할 수 있는 수" 라고 정의되어있다. 프로그래밍에서의 변수는 어떠한 값을 대표하는 값이다. 변수를 정의하기 위해서는 변수명 = 변수값 의 형태로 변수를 선언하고 그 이후에는 변수명으로 해당 변수값을 불러올 수 있다.

hi = '안녕하세요'    # hi 라는 변수에 '안녕하세요' 라는 문자열을 저장함
print(hi)     # hi 를 출력

출력

안녕하세요    # hi라는 변수에 저장된 변수값을 출력

변수의 스코프(scope), 전역변수, 지역변수

변수의 스코프(scope)란, 특정 위치레서 어떤 변수에 접근할 수 있는지, 어떤 곳에서 정의된 변수가 어디까지 유효한지 정의된 범위를 말한다. 아래의 코드와 그림을 보면 쉽게 이해할 수 있다.

전역 변수 예시

x = 10     # 전역 변수
def foo():
    print(x)    # 전역 변수 출력

foo()
print(x)

출력

10
10

출처 : 파이썬 코딩 도장

지역 변수 예시

def foo():    
    x = 10    # foo의 지역 변수
    print(x)    # foo의 지역 변수 출력

foo()
print(x)    # 에러. foo의 지역 변수는 출력 불가

출력

10
Traceback (most recent call last):
  File "C:\project\local_variable.py", line 6, in <module>
    print(x)
NameError: name 'x' is not defined


🚥 제어문

제어문은 코딩을 할때 어떤 조건에만 해당 기능을 수행하거나 반복하는 것을 할 때 푤요하다. 즉, 특정 조건에 따라 동작하는 문구이다.

if 문

if 구문에서는 if, else 를 통해 조건식이 참일 때와 거짓일 때를 구분해 각각의 코드를 실행한다.

다음과 같은 형식의 코드로 if 와 else를 이용한 조건문을 사용할 수 있다.

if 조건식:
    코드1
else:
    코드2

또한 세가지 이상의 조건을 제어하고 싶을때 if, elif, else 를 통해 조건문을 생성할 수 있다.

if 조건식1:
    실행코드1
elif 조건식2:
    실행코드2
else:
    실행코드3

True 와 False
파이썬에서는 참은 Ture, 거짓은 False를 사용하지만 다음 값들도 True 또는 False 로 취급되므로 조건식을 작성할때 주의해야한다.

  • True 로 취급 : 0이 아닌 숫자, 내용이 있는 (문자열, 리스트, 튜플, 딕셔너리, 세트)
  • False 로 취급 : 0, None, 비어있는 (문자열, 리스트, 튜플, 딕셔너리, 세트)

반복문 (for, while)

반복문의 종류에는 for문을 이용한 반복문과 while문을 이용한 반복문이 있다.

for 반복문 은 일반적으로 반복할 횟수를 지정하여 반복할 때 사용한다. 간단한 예로, range 함수에 반복할 횟수를 지정하고 앞에 in과 변수를 지정한다.

for 변수 in range(반복할 횟수):
    반복할 코드

또한 range 대신에 리스트, 튜플, 문자열 등의 시퀀스 객체로 반복할 수 있다. 간단한 예로, range 대신에 리스트를 넣으면 리스트의 요소를 하나씩 불러오며 반복한다.

a = [1, 2, 3, 4]
for i in a:
    print(i)

출력

1
2
3
4

참고 : 여기서 reversed 함수를 사용해서 시퀀스객체의 순서를 뒤집어서 반복할 수도 있다.

while 반복문 은 일반적으로 반복할 횟수가 정해지지 않았을때 사용한다. while 반복문은 조건식으로만 동작하며 반복할 코드 안에 조건식에 영향으르 주는 변화식이 들어간다. 간단한 예로 while 반복문으로 'hello' 를 100번 출력하고 싶다면

i = 0              # 초기식
while i < 100:     # 조건식
    print('hello')    # 반복할 코드
    i += 1            # 변화식

위와 같은 구조의 코드로 이루어져있다. while 반복문에서 조건식을 변화시키는 변화식이 없다면 무한루프에 빠질 수 있으니 반복문이 중단되는 조건을 잘 설정해주어야한다.

피보나치 수열

위의 내용을 응용하여 재귀함수(recursive fuction) 를 만들 수 있다.

재쉬함수 란?
함수 내에서 그 함수를 스스로 사용하는 함수의 종류

재귀함수가 유용하게 쓰이는 간단한 예로 피보나치 수열의 구현이 있다.

피보나치 수열 이란?
앞의 두 숫자를 더한 수가 다음 수가 되는 무한 수열이며, 황금비율로도 잘 알려져 있다.
1, 1, 2, 3, 5, 8, 13, 21, ...

앞의 제어문들을 통해 다음과 같이 피보나치 수열을 구현할 수 있다.

def fibonacci(n):
    if n <= 2:
        number = 1
    else:
       number = fibonacci(n-1) + fibonacci(n-2)

    return number

📓 자료형(data type)

파이썬에는 숫자, 문자열 외에도 다양한 종류의 자료형이 존재한다. 값의 자료형이 무엇인지는 type() 함수를 사용해 확인 가능하다.

정수(integer) : 'int' , 실수(float) : 'float'

수학에서 정수라고 불리는 것이다. 즉, 0, 1, 2, -3 과 같이 소수점이 없는 숫자라고 생각하면 편리하다.

반대로 파이썬에서 실수는 소수점을 가지는 숫자를 의미한다. 같은 1과 1.0 이라도 파이썬에서는 이 둘을 각각 정수, 실수로 받아들인다.

print(type(1))
print(type(1.0))

출력
<class 'int'>
<class 'float'>

None Type, 불리언(boolean) : 'bool'

None 은 말 그대로 아무 값을 가지고 있지 않은 상태를 말한다. 모든 객체에 대해 정의될 수록 좋다고 여기는 파이썬의 설계 사상과 관련해 None type 이 필요로 할 때 사용한다.

불리언 자료형은 참(True) 와 거짓(False)로 이루어져있다.

print(type(True))
print(type(False))

출력
<class 'bool'>
<class 'bool'>

불리언 값들은 주로 if 비교문에서 조건문의 참/거짓 여부를 나타낼때 사용한다. 또한 TrueFalse 는 앞에 not 을 붙여 참과 거짓을 뒤집을 수도 있다.

문자열(string) : str

문자열은 따옴표나 쌍따옴표로 감싸서 사용할 수 있다. 또한 [n:m] 를 통해 n번째 부터 m 번 직전까지 뽑아오는등의 슬라이싱과 순서를 매겨 이용하는 인덱싱도 가능하다.

print(type('Hello'))

출력
<class 'str'>

참고 : [::-1] 을 사용해 문자열을 거꾸로 출력하는 것도 가능하다.

리스트(list), 튜플(tuple), 딕셔너리(dictionary) : 'dict'

리스트와 튜플은 하나의 변수에 여러 개의 값을 순서대로 나열하여 할당한 것이다.
리스트는 대괄호를 사용해서 만들 수 있고 튜플은 소괄호를 사용해 만들 수 있다.

print(type([1, 2, 3]))
print(type((1, 2, 3)))

출력
<class 'list'>
<class 'tuple'>

튜플과 리스트는 순서가 있는 값들의 모음이라서 문자열과 같은 방법으로 인덱싱 및 슬라이싱이 가능하다.

리스트는 요소 추가, 변경, 삭제 등이 가능하지만 튜플은 값을 변경할 수 없다.

딕셔너리는 말 그대로 사전이라는 기능과 비슷한 역할을 한다. 키와 값이 1대1로 대응해서 변수에 저장된다. 즉, 키 값을 이용해 해당 값을 찾을 수 있는 자료형이다.

딕셔너리는 중괄호로 만들 수 있고 {키:값} 으로 구성되어있다. 딕셔너리[키] 를 이용해 해당 값에 접근 할 수 있다.

zzang = {'name':'짱구', 'age':5, 'gender' : 'male'}
print(type(zzang))
출력
<class 'dict'>

items() 를 이용해 키와 값 둘 다 가져올 수 있고, keys() 를 이용해 키만 가져올 수 도 있고, values() 를 이용해 값만 가져올 수도 있다.

추가적인 파이썬에 대한 전체적인 내용은 Python Master 풀잎스쿨 정리에서 다루겠다.

profile
🏫 𝑲𝒚𝒖𝒏𝒈 𝑯𝒆𝒆 𝑼𝒏𝒊𝒗. / 👨‍🎓 𝑪𝒐𝒍𝒍𝒆𝒈𝒆 𝒐𝒇 𝑬𝒏𝒈𝒊𝒏𝒆𝒆𝒓𝒊𝒏𝒈

0개의 댓글