티스토리 뷰
누군가가 이렇게 물어봅니다.
애완동물을 소개해 주세요~ |
그래서 집에 있는 강아지를 다음과 같이 소개합니다.
우리집에는 강아지가 있는데 이름이 연탄이에요. 연탄이는 4살이며, 산책을 아주 좋아해요. |
아래와 같이 다음 질문을 받고 여러분은 답을 합니다.
연탄이는 어른일까요? |
(4살 정도면 어른이니까...) True |
이 대화를 컴퓨터 화면에 출력한다면 다음처럼 코드를 작성할 수 있을 겁니다.
# 애완동물을 소개해 주세요~
print("우리집 강아지의 이름은 연탄이에요")
print("연탄이는 4살이며, 산책을 아주 좋아해요")
print("연탄이는 어른일까요? True")
그런데 만약에 우리집 강아지의 이름을 해피로 개명했다고 합시다. 그럼 앞 메시지에서 연탄이를 해피로 바꾸려면 ‘연탄이’라고 적은 부분을 모두 다 찾아서 ‘해피’로 바꿔야 합니다.
# 수정 전
print("우리집 강아지의 이름은 연탄이에요")
print("연탄이는 4살이며, 산책을 아주 좋아해요")
print("연탄이는 어른일까요? True")
# 수정 후
print("우리집 강아지의 이름은 해피에요")
print("해피는 4살이며, 산책을 아주 좋아해요")
print("해피는 어른일까요? True")
여기 예제에서는 바꿀 곳이 3군데 밖에 없으므로 금방 수정할 수 있지만 프로그램이 커진다면 어떨까요? 수많은 파일과 어마어마한 양의 코드에 '연탄이'가 사용되고 있었다면, 아마 보통 일이 아닐 겁니다. 그리고 분명히 사람이 실수로 놓치는 부분도 발생할 수 있겠죠.
프로그래밍에는 변수라는 개념이 있습니다. 변수는 쉽게 말하면 어떤 값을 저장하는 공간이라고 할 수 있습니다. 예를 들어, 앞에서 작성한 코드에서 '연탄이'라는 단어는 '이름'이기 때문에 name 이라는 변수를 만들고 '연탄이'라는 값을 넣어줄 수 있습니다.
name = "연탄이"
비슷하게, 강아지는 애완 동물의 종류 중 하나이지만 강아지가 아닌 고양이를 키우는 경우도 있을 수 있으므로 animal 이라는 변수를 만들고 '강아지'라는 값을 넣겠습니다.
animal = "강아지"
나이는 age 라는 변수를 만들고 4를 집어 넣으면 되겠네요.
age = 4
이 때 4라는 값은 문자열이 아닌 숫자이기 때문에 큰 따옴표 없이 그냥 4 라고만 입력합니다.
"산책"이라는 취미는 hobby 라는 변수에 넣구요.
hobby = "산책"
어른이냐는 질문에 대한 답은 True 이며 이는 boolean 자료형이죠? 편의상 3살 이상이면 어른이라고 가정하고 이렇게 값을 넣어보겠습니다.
is_adult = age >= 3 # age 값이 3 이상이면 True, 미만이면 False
프로그래밍에는 다양한 연산자가 존재하는데요. 나중에 다시 배우겠지만 >= 는 "크거나 같다" 라는 조건을 나타낸답니다. 다른 연산자는 조금 뒷쪽에서 다시 다루겠습니다. |
지금까지 만든 변수를 한 번 정리해볼게요.
name = "연탄이"
animal = "강아지"
age = 4
hobby = "산책"
is_adult = age >= 3
그럼 앞에서 소개했던 3개의 print 함수 안 문장에 변수를 적용해보겠습니다. 먼저 '강아지’라는 문장 부분에 animal이라는 변수를 넣어보겠습니다. 첫 번째 print문을 다음처럼 바꿉니다.
print("우리집 " + animal + "의 이름은 연탄이에요")
‘연탄이’라는 이름도 name이라는 변수로 바꿀 수 있습니다. 다시 print문을 바꿔줍니다.
print("우리집 " + animal + "의 이름은 " + name + "에요")
문자열과 변수를 조합할 때는 "문자열” + 변수 + "문자열" 형태로 만듭니다. 만약 공백이 필요하다면 문자열에 공백을 두면 됩니다. |
위 문장을 읽으면 다음과 같습니다.
우리집 animal(= 강아지)의 이름은 name(= 연탄이)에요 |
즉, animal에 ‘강아지’, name에 ‘연탄이’가 들어가는 것이죠.
이제 같은 방법으로 두 번째 print 함수도 수정하겠습니다. ‘연탄이’, ‘4’, ‘산책’ 부분을 변수로 바꿀 것입니다. 단순하게 생각하면 다음과 같습니다.
print(name + "는 " + age + "살이며, " + hobby + "을 아주 좋아해요")
그런데 이렇게 변경하고 실행을 해보면 다음처럼 에러가 발생하네요.
Traceback (most recent call last): File "d:/Develop/nadocoding/python_start/practice.py", line 7, in <module> print(name + "는 " + age + "살이며, " + hobby + "을 아주 좋아해요") TypeError: can only concatenate str (not "int") to str |
이는 age가 자료형 파트에서 설명한 숫자 자료형이고, 앞 문자열과 조합할 때 단순한 ‘+ 변수 +’ 형태로 사용할 수 없기 때문에 발생하는 것입니다. 그래서 다음처럼 바꿔주어야 합니다.
print(name + "는 " + str(age) + "살이며, " + hobby + "을 아주 좋아해요")
문자열 자료형을 뜻하는 str에 괄호를 붙이고 안에 age라는 숫자 자료형 변수를 넣었습니다. 이를 통해 숫자 자료형을 문자열 자료형으로 바꾸는 것이라고 생각하면 됩니다. 이러한 개념을 ‘형 변환’이라고 합니다. 나중에 더 자세히 설명할 것이니 지금은 숫자 자료형을 문자열 자료형으로 바꿔서 출력하는 방법이 있다라는 것만 기억해두세요.
어떤 문자열 등 다른 값 없이 변수를 가장 처음 위치시킬 때는 앞에 +를 붙이지 않아도 됩니다. |
세 번째 print 함수는 다음처럼 수정합니다.
print(name + "는 어른일까요? " + str(is_adult))
is_adult는 자료형 파트에서 살펴본 boolean 자료형이고 역시 문자열과 조합할 때는 문자열로 바꿔주어야 합니다. 그래서 str(is_adult)로 작성했습니다.
지금까지 작성된 코드를 정리해봅시다.
name = "연탄이"
animal = "강아지"
age = 4
hobby = "산책"
is_adult = age >= 3
print("우리집 " + animal + "의 이름은 " + name + "에요")
print(name + "는 " + str(age) + "살이며, " + hobby + "을 아주 좋아해요")
print(name + "는 어른일까요? " + str(is_adult))
이 코드를 실행시켜보면 아래와 같이 출력됩니다.
우리집 강아지의 이름은 연탄이에요 연탄이는 4살이며, 산책을 아주 좋아해요 연탄이는 어른일까요? True |
앞에서 살펴본 print 함수 3개의 출력 결과와 똑같다는 점을 알 수 있습니다.
이제 굉장히 편해집니다. 제 친구가 집에서 키우는 애완동물은 ‘고양이’고, 이름은 ‘해피’고, ‘산책’ 대신 ‘낮잠’을 좋아합니다. 이때 제 친구가 이 코드를 가져가서 사용한다고 생각해보겠습니다. 변수 부분을 다음처럼 바꿉니다.
animal = "고양이"
name = "해피"
age = 4
hobby = "낮잠"
is_adult = age >= 3
아래 print 함수는 그대로 두고 코드를 실행하면 출력 결과는 다음과 같습니다.
우리집 고양이의 이름은 해피에요 해피는 4살이며, 낮잠을 아주 좋아해요 해피는 어른일까요? True |
변수 각각의 값으로 바뀌어 문장이 출력된 걸 알 수 있습니다.
참고로 변수는 꼭 print 함수 위에 정의할 필요는 없습니다. 다음과 같은 특징 때문인데요.
- 해당 변수를 사용하기 전에만 정의하면 OK
- 변수에 가장 마지막에 저장된 값을 사용
첫 번째 특징을 살펴보겠습니다. name 변수 정의를 첫 번째 print 함수와 두 번째 print 함수 중간에 두고 실행하겠습니다.
animal = "고양이"
age = 4
hobby = "낮잠"
is_adult = age >= 3
print("우리집 " + animal + "의 이름은 " + name + "에요")
name = "해피"
print(name + "는 " + str(age) + "살이며, " + hobby + "을 아주 좋아해요")
print(name + "는 어른일까요? " + str(is_adult))
실행을 해보면 에러가 발생하네요.
Traceback (most recent call last): File "d:\Develop\nadocoding\python_start\practice.py", line 7, in <module> print("우리집 " + animal + "의 이름은 " + name + "에요") NameError: name 'name' is not defined |
name이라는 변수를 아직 정의하지 않았는데 첫 번째 print 함수에서 사용하려고 했기 때문에 발생한 에러입니다.
두 번째 특징을 살펴보겠습니다. name 변수 정의는 원래 위치에 다시 두고 hobby 변수를 첫 번째 print 함수와 두 번째 print 함수 중간에 새로 정의하겠습니다. 그리고 값을 "공놀이"라고 저장하겠습니다. 이때 기존 hobby = "낮잠"이라는 변수 정의도 그대로 둔 후 실행하겠습니다.
animal = "고양이"
name = "해피"
age = 4
hobby = "낮잠"
is_adult = age >= 3
print("우리집 " + animal + "의 이름은 " + name + "에요")
hobby = "공놀이"
print(name + "는 " + str(age) + "살이며, " + hobby + "(을)를 아주 좋아해요")
print(name + "는 어른일까요? " + str(is_adult))
실행 결과는 다음과 같습니다.
우리집 고양이의 이름은 해피에요 해피는 4살이며, 공놀이(을)를 아주 좋아해요 해피는 어른일까요? True |
첫 번째와 두 번째 print 함수 사이에 정의한 hobby 변숫값인 ‘공놀이’가 출력되는 것을 확인할 수 있습니다.
한편 지금까지는 ‘문자열 + 변수 + 문자열’ 같은 형태로 변수를 사용했는데 + 대신 쉼표를 사용할 수도 있습니다. 이때 기억할 점은 두 가지입니다.
-
str() 같은 형변환을 사용하지 않아도 된다.
-
, 를 사용하면 값과 값 사이에 공백이 하나 포함된다.
두 번째 print 함수를 다음처럼 수정하겠습니다.
# 수정 전
# print(name + "는 " + str(age) + "살이며, " + hobby + "(을)를 아주 좋아해요")
# 수정 후
print(name, "는 ", age, "살이며, ", hobby, "(을)를 아주 좋아해요")
실행 결과는 다음과 같습니다.
해피 는 4 살이며, 공놀이 (을)를 아주 좋아해요 |
str(age) 대신 그냥 age를 사용해도 숫자 4를 잘 출력합니다. 그리고 ‘해피 는’, ‘4 살’, ‘공놀이 (을)를’처럼 값 사이에 공백이 하나 포함된 것을 알 수 있습니다.
'파이썬 강의 > 기본편' 카테고리의 다른 글
[파이썬 기본편] 2-6.퀴즈 #1 (0) | 2021.01.28 |
---|---|
[파이썬 기본편] 2-5.주석 (0) | 2021.01.12 |
[파이썬 기본편] 2-1~2-3.숫자, 문자열, boolean 자료형 (7) | 2020.05.15 |
[파이썬 기본편] 1-3.파이썬 실행하기 (1) | 2020.05.14 |
[파이썬 기본편] 1-2.환경설정 (141) | 2020.05.06 |
- Total
- Today
- Yesterday
- vscode
- Colab
- coloso
- game
- 행맨
- Mac
- 나도코딩
- pycharm
- 파이게임
- Coding
- 코랩
- 파이썬
- c언어
- Xcode
- Unity
- Visual Studio Code
- repl.it
- onlineclass
- pygame
- 주피터노트북
- 환경설정
- 비주얼 스튜디오 코드
- 아나콘다
- Tkinter
- GUI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |