오늘은 챕터2 variables and simple data types에 대해 리뷰해보겠다. 영어가 미숙하지만 보는 그대로 해석해보도록 하겠다. 제목만 보면 변수와 파이썬의 기본 데이터 타입에 다루는 내용인 것 같다. 챕터 1에서는 설치를 마쳤으니 인제 파이썬에 대해 기초부터 시작하는 것 같다.

 

 먼저 제일 익숙한 hello_world가 나를 반기고 있다. 파이썬은 C나 JAVA와 다르게 매우 심플한 것이 특징인데 시작부터 그 장점을 느낄 수 있다. C언어와 파이썬의 기본 문법을 비교해보고 얼마나 간단한지 살펴보자.

 

#include <stdio.h>

int main(void){
	printf("Hello World!");
	return 0;
}

 

 위의 코드가 우리가 기본적으로 알고있는 C언어의 "Hello World!" 출력 방법이다. 다음은 파이썬의 코드를 살펴보자.

 

print("Hello World!")

 

 이것이 파이썬의 "Hello World!" 출력 방법이다. 코드의 차이가 눈으로 보기에도 확 느껴진다. 헤더파일, 메인문, 심지어 세미콜론(;)마저도 안써도 된다. 이처럼 파이썬이 다른 곳에서 매우 쉽다고 하는 이유가 여기에서도 보여진다. 참고로 C언어는 확장자가 .c 로 끝나지만 파이썬에서는 확장자가 .py로 끝나는 점이 다르다!

 

 계속해서 본문을 읽어보도록 하겠다.(참고로 영어를 너무 못해서 사실 코드위주로 살펴보고 의미를 짐작?하고 있다....) 물론 영어원서 책을 읽는데 영어실력은 아무 필요가 없다지만 나처럼 단어 및 문법조차도 아무것도 모르는 사람은 힘든 느낌이 꽤 큰 것 같다. 내 푸념을 접고 계속 읽어보면 변수(Variables)에 대해서 나온다.(앞으로 변수 = Variables)

 

 variables의 코드를 보면 이러한 코드가 먼저 나온다.

 

message = "Hello Python world!"
print(message)

 

 코드를 살펴보면 또 C언어와 비교해서 설명하자면 파이썬은 변수의 종류, 즉 type을 따로 지정할 필요가 없다는 것을 알 수 있다. 파이썬은 변수에 들어가는 타입(int, float, char, set, dic 등등)에 따라 알아서 변수 타입이 결정되는 아주 편한 장점이 있다!!!

 

 * 책에는 나와있지 않지만 변수의 타입을 보고 싶으면 아래와 같이 코딩하면 된다.

messagae = "Hello World!"
print(type(message))		// type(변수)는 변수의 타입 반환

결과
string

 

 다음에는 이러한 코딩이 나온다.

 

message = "Hello Python world!" 
print(message) 
message = "Hello Python Crash Course world!" print(message)
print(message)

결과
Hello Python world!
Hello Python Crash Course world!

 

 이 코드에 대한 출력이 어떻게 나올 것 같은가? "Heool Python world! Hello Python Crash Course world!" 이렇게 나온다고 생각할 수도 있지만 print()는 사실 출력함수가 맞지만 한 가지 빠져있는 것이 있다. 바로 개행(\n)도 같이 포함되고 있다는 것이다. 그렇기 때문에 문자가 한 줄로 나오는 것이 아니라 첫 번째 print() 후에 두 번째 print()는 두 번째 줄에 출력된다.

 

 * 만약 붙여서 출력하고 싶다면 아래와 같이 출력하면 된다.(이것도 책에는 안나와있다^^)

message = "Hello Python world!"
print(message, end=' ')					//end = '값' : 기본값은 개행이지만 값으로 교체
message = "Hello Python Crash Course world!"
print(message)

결과
Hello Python world! Hello Python Crash Course world!

 

