brunch

You can make anything
by writing

C.S.Lewis

by 우리 Aug 09. 2022

자정과 새벽 사이 5

컴퓨터 언어 이해하기 좋은 때

2022년 8월 2일 00시 54분-01시 55분 사이.

*비전공자의 EliceAcademy <Do it! 파이썬 생활 프로그래밍> 공부 기록입니다.


^^..


https://youtu.be/CfPxlb8-ZQ0 

<코딩 & 공부할때 듣는 음악 - 집중할때 듣기 좋은 편안한 Lo-Fi 재즈>라는 제목의 유튜브 영상입니다. 새벽에 듣기 좋아요. 기분이 몽글몽글해져서요.


DAY 5


[실습12] def 문으로 함수 만들기


def는 함수를 정의하는 명령어라고 한다. 첫줄에 def 적고, 만들고자 하는 함수이름 적고, 소괄호 안에 매개변수 적고, 콜론(:) 붙여주고. 둘째 줄에 들여쓰기 한 뒤 return 적고, 괄호 안에 연산할 내용들 적어주고(단일한 연산만 사용한다면 괄호를 적지 않아도 된다). 다음 줄에 들여쓰기 없이 print 적고 새로 만든 함수와 변수값을 정해서 결과값을 출력시키면 된다.


그리고 파이썬에서의 type함수라는 걸 새로 알게 되었다. type()은 데이터 타입(자료형)을 확인할 수 있는 함수라고 한다. 이를테면 정수형(int)이라거나. 다양한 자료형이 존재하는데, 문제에서 제시한 입력값 넣은 결과의 자료형은 'tuple'이다. tuple은 파이썬 자료형 중 하나인데, 값을 바꿀 수 없다는 특징이 있고, ()로 표현한다고.

결과값 (15, 9, 36, 4.0) 나오고 자료형은 'tuple'로 나온다


[실습13] input() 함수로 사용자에게 입력값 받기


두둥! 실습 안내에 이런 내용이 있다. "우리가 이 장에서 최종적으로 만들고자 하는 프로그램은 사용자로부터 서비스 종류를 입력받고 부가세 포함여부를 입력받아 해당 가격을 계산하는 프로그램입니다. ..." 이 장이 끝날 때 과연 만들 수 있을 것인가?


주어진 자료를 특정 자료형으로 바꾸려면, 해당하는 자료형의 함수를 사용해 변환할 수 있다고 한다. 이때 str은 문자열, int는 정수 자료형, float는 실수 자료형을 의미한다.

헤매다가 갑자기 잘 풀린다 생각했는데 다시 헤맴

실행해 보면 다음과 같은 결과값들이 주루룩 나온다. 이것도 나름대로 쾌감이 있다. round 함수를 까먹어서 <자정과 새벽 사이 3>을 다시 찾아보고 왔다.


숫자를 하나 입력해 보세요: 23

23

<class 'str'>

<class 'int'>

<class 'float'>

2.4285714285714284

<class 'float'>

2.4


그런데 위에 적은대로 제출 버튼을 눌렀더니, 1번 문제가 틀렸다는 것이 아닌가!


알고 보니 결과값 처음 두 줄은 a를 따로따로 정의해서 print하는 것이 아니었다. 그렇지만 어떻게 해도 문제에서 원하는 바를 구현할 수가 없길래, 혼자 끙끙대다 검색의 힘을 빌려보았다. 참고한 페이지는 다음과 같다. https://wikidocs.net/25 그나저나 이 링크 자료는 온라인판 <Do it! 점프 투 파이썬> 책이라는데... 이게 더 자세하고 설명이 잘 되어있는 것 같기도 하다.


일단 input은 입력되는 모든 것을 문자열로 취급한다고 한다. 그러니까 input('') 이라고 적고 따옴표 안에 뭘 넣더라도, a 대신 number라고 쓰거나 하더라도, a의 type을 돌려보면 str이 나온다(당연한 얘기인가;). 그리고 1번 문제에서 요구한 결과를 나오게 하는 법은 a=input('숫자를 하나 입력해 보세요: ')라고 적는 것이었다. 여기서 작은따옴표 대신 큰따옴표로 적어도 결과는 같게 나온다. 실행을 돌리면 처음에는 결과창에 '숫자를 하나 입력해 보세요: ' 이 문장 딱 하나만 뜬다. 이때 결과창 콜론 옆에 나오게 할 수를 적고(그러고 보니 23이면 숫자가 아니고 수라고 해야 하지 않나..?) 엔터를 치면, 나와야 할 결과값들이 주루룩 나온다.

손에 휴대폰 들고서는 30분 동안 어딨냐고 찾아다닌 기분.. 까먹을 수 없는 내용이 됨

안내문이 결과창에 떴을 때 콜론 옆에 수를 적으면 그것이 변수 a에 대입된다. 그래서 print(a)는 바로 23으로 출력된다. 한번 숫자 대신 '이름'이라고 적어봤는데, 결과창 한 문장 뜨는 것 까진 같지만 콜론 옆에 진짜 이름을 적으면 오류가 나고 23을 적으면 제대로 작동한다. 엇...? 혹시 몰라서 한글 말고 영어로도 적어봤는데 그래도 오류가 난다. 뭐지? 그냥 쓴 대로 출력되고, 수든 문자든 관계없이 type돌리면 str로 나오는 것이 아니었나...?


시간상 이유까지 찾을  없었지만 지금 이렇게 기록해 뒀으니, 나중에 의문이 풀리면 여기에 다시 적어야겠다. 왜 그런 것인지.




갈 길이 너무너무 멀다.

포기만 말자!


그나저나 컴퓨터 언어 공부는 '혼자 또 같이'랬는데, 그 균형잡기가 정말 중요한 것 같다. 분명 스스로 충분히 익혀야만 활용할 수 있는 언어지만, 구글링을 하다보면 정말 다양한 사람들의 가지각색 공부 후기와 코딩 방법을 찾아볼 수 있다. 아직 수준 미달로 깃허브나 레딧을 활용하지는 못하고 있지만, 조금씩 코딩 짜기가 가능해지면 해당 사이트들에 들어가볼(보게 될) 것이다. 아마도 같은 결과를 내기 위해 고유의 방법을 뽐내는 실력자들(이라 쓰고 무림의 고수들이라고 읽는다)을 수두룩하게 찾을 수 있을 테다. 최소한 주변인들 말로는 정말 그렇다고 한다.


<해리 포터와 혼혈 왕자>편에서 해리는 어쩌다가 자칭 '혼혈 왕자'라는 인물이 공부하던 교재를 물려받아 쓰게 된다. 그 책에는 마법을 구사하는 데 있어 '교과서적인' 방법만 쓰여있지 않다. 혼혈 왕자가 자기만의 응용법, 직접 발명해버리기까지 한 마법 기술들을 고스란히 적어두었기 때문이다. 덕분에 해리는 수업에서 배우는 내용들의 지름길을 전수받는다. 집단 지성을 통하든 홀로 독학하든, 컴퓨터 언어 공부의 흔적과 자신만의 코드를 쌓아둔 기록들을 검색하고 찾아보다 보면, 해리가 보던 '혼혈 왕자의 책' 같다는 생각이 든다. 수많은 아이디어가 고유의 효율성을 뽐내며 여기저기서 반짝이고 있어서다.


글이나 말에 사람 성격이 묻어나듯, 코드도 만든 사람을 닮아간다고 한다.

작가의 이전글 자정과 새벽 사이 4
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari