이전 내용에서 python 을 사용하기 위한 환경을 만들었다.
하지만 우리는 그냥 코드만 작성하고 저장을 한것이기 때문에 우리가 그 파일을 실행을 해봐야 하지만 그건 하지 않았다.
이번에는 python 파일을 실행해보고
자료형과 문자열에 대해 알아볼 것이다.
저번에 저장한 hello.py를 vscode에서 다시 실행해 보자.
print("Hello World!")
vscode에 이 화면이 나올텐데 여기에서
오른쪽 위에 동영상 재생할 때 보이는 화살표가 보일 것이다.
▶
이렇게 생겼다.

그걸 누르면 갑자기 밑에서 화면이 쳐 올라오면서 영어로 뭐라뭐라 하는 것이 나오고
잘 보면 우리가 쓴 'Hello World!' 라는 글이 보일 것이다.
이런 식으로 진행 되는 것을 염두에 두고 이번 글을 읽어주길 바란다이.
자 이제 시작을 해보자
먼저 아무것도 모르고 python을 공부 한다면 그냥 수박 겉핥기 이기 때문에
나도 잘 아는 것은 아니지만 여러분들에게 최대한 알기 쉽게 설명해서 빠른 이해를 돕도록 설명해드릴거니 걱정하지 않아도 된다.
프로그래밍에서 프로그램이 처리할 수 있는 모든 것을 '자료' (data) 라고 합니다.
우리가 일상생활에서 많이 만나볼 수 있는 말이기 때문에 더 이상의 자세한 설명은 하지 않겠습니다.
근데 자료는 알겠는데 자료형은 뭔말인가요?
이런 의문이 들 수 있다고 생각한다.
그래서 준비했다.
type()
이 녀석이다.
타입..유형.. 저 괄호 안에 뭔가를 넣으면 자료형을 알려주는 멋있는 녀석이다.
우리가 저장했던 'hello.py' 파일에서 연습을 해보자.
혹시 Hello World 라는 글자를 출력한 소름끼치는 순간을 기억하고 싶다면
다른 파일을 만들어서 진행해보자.
파일을 만들때 ' [파일명].py ' 이렇게 저장하면 된다.
✏️ .py = python
파일을 만들었다면 깨끗한 화면을 더렵혀 보자.
# 이렇게 입력하세요.
a = 'seoul'
print(type(a))
# print() 함수는 괄호 안에있는 것을 출력 해주는 역할을 합니다
저렇게 작성하고 오른쪽 위 화살표를 누르면 밑에
<class 'str'>
이렇게 나올 것이다.
근데 저 영어가 뭐라는건지 모르겠다!
라고 하실 것 같아서 제가 설명드립니다.
str = string
문자열 입니다.
문자열은 말그대로 문자입니다.
궁금하시면 아무 문자든 입력해서 출력 결과를 확인해 보세요.
이번에는 숫자를 넣어 볼까요?
b = 2022
print(type(b))
실행해 보세요.
이번에는 뭐라고 나오나요?
<class 'int'>
이렇게 나올 겁니다.
int 는 뭘까요?
int = integer
정수형 입니다.
정수형은 말그대로 정수.. 숫자입니다.
궁금하시면 아무 숫자든 입력해서 출력 결과를 확인해 보세요.
이번에는 이렇게 해볼까요?
c = '123'
print(type(c))
이건 어떻게 나올까요??
엥??? 이것은 왜 str 문자열로 나올까여???
python은 웃긴 친구입니다.
따옴표('작은따옴표' 또는 "큰따옴표") 안에 넣으면 다 문자열입니다.
웃기죠?
이 부분은 나중에 여러분들이 python에 익숙해질 때 즈음 자주 실수 할 수 있는 부분이기에 반드시 반드시!!!! 꼭 기억해 주세영!
자 다음으로 가봅시다.
d = 20.22
print(type(d))
이번에는 어떻게 나오나요?
<class 'float'>
이렇게 나올겁니다.
아니!! 저거도 숫자인데 왜 int 가 아니라 float 으로 나와???!?!?
라고 생각하실 수 있어요.
이유는 저 숫자는 실수이기 때문입니다.
float = 실수
소수점이 있는 숫자죠?
아까 말했던 따옴표 안에 넣으면 다 문자열이라고 했는데 그럼 실수도 한번 넣어볼까요??
e = '12.34'
print(type(e))
역시
<class 'str'>
이것이 나오는 군요.
이정도만 잘 알고 계신다면 전혀 문제 생기는 일은 없을 겁니다.
제가 첫 게시물에서 자유롭게 자료형 변환이 가능 하다고 했는데
한번 해볼까여?
f = 32
# 이것은 int 정수형입니다.
# 이걸 바꿔볼까요?
f = str(f)
print(type(f))
# 이렇게 작성하고 실행을 해보세요
어떻게 나오나요?
놀랍게도
<class 'str'>
이렇게 나온답니다.
str()
안에 f 정수형 변수를 넣음으로서 문자열로 바꿔주는 역할을 해요.
그럼 다른 것도 해보죠!!
g = 27.35 # float 실수형
h = 'hello seoul' # str 문자열
# 바꿔 볼까요?
g = str(g)
# 문자열로 바꾸기
h = int(h)
# 정수형으로 바꾸기
print(type(g))
print(type(h))
# 실행 해 보세요
어떻게 나오죠?
엥????? 뭔 이상한 글씨가 나와요!!!
여러분
당황하지 마세요.
우리는 지금 말도 안되는 것을 하려고 하는 겁니다.
문자를 숫자로 바꾸는게 말이 될까요??
안돼요..
python이 아무리 편하고 자유롭다해도 문자를 숫자로 바꾸지는 못합니다..
(아예 불가능 한 건 아니지만요..^^)
정수형 -> 실수형 가능
정수형 -> 문자열 가능
실수형 -> 문자열 가능
실수형 -> 정수형 가능문자열 -> 정수형 가능 (문자열이 정수형일 경우에 가능)
'123'
문자열 -> 실수형 가능 (문자열이 실수형일 경우에 가능)
'12.34'
뭐 하나 또 알려줄게요.
x = 12.12 # float
x = int(x) # 정수형으로 바꾸기
y = 12 # int
y = float(y) # 실수형으로 바꾸기
print(x)
print(y)
이거 한번 해보실까요?
print(x) = 12
print(y) = 12.0
이렇게 나옵니다.
자료형에 대한 설명은 이정도로 마무리 하겠습니다.
위에서 코드를 조금 짜보았으면 어떻게 해야 내가 짠 코드를 실행시키고
어떻게 해야 내가 짠 프로그램의 결과를 볼 수 있는지 알것이라 생각한다.
지금 까지 배운 것을 토대로 문자열을 만들어 봅시다!!
위에 작성한 코드는 따로 저장해 두셔도 되고 지우셔도 됩니다.
아까 제가 뭐라고 했죠? 문자열은 말그대로 문자입니다.
print("안녕하세요")
>>> 안녕하세요
이건 문자열을 출력한 겁니다.
변수에 저장하지 않고 바로바로 출력하는 방법도 있죠.
하지만!
파이썬은 객체 지향 언어이다.
대표적으로 이런 방법이 있다.
변수 하나를 설정하고 여러 코드에 활용하는 것!
a = 100
print(a)
for i in range(0, a):
print(i)
if a < 101:
print('101 보다 작아요')
대충 요런 느낌인 것이다.
이것을 우리는 Pythonic 하다고 말한다.
이것 말고도 나중에 배우겠지만 사용자 함수를 지정해서 활용하는 방법도 있지만 여기서는 언급 하지않겠다.
웁스!? 이미 언급해 버렸네요. 넘어가도록 하자.
진짜 본격적으로 문자열에 대해 알아보자!!
우리 문자열을 한번 만들어 볼까요??
코드를 따라 치셔도 좋고 복사 붙여넣기 해도 좋다.
하지만 필자는 개인적으로 직접 코드를 따라 쳐 보는것을 권장한다.
print("Hello")
print("my name is")
print("kkr!") # 이걸 보고있는 여러분의 이름을 넣어 보아요
>>> Hello
my name is
kkr!
이렇게 나올 것이다.
우리는 지금 3개의 문자열을 출력했다.
근데 저렇게 왜 써? 난 그냥 한 줄에 다넣을래!
print("Hello my name is kkr!")
print("Hello", "my", "name", "is", "kkr!")
>>> Hello my name is kkr!
Hello my name is kkr!
# 위 두개는 같은 값이 나온다
# 이건 좀 python 스럽게 써보려고 제가 노가다 한거니까 그냥 봐주세요
a = "Hello"
b = "my"
c = "name"
d = "is"
e = "kkr!"
print(a, b, c, d, e) # 이건 같이 봐두면 좋겠네요
>>> Hello my name is kkr!
이렇게도 쓸 수 있다.
너무 재밌지 않은가..
이제 또 재밌는 것을 해볼 것이다.
문자열 내부에 따옴표를 넣는 것이다.
책이나 누군가 말을 할 때 "안녕하세요" 라고 쓸 때가 있을 텐데
이걸 python 으로 하려면 어떻게 해야할까?
배웠으니까 한 번 직접 해볼 수 있으시겠죠?
잠깐 멈추시고 직접 해보세요!
print(""안녕하세요"")
>>> SyntaxError: invalid syntax. Perhaps you forgot a comma?
# SyntaxError = 구문 오류 입니다. "혹시 콤마를 잊어버리지 않았나요?" 라고 힌트를 던져주네요?
# python 문법이 틀렸다고 알려주는 오류입니다.
# 정말 친절하죠?
자 이렇게 하면 되겠네요!!
실행해서 한 번 볼까요?
엥?? 에러가 뜨네?? 이거 왜이러는 걸까요?
우리가 따옴표 한 쌍을 쓰게 되면 그 따옴표 사이에 문자열이 들어가야 하는데
지금 자세히 보시면 따옴표 한 쌍을 쓰고 안녕하세요를 쓰고 다시 따옴표 한 쌍을 썼죠?
이렇게 되면 저 안녕하세요 라는 글을 컴퓨터가 못알아봅니다.
그래서 컴퓨터가 나열해줄 수 없어요.
그럼 도대체 어떻게 써야할까..?
print('"안녕하세요"')
>>> "안녕하세요"
뭐가 다를까요?
네 맞습니다.
작은 따옴표와 큰 따옴표를 섞어서 썼어요.
작은 따옴표 한 쌍은 가장 처음과 가장 끝에 있습니다.
큰 따옴표는 두번 째 자리와 마지막에서 두 번째 자리에 있죠.
이런식으로 구분을 해줘야 합니다.
아니... 작은건 뭐고 큰건 뭡니까??
두 개는 같아요.
쓰기 나름입니다.
print("'안녕하세요'")
>>> '안녕하세요'
보이시죠?
그냥 같은 건데 python 은 모양'만'! 다르지 같은것으로 판단합니다.
재미지군요?
다음을 볼까요?
print("\"안녕하세요\"저는 김덕순 입니다.")
# \"\"
>>> "안녕하세요"저는 김덕순 입니다.
print("\'안녕하세요\'저는 김덕순 입니다.")
# \'\'
>>> '안녕하세요'저는 김덕순 입니다.
이런 식으로 쓰는 방법도 있죠.
'\' 이게 뭔지 모르시겠지만 어떤 컴퓨터에서는 달러 표시로 되어있고
어떤 컴퓨터에서는 '/' 이거를 역으로 그려놓은 것 같이 생겼죠. (역슬레시)
여기 velog 에서는 달러 표시로 나오네요.
하지만 두개는 같은 겁니다.
이것의 이름은 '이스케이프 문자' 라고 합니다.
종종 쓰일테니 보시고 알아두세요.
이스케이프 문자는 여러 곳에 쓰이긴 하지만 자세하게 설명드리지는 않고 표를 보여드리겠습니다.
| 이스케이프 문자 | 의미 |
|---|---|
| \" | 큰따옴표 |
| \' | 작은따옴표 |
| \n | 줄바꿈 (엔터치는 거랑 같다) |
| \t | 들여쓰기 (tab 키) |
| \\ | \을 의미한다 |
그리고 마지막으로 재밌는게 또 하나 있다.
바로 """""" 이다.
그냥 바로 예제 코드를 볼까요?
print("""엄마가 섬그늘에
굴 따러 가면
아기가 혼자남아
집을 보다가""")
>>> 엄마가 섬그늘에
굴 따러 가면
아기가 혼자남아
집을 보다가
뭔지 모르겠다고요??
그럼 다음을 볼까요?
print("엄마가 섬그늘에
굴 따러 가면
아기가 혼자남아
집을 보다가")
>>> SyntaxError: unterminated string literal (detected at line 1)
보이시나요?
따옴표를 저렇게 세 쌍을 쓰고 중간에 글씨를 쓰면 저렇게 이쁘게 써집니다.
알아두면 좋습니다.
나는 무슨일이 있어도 따옴표는 한 쌍만 쓸거야!!!
그럼
print("엄마가 섬그늘에\n굴 따러 가면\n아기가 혼자남아\n집을 보다가")
>>> 엄마가 섬그늘에
굴 따러 가면
아기가 혼자남아
집을 보다가
# 이렇게 작성해주시면 되겠습니다.
# 잘 모르시겠으면 위에 표를 확인하세요.
문자열 연산..이게 무슨..말이지..?
말 그대로다!
문자를 연산 한다!
백문이 불여일견!
백견이 불여일타!
a = "안녕"
b = "하세요"
print(a + b)
>>> 안녕하세요
이거다.
정말 문자를 더해 연산을 했다.
그럼 이건 어떨까?
a = "안녕"
b = 1
print(a + b)
>>> TypeError: can only concatenate str (not "int") to str
TypeError가 나온다.
Error 내용을 잘 보면
문자열은 문자열 끼리만 계산 가능하다고 나온다.
a 가 문자열이고 b 가 정수형이기 때문에 더해줄 수 없는 거다.
그럼 이것을 가능하게 하려면??
이미 눈치채고 답을 나도 모르게 입밖으로 꺼낸 자신을 볼 수 있을거다..
a = "안녕"
b = "1"
print(a + b)
>>> 안녕1
여러분의 생각이 맞습니다.
그냥 b 를 문자열로 바꿔버리면 됩니다.
저 방법 말고도
a = "안녕"
b = 1
b = str(b)
# 문자열로 변경 해주는 함수 str()
# 정수형으로 변경 해주는 함수 int()
# 실수형으로 변경 해주는 함수 float()
print(a + b)
>>> 안녕1
자!
우리가 컴퓨터를 쓰는 이유는 무엇인가!!
한 번 생각해 보세요!
제가 생각하기에는 귀찮은 반복 연산을 하기위해 컴퓨터가 있다고 생각하는데
여러분도 같으신가요?
그럼 한 번 반복연산을 써먹어 봅시다.
학창시절에 깜지 써보셨죠?
쓰기 싫어서 도망가고 싶은 순간이 있었지만 힘겹게 견뎌냈던 기억이 나네요..
그 깜지를 컴퓨터가 써준다면 얼마나 편할까요?
그럼 컴퓨터한테 깜지 써달라고 명령해보겠습니다.
print("복도에서 절대 뛰어다니지 않겠습니다..ㅠ" * 2)
>>> 복도에서 절대 뛰어다니지 않겠습니다..ㅠ복도에서 절대 뛰어다니지 않겠습니다..ㅠ
이렇게 나올 겁니다.
네 맞아요.
곱셈 연사자를 문자열 뒤에 써주고 숫자를 입력하면 입력한 숫자만큼 반복시켜줍니다.
이제 깜지 선생님 책상에 올려놓고 집에 가면 되겠네요. ^^
하지만 선생님이 그 깜지를 보고 이렇게 물어봅니다.
"너 혹시 이 깜지에 써져있는 글자가 총 몇글자인지 알고 있니??"
이게 무슨 소리람..?
제가 그걸 어떻게 알아요!!!!!
라고 말하고 싶었지만
생각해보니 컴퓨터가 알려줄 것만 같은 느낌이 듭니다!!
일단 우리가 깜지에 써놓은 것을 복사해서 변수에 저장을 해볼까요??
ggamzi = "복도에서 절대 뛰어다니지 않겠습니다..ㅠ복도에서 절대 뛰어다니지 않겠습니다..ㅠ"
# 다 쓰면 너무 지저분 할 수 있어서 두번 반복된 부분만 잘라서 쓰겠습니다.
# 잘라서 써도 이해하시는데 전혀 문제될 것이 없습니다.
# 제 코드를 복사해서 붙여넣기 해주세요.
print(len(ggamzi))
>>> 44
여기서
len()
이라는 함수가 나옵니다.
이건 괄호 안에 들어가있는 것의 길이를 나타내주는 함수입니다.
활용을 해봐야 이해가 더 잘 되겠죠?
a = "안녕하세요"
b = "abcdefg12345"
c = " " # 스페이스바 5번
print(len(a))
print(len(b))
print(len(c))
>>> 5
12
5
근데... 뭔가 이상헌디...
글자 크기로만 보면 a 가 c 보다 큰데 왜 길이가 같지?
len() 함수는 무조건 글자 하나당 한개로 개수를 판단합니다.
한글이 영어와는 다르게 공간을 더 많이 차지하는 것을 알고 계신가요?
한글 한 글자는 2의 공간을 차지하고 영어 알파벳 a 한 글자는 1의 공간을 차지한다고 합니다.
아무튼!! 이렇게 글자의 길이까지 알아봤어요
학교 선생님이 어떤 글씨를 보여줍니다.
a = "03i안녕하세요x091"
이것을 보여주고서는
"어머 덕순아 python을 이용해서 주변 글씨를 지워서 가져다 줄래?"
이렇게 말씀하시고는 어디론가 사라져 버리셨습니다.
어떻게 해야할까요??
그냥 백스페이스로 지울건가요?
우리는 지금 python을 배우는 사람인데??
자존심이 있지!!
반드시 python으로 지워줄테다!
우리 할아버지의 이름을 걸고!
# 여기서는 '슬라이싱' 이라는 기능을 사용할 것입니다.
# 잘 보고 따라 해주세여.
a = "03i안녕하세요x091"
print(a[3:8])
>>> 안녕하세요
대괄호 안에 [3:8] 이라는 숫자를 입력하니 '안녕하세요' 만 뽑아줬네요.
이게 무슨 뜻이냐면
3번째 글자부터 7번째 글자까지 슬라이싱 해줘!
라는 뜻입니다.
여기서 문득 드는 의문!
아니 저기요! 숫자 못세요? 3번째 글자는 'i' 잖아요!
그리고 8이라고 써놓고 왜 7번째라고 하는 거에요?!
블로그 쓸 자격도 없는 사람!
이런 생각 하시나요?
컴퓨터는 숫자 세는 방법이 인간하고는 다릅니다.
예시를 들어볼게요.
a = "abcdefg"
print(a[0])
print(a[1])
print(a[2])
print(a[3])
print(a[4])
print(a[5])
print(a[6])
print(a[0:2])
>>> a
b
c
d
e
f
g
ab
자 보이시죠??
인간에게 1번째는 컴퓨터에게 0번째 입니다.
[0:2]는 그럼 0번째 부터 1번째 까지 슬라이싱 한다는 겁니다.
그럼
'bcde'
를 뽑고 싶다면 어떻게 해야할까요?
잠시 멈추고 코드를 쳐서 확인해보세요.
print(a[1:5])
>>> bcde
이제 좀 감이 잡히시나요??
코드를 작성하는 것은 익숙해져야 잊어버리지 않습니다.
밑에 보여드리는 것은 설명이 없는 예제 코드이기에 보시고 이해해 주세요.
어렵지 않습니다.
a = "123456789"
print(a[0:]) # 0 번째 부터 끝까지
print(a[:4]) # 0 번째 부터 3 번째 까지
print(a[3:]) # 3 번째 부터 끝까지
print(a[-1:]) # 맨 뒤에서부터 0 번째 까지
print(a[-2:]) # 맨 뒤에서부터 1 번째 까지
print(a[0:-1]) # 0 번째 부터 맨 뒤에서 1 번째 까지
print(a[0:-2]) # 0 번째 부터 맨 뒤에서 2 번째 까지
>>> 123456789
1234
456789
9
89
12345678
1234567
# 대괄호 안의 첫 번째 숫자는 사람이랑 똑같이 인식 합니다.
# [0:7] 0 번째에서 6번째 까지 알려줘!
# [0:6+1] 0 번째에서 6번째 까지 알려줘!
# 헷갈리시는 분들은 위에 처럼 쓰기도 합니다. 알아두세요.
여러번 연습해보시면 아무렇지 않게 하실 수 있습니다.
이제 선생님에게 저걸 가져다 주면 끝이네요.
백문이 불여일견
백견이 불여일타
라고 코딩하는 사람들 사이에서 많이 도는 말이에요
백번 묻는 것 보다 한 번 보는 것이 낫고
백번 보는 것 보다 한 번 쳐 보는 것이 낫다는 말입니다
한 번씩 다 해보시고 직접 다른 것들을 넣어보면서 자유롭게 코딩해보세요.
부족하지만 봐주셔서 감사합니다.
다음 부터는 존댓말로 블로그를 작성해야겠군요.
싸가지 없어 보일 수 있겠네요.^^&