계속해서 살펴보도록 하자.(p.17) 여기에서는 변수의 규칙? 주의사항을 말해주고 있다.

  • 변수의 이름은 오직 숫자, 문자, 밑줄만 사용할 수 있고 변수 이름의 시작이 숫자로 시작할 수는 없다.  ex) star_2 -> 가능, 2_star -> 불가능

  • 변수의 이름 사이에 공백은 쓸 수 없고 밑줄을 이름 사이에 넣는 건 가능하다.
    ex) dke_ekfe -> 가능, ekse fndk -> 불가능

  • 예약어는 사용 불가능하다.
    ex) print, if, for 등등

  • 변수의 이름은 의미를 포함하되 간략하고 짧게 지정한다.
    ex) bank_adress -> b_ad, mouse_point -> m_pt

  • 마지막은...소문자 l, o랑 숫자 0, 1이랑 착각하지 말라는 것인데 정신만 차린다면 머...^^

 책에서는 다음과 같은 변수를 만들 때 주의사항이 나와있다. 한 번 숙지하고 변수를 생성 할 때 잘 생각하면서 만들도록 하자!!!

 

 다음 장으로 넘어가보자~^^(많이 한 것 같지만 사실 얼마 안했다....ㅎㅎ) 이번엔 에러 처리 방법에 대해 알려주고 있다. 그 중에서도 Name Errors에 관한 것이다. 먼저 코드와 에러를 살펴보자.

 

message = "Hello Python Crash Course reader!" 
print(mesage)

Traceback (most recent call last):
  File "hello_world.py", line 2, in <module>   
    print(mesage)
NameError: name 'mesage' is not defined 

 

 위의 두 줄을 실행하면 밑의 4줄과 같은 에러가 발생한다. 왜??? 잘 살펴보면 variable 이름이 message로 되어있는데 print()에서는 mesage로 되어있다. 그러기 때문에 에러가 발생하고 만다.(원래 휴먼에러가 제일 많이 생긴다....) 자! 그러면 에러를 한 줄씩 해석보기로 하자.

  • File "hello_world.py", line 2, in <module> : "hello_world.py의 두 번째 줄에 에러 검출
  • print(mesgae) : print(mesage)에 문제 발생
  • NameError : name 'mesage' is not defined : 이 줄이 제일 중요하다. 어떤 에러인지 알 수 있는 라인인데 NameError라는 error가 발생했고 'mesage'라는 변수가 정의되어 있지 않다는 내용이다. NameError는 주로 변수 이름을 잘못 썻거나 변수 값을 설정하지 않을 때 발생하기 때문에 오타나 초기화를 잘 생각하도록 하자!

 이러한 방법으로 에러가 났을 때 즉각즉각 해결 할 수 있다.(모르면 구글링!!!!)

 

 다음은 연습문제 2개가 나와있다.(p19) 하지만 이 연습문제들은 우리가 지금까지 했던 예제 코드들과 똑같은 말이기 때문에 어떻게 실행되는지 한 번 생각해보고 예제들을 다시 실행해보면 좋을 것 같다. / 2-1. 메시지 출력, 2-2. 메시지 출력 후 변수 값을 바꾼 후 다시 출력

 

 인제 String(문자열)에 대해서 설명이 나오고 있다. String과 Char의 차이점은 문자열과 문자의 차이인데 문자는 단 한개! 예를 들어 c, s, e 등과 같이 한 글자를 말하고 문자열은 그러한 문자들의 집합! "string"과 같은 단어나 "Happy day!"와 같은 문장도 전부 문자열이라고 한다.

 

기본적으로 파이썬에서는 큰따음표("")나 작은따음표('') 사이에 문자열을 입력하고 아무거나 사용해도 상관없다.(책에서도 그렇게 말하고 있다.) 그리고 만약에 문자열에 따음표들을 포함하고 싶다면 "" 안에는 ''를 쓸 수 있고 '' 안에는 ""를 쓸 수 있다.

 

 자! 여기까지가 String에 대한 기본적인 설명이고 인제 String에 포함된 여러가지 Methods(보조 함수?)들을 써보도록 하자. 파이썬은 여러가지 함수나 편리한 기능들이 많지만 그에 맞게 보조하는 Methods들도 매우 많다. 그러한 Methods들을 알맞게 숙지해야 우리가 코드를 더 편하게 짤 수 있는 지름길이 될 수 있다.(모르면 구글링!) 먼저 예시 코드(name.py)를 살펴보자.

 

