본문 바로가기
코딩

너도 코딩 할 수 있어! 5편 (파이선)

by 종규 2022. 7. 4.
반응형

앞에서 배운 출력하는 명령어 print( )도 일종의 함수입니다. 파이선 자체에 이미 만들어져 있는 함수라 우리가 따로 만들 필요 없이 바로 사용할 수 있었던 것입니다. 이렇게 이미 만들어진 함수를 '내장 함수' 또는 '빌트인 함수'라고 합니다. print( )와 같은 내장 함수는 사용 방법만 알면 바로 사용할 수 있습니다. print( )를 사용하는 다양한 방법이 있는데 대표적인 몇 가지만 소개하겠습니다. 가장 기본적인 방법입니다. 함수 이름 print( )의 괄호 ( ) 안에 출력할 변수를 입력합니다. 앞서 함수의 구조로 살펴보았던 것과 비슷하지요 만약에 print( ) 함수 안에 하나 이상의 값을 출력하고 싶을 때는 어떻게 할까요. 직관적으로 떠오르는 방법으로 더하기(+) 기호를 사용할 수 있습니다. 하지만 이 방법은 큰 단점이 있습니다. 바로 무조건 문자열 값까지만 더해야 한다는 것입니다. 예를 들어 다음과 같이 실행하면 오류가 발생합니다. 변수 '개수'에 담긴 20은 문자열이 아닌 정수형 자료이기 때문입니다. 이럴 떈 숫자 형을 문자열로 강제로 변환하는 str( )이라는 내장 함수를 사용하면 해결됩니다. 다음과 같이 수정하면 오류가 발생하지 않습니다. 변수에 담긴 값을 다른 형태로 변환하는 과정을 '형 변환' 또는 '캐스팅'이라고 합니다. 그리고 이렇게 자료형을 변환하는 함수를 '형 변환 함수'라고 불러요. int( ), float( )가 바로 형 변환 함수이다. 함수에 여러 개의 값을 사용하는 다른 방법을 살펴보겠습니다. 다음과 같이 쉼표(,) 기호를 사용하면 따로 형 변환을 하지 않아도 함께 사용할 수 있습니다. 마지막으로 현업에서 가장 많이 사용하는 방법입니다. 따옴표 안에 원하는 내용을 다 적은 후 내용 중 변수로 값을 받아야 하는 부분에 { } 기호를 적고 끝에. format( )과 함께 괄호() 안에 변수 이름을 추가합니다. 우리에게 익숙하지 않은. format이라는 단어를 사용하다 보니 좀 어색하지만, 여러 개의 변수를 한꺼번에 사용할 때 매우 편한 기능입니다. 예를 들어 변수 3개를 출력할 때 사용할 수 있습니다. print( )가 화면에 어떤 내용을 출력하는 함수라면, 사용자가 입력하는 값을 컴퓨터가 받는 함수도 있습니다. 함수릐 이름도 '입력'을 의미하는 input( )입니다. 값을 입력받으려면 '질문'과 '입력받을 변수'가 필요하겠죠. 다음과 같이 사용하면 됩니다. 사용자가 어떤 값을 입력하면 그 값이 변수 '입력값'에 저장되죠. 이때 어떤 값으로 대답하든 무조건 문자열로 저장됩니다. 만약 문자열이 아닌 정수형이나 실수형으로 값을 저장하고 싶다면 다음과 같이 형 변환 함수를 사용하면 됩니다. 다음과 같이 int( )로 묶으면 정수형으로 바뀌고, float( )로 묶으면 실수형으로 바뀝니다. 우리말에 '단순 무식하다'는 말이 있습니다. 깊이 생각하지 않고 단순하게 일을 처리한다는 뜻이죠. 그런데 컴퓨터가 단순 무식하다면, 이해가 가나요. 같이 생각해 보겠습니다. 컴퓨터가 탄생한 이해 효과적으로 반복하고 판단하기 위한 다양한 알고리즘이 도입되었지만, 기본적인 방법은 변하지 않았습니다. 하지만 인공지능이 발전하면서 상황이 조금 달라졌습니다. '단순 무식'을 '학습'으로 개선하기 시작한 것이죠. 예전에도 컴퓨터가 학습을 안 한 것은 아닙니다. 다만 중요한 차이점이 있습니다. 예전엔 인간이 미리 학습한 결과를 컴퓨터에 알려줌으로써 인간의 학습 방법으로 계산을 수행했다면, 요즘 인공지능은 컴퓨터 스스로 학습하고, 직접 찾아낸 방법에 따라 계산을 수행하고 계산 방법을 개선합니다. 인공지능은 몇 가지로 구분할 수 있는데, 대표적으로는 머신러닝(기계학습)이 있고 그 안에 딥러닝(심층학습)이 있습니다. 예시를 통해 이해해 보겠습니다. 오른쪽 그림은 좌우로 움직이는 받침대를 사용해 공을 튕겨서 위쪽에 쌓여 있는 벽돌을 하나씩 깨는 게임입니다. 기존 방식인 '주입식 학습'은 프로그래밍 단계에서 컴퓨터 한 데 게임 방법을 알려주고 그대로 따라 하도록 합니다. 인공지능 중에서도 머신러닝은 컴퓨터에 인간의 노하우를 주입식으로 가르쳐주지 않습니다. 대신에 반복적으로 게임을 시키고, 좋은 결과가 나오는 방법을 스스로 알아내도록 게임 '방법을 학습' 시킵니다. 요즘 유행하는 '자기 주도형 학습'을 컴퓨터가 한다고 말할 수 있습니다. 여기서 바둑기사 알파고에 관해 이야기를 하나 해보겠습니다. 바둑은 경우의 수가 너무 많아서 기존의 '머신러닝' 방법으로는 컴퓨터가 인간을 이길 수 없었습니다. 하지만 인공지능 알파고가 그 벽을 뛰어넘었습니다. 엄청난 양의 컴퓨터 간의 대전과 사람들과의 대전을 통해서 스스로 학습하여, 자기만의 가장 나은 방법을 찾아낸 거죠. 그것도 바둑 고수들이 알지 못했던 다양한 방법을 사용해서 말입니다. 이 방법은 머신러닝 중에서도 딥러닝 방식을 이용한 것입니다. 여러 층에서 깊게 학습한다는 뜻이죠. 이제 단순 무식한 컴퓨터도 특정한 목적을 알려주면 지능이 만들어지는 시대가 되었습니다. 단순 무식한 컴퓨터가 생각하는 첫 번째 방법, 조건문을 살펴보겠습니다. '만약 ~라면'과 같이 사실일 수도 있고, 아닐 수도 있는 상황을 설명하는 문장을 조건문이라고 합니다. 영어 문법에 따라서 '만약에' 다음에 참, 거짓을 판단해야 하는 문장을 넣은 다음, 함수에서 배웠던 부연 설명 기호인 콜론(:)을 넣고, 다음 줄부터 4칸을 띄운 다음, 조건문이 '참'일 때 하는 행동을 써주면 됩니다. 이외에 조건문에서 자주 사용하는 표현이 '같지 않다' 입니다. 수학식에서 같지 않다는 보통 부호를 사용합니다. 하지만 이 부호도 키보드에 없네요. 그래서 코딩에서는 비슷하게 '!='고 표현하거나 ''고 표현합니다. 파이선의 경우는 '!=' 어로 표현합니다. 숫자 형을 캐스팅'이라고 할 수'라고 여러 개의 끝에. format( )과 않은. format이라는 어떤 값을 float( )로 다양한 알고리즘이 단순 무식 컴퓨터에 학습하고 있습니다. 예시를 학습'은 컴퓨터 한 데 따라 하도록 컴퓨터에 자기 주도형 학습'을 알파고에 관해 이야기를 하나 영어 문법에 참'일 때 보통 부호들이 어떤지 다음 편에서 살펴보겠습니다.

반응형