name = "ada lovelace"
print(name.title())

결과
Ada Lovelace

 

 우리가 앞에서 실행한 코드와 별반 차이는 없지만 name뒤에 이상한 녀석이 붙어있다.... name.title()이라.... title() 이 녀석이 바로 수많은 Methods들 중에 하나인 녀석이다. Method는 보통 자신이 쓰고자 하는 변수 뒤에 .을 붙여서 사용한다. 그리고 ()안에 알맞는 값이나 조건들을 넣는 것이 보통적인 경우이다. 실행 결과를 확인해보니 단어의 앞문자들이 대문자로 바뀐 것을 알 수 있다. 이로써 title()은 단어의 첫번째 문자를 대문자로 바꿔주는 Method라는 것을 알 수 있다. 그 외에도 몇 가지 Method들이 나오는 것 같지만 그것은 직접 책을 보고 확인해보자^^

 

 다음 장(p.21)으로 넘어가 보자~ 꽤 리뷰가 길어질 것 같은 느낌이다....ㅠㅠ 여기서는 변수와 변수를 합쳐 쓸 수 있는 방법에 나와 있는 것 같다. 예를 들어서 위에서는 이름 변수를 name에 모두 추가했지만 여기서는 성과 이름 분리해서 변수에 추가한 다음 full_name으로 합치고 있다.

 다음 예제를 보면서 같이 살펴보자.

 

first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}"
print(full_name)

결과
ada lovelace

 

 예제를 살펴보면 세 번째 줄에 특이한 점을 볼 수 있다. 우리가 쓸 변수를 먼저 지정한 뒤에

f"{variable} {variable}" 양식으로 사용하고 있다. 변수와 변수 사이에 띄어쓰기를 둠으로써 출력 결과에서도 성과 이름이 떨어져서 출력되게 하고 있다. 그리고 꼭 앞에 f를 붙이라고 설명하고 있어서 변수는 {}안에 넣고 ""앞에는 f를 적도록 하자! 아래 예제는 활용 예제 같으니 실행해보자!

 위와 같은 양식 말고도 아래에 살펴보면 이러한 양식도 같은 의미이기 때문에 참고 바란다.

 

full_name = "{} {}".format(first_name, last_name)

 

 다음 장(p.22)으로 넘어가 보면 개행문자(\n)와 탭문자(\n)가 나오는데 문자열 중간중간 삽입하거나 앞이나 뒤에 사용하면 개행(줄바꿈) 또는 탭 기능이 사용되기 때문에 예제 타이핑해보자~

 그 다음 장(p.23)은 공백에 대한 method가 소개되고 있다. 이 method는 나중에도 매우 유용하게 쓰이니까 한 번 잘 읽어보고 넘어가도록 하자. 

 먼저 예제를 보면서 method를 어떻게 사용하는지 알아보도록 하자.

 

favorite_language = ' python '
print(favorite_language.rstrip())

결과
' python'

print(favorite_language.lstrip())

결과
'python '

print(favorite_language.strip())

결과
'python'

 

 예제를 살펴보면 method의 이름은 strip()이며 용도는 양 쪽의 공백 혹은 개행(\n)을 제거해주는 기능이다. rstrip()의 r은 right, l은 left라는 뜻으로 쓰여 각각 오른쪽과 왼쪽에서 수행되는 것을 알 수 있다. 꼭 예제는 모두 실행해보기를 바란다. 글쓴이도 열심히 쳐보고 있다^^

 

 다음 장(p.24)에서는 Syntax Errors에 대해서 다루는 것 같다. 자주 나오는 에러라고 나와있고 이 에러는 파이썬이 코드 인식이 제대로 되지 않을 때 발생한다고 한다. 한글로는 구문 오류라고도 하는데 위에서 에러를 하나 공부해보지 않았는가? 그것과 똑같이 에러 코드만 잘 보면 얼마든지 해결할 수 있는 에러이다.

 다음의 예제를 보고 살펴보도록 하자.

 

message = 'One of Python's strengths is its diverse community.'
print(message)

File "apostrophe.py", line 1
	message = 'One of Python's strengths is its diverse community.'
                            ^
SyntaxError: invalid syntax                            

 

 위와 같이 실행을 했더니 다음과 같은 에러가 발생했다. 위와 같이 에러를 해석해보자

  • File "apostrophe.py", line 1 : "apostrophe.py"라는 파일에서 첫 번째 줄에서 에러 발생
  • message = ...... : 이 곳에서 에러가 났는데 '^'를 사용해 친절히 어느 부분인지 알려주고 있다
  • SyntaxError: invalid syntax : 구문 에러라고 알려주고 있다.

 위에서 에러 분석을 했기 때문에 이번에는 쉽지 않은가? 구문 에러가 났으며 ^ 표시한 곳만 수정하면 에러가 해결되는 상황이다. 에러는 별거 아니기 때문에 어떤 에러든 무서워하지 말고 잘 읽어보고 해결해보도록 하자~(모르면 구글링!!!!)

 

 다음 장(p.25)에서는 자습 문제?가 나와있는데 스스로 풀어보도록 하자^^

 

 그 다음(p.26)부터는 새로운 개념인 Number, 즉 숫자 연산에 대해 설명하고 있다. 첫 설명이라서 그런지 가장 기초적이고 간단한 설명들을 하고 있다. 살펴보자면 먼저 Integers가 소개되며 Integers는 '정수형'이라는 의미를 가지고 있다. 그리고 사칙연산(+, -, *, /)을 소개하는데 딱히 우리가 알고 있는 다른 언어와의 차이점은 없어 보인다. 그 다음은 제곱(**)을 설명하고 괄호()에 따라서 연산 우선순위가 정해지는 것도 일반적으로 알고 있는 것과 같다.

 

 다음으로는 Folats(실수형)이 소개되고 integes 계산이나 floats 계산이나 별반 차이는 없는 것 같다. 다만 folats는 컴퓨터가 정확한 계산을 위해 소수점 뒷자리가 많이 나오는 경우가 있는데 그에 관해서는 일단 무시하기로 하자. 그리고 integes와 floats를 계산하면 일반적으로 floats가 나온다고 예시가 나와있다. 아래에 예시를 참고하자.

 

print(1 + 2.0)

출력
3.0

print(3.0 ** 2)

출력
9.0

 

 다음 장(p.28)에서는 Underscores in Numbers에 대해 소개되는데 그냥 숫자 사이에 _를 추가하여도 파이썬은 숫자만 인식한다는 내용이다. 예제만 타이핑해보고 넘어가자.

 이어서 Multiple Assignment가 소개된다. 예제를 살펴보고 그 뜻을 이해해보자.

 

x, y, z = 1, 2, 3
print(x, y, z)

출력
1 2 3

 

 예제를 살짝 변형했지만 크게 달라진 것은 없다. 파이썬은 기타 언어와 다르게 한 줄에 여러 변수를 입력하여 값을 대입하는 것이 가능하다. 값은 차례대로 들어가기 때문에 x = 1, y = 2, z = 3이 된다.

 다음은 Constants라는 용어가 나오는데 뜻은 상수이며 파이썬에서는 변수를 상수 취급하기 위해서는 모든 변수의 문자가 대문자이면 가능하다고 소개하고 있다. 나중에 써먹어 보자^^

 

 그 다음 장(p.29)에서 또 자습문제가 나오므로 풀어보도록 하자~

 이어서 Comments의 대해 설명이 나온다. Comments는 코드를 작성하면서 아주 중요한 항목인데 자신이 코드를 짜더라도 언제까지나 그 코드를 기억할 수 없기 때문에 중간중간 Comments를 표시하면 내가 보기에도 좋고 남이 보기에도 더 이해하기 쉽기 때문에 Comments 쓰는 것을 습관을 들이는 것이 좋다. 다음 예시를 살펴보자.

 

#Say hello to everyone.			#주석
print("Hello Python people!")	#코드

결과
Hello Python people!

 

 다음 예시와 같이 Comments는 '#내용' 형식으로 작성하며 #뒤에 쓰는 내용들은 모두 Comments가 된다. 이 줄은 파이썬이 코드로 인식하지 않는다. 책에서도 왜 Comments를 써야하는지에 대해서 설명하고 있는데 더 쉬운 이해과 남이 이해 할 수 있게 도와주고 우리가 만약에 미래에 회사 혹은 프로젝트를 맡게 된다면 여러 명이서 같이 프로그램을 만들게 되는데 그때에도 Comments를 작성함으로써 서로에 대한 이해와 협력이 훨씬 쉬워진다고 말해주고 있다.(대충 내가 이해한 바로는 이런 뜻인 것 같다....ㅎㅎ)

 계속해서 자습문제가 다시 나왔기 때문에 간단한 코드를 만들어보고 Comments를 남겨 코드에 대해 설명해보자^^(설명이 없으면 날짜랑 이름이라도 넣으라고 한다)

 

 2장의 마지막으로 The Zen of Python에 대해 나오는데 나름 읽어보자면 파이썬을 공부하면서 추구하는 좋은 점? 같은 내용인 것 같다. 한 줄 씩 뜻을 추론해보자.

  • Simple is better than complex
     - 복잡한 코드보다는 심플한 코드가 낫다는 말 같다. 같은 기능이면 간단한 게 훨씬 낫다.
  • Complex is better than complicated
     - 복잡함 보다는 복잡함? 뜻을 잘 모르겠지만 아마도 간단하게 코드가 안 만들어 질 수도 있다는 말 같다.
  • Readability counts
     - 가독성이 중요하다는 말인데 코드는 딱 봤을 때 뜻을 이해하기 쉬워야 좋은 코드이다.
  • There should be one-- and preferably only one --obvious way to do it.
     - 해석은 잘 못하겠지만 내 생각으로는 큰 프로젝트일수록 여러 명이서 작업을 하게 되는데 자신의 코드가 독창적인 것은 좋지만 호환성 문제를 말하는 것 같다. 프로젝트에서 자신의 코드가 모두가 이해할 수 있는 코드이고 사용할 수 있어야 하는데 자신만 사용할 줄 알면 무슨 소용이겠나....라는? 호환성에 대한 이야기같다.
  • Now is better than never
     - 지금보다 나은? 이라는 뜻 같은데 해석해보자면 아무리 코드를 잘 짜는 사람이라도 한번에 엄청 효율적이고 간단한 코드를 짜지는 못한다. 먼저 기능에 맞게 돌아가게 하고 거기서 간단하게 만들고 효율적으로 수정하는 단계가 있기 때문에 한 걸음씩 천천히 코드를 짜면 지금보다 더 좋은 코드를 짤 수 있다는 설명인 것 같다. 이건 나도 공감하는게 일단은 짜보는 게 제일 중요하고(나도 몰라도 어떻게든 마구잡이로 돌아가게 짜본다.) 그 다음에 수정하다 보면 간단하고 효율적인 코드가 나오는 것 같다.(일단 도전하자!!!!! 힘들면 구글링!!)

 

 마지막 자습문제(p.31)는 무슨 뜻인지 잘 모르겠다...ㅎㅎ

 자! 인제 2장의 모든 내용을 공부해봤다. 해보니까 양이 많은 것 같다고 느껴졌는데 그렇게 많지는 않은 것 같고 모두 기초중의 기초적인 내용이라서 금방금방 넘어간 것 같다. Summary를 읽어보면 복습하는 내용인 것 같고 3장에서는 list를 배울 거라는 예고가 있다. 모두 복습을 철저히 하고 나오는 코드랑 자습문제는 모두 타이핑해보는 습관을 가지자~

 

 다음 3장에서 뵙겠습니다^^

'Python > No Starch Press_Python' 카테고리의 다른 글

Chapter7. USER INPUT AND WHILE LOOPS  (0) 2020.04.20
Chapter6. DICTIONARIES  (0) 2020.04.17
Chapter5. IF STATEMENTS  (0) 2020.04.10
chapter4. working with lists  (0) 2020.04.10
Chapter3. Introducing Lists  (0) 2020.03.23
블로그 이미지

Mr.HB

프로그래밍 이야기

,