일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Class
- Stack
- SQL
- Tree
- Data Structure
- 구현
- 파이썬
- Number Theory
- Method
- array
- dynamic programming
- implement
- two pointers
- Binary Search
- 자바
- java
- Counting
- hash table
- Math
- geometry
- database
- Binary Tree
- 코딩테스트
- string
- 코테
- Matrix
- sorting
- bit manipulation
- simulation
- greedy
- Today
- Total
코린이의 소소한 공부노트
변수 선언, 값 할당 본문
코딩을 할 때 가장 기본이 되는 것은 변수에 우리가 원하는 값을 넣어 컴퓨터가 우리가 원하는 결과를 계산하게끔 적절한 함수들을 사용하는 것이다.
그래서 코딩을 배울 때 제일 먼저 해보는 것이 변수에 값을 넣고 (또는 그냥 원하는 문구를) 화면에 출력하는 것이다.
예를 들면.. 이런 것?
print('Hello world!')
>> 'Hello world!'
이번에 정리해 볼 내용은
1. 변수를 선언한 후 값을 넣는 것과
2. 변수의 값을 확인하는 방법이다.
1. 변수 선언, 값 할당 (Variable Declaration, Value Assignment)
변수란, 수학 시간에 쓰던 x, y와 같이 어떤 값을 담고 있는 그릇을 말한다.
그리고 이 그릇에 담길 내용을 값이라고 한다.
보통 변수 선언과 값 할당은 동시에 일어나는데, 아래와 같은 방법으로 하면 된다.
a = 1
b = 2
my_cur_state = 'hungry'
대입 연산자인 =를 이용해 변수 이름 = 값의 방법으로 변수를 선언하고 값을 할당해주면 된다.
파이썬 변수 선언의 특징은 타입을 정해주지 않아도 우변을 알아서 계산한 후 그 결과에 맞는 타입으로 알아서 타입을 정해준다는 것이다.
사용자 입장에서 편하지만, 이런 편의성 때문에 종종 이 변수의 타입이 뭐였는지 까먹을 때가 있다.(타입에 대한 내용은 "데이터 타입, 연산자"에서 설명하겠다.)
그래서 변수 이름을 쓸 때 1,2번째처럼 아무거나 쓰기보다는 3번째처럼 무엇을 나타내는 변수인지 간결하고 분명하게 적어주는 게 코딩에 도움이 된다.
그렇지만, 변수 이름만으로 무엇을 나타내는지 명확하게 나타내기 쉽지 않을 때도 있다.
그때 쓸 수 있는 것이 바로 주석(comment)이다.
# sis1 = '풀때기'
# 이 부분은 실행되지 않아요.
sis1 = '치킨'
# sis2 = '피자'
# print 함수를 이용해 에러 없이 출력되는 음식을 먹자!
print(sis1)
print(sis2)
print() 함수는 괄호 안의 내용을 화면에 출력해주는 함수다(아래에서 다시 다룰 것).
마지막 두 print문 중에서 어떤 것이 에러 없이 할당된 값이 출력될까?
답은 print(sis1)이다. sis2 변수를 선언하고 값을 할당하는 부분 앞에 '#'이 붙어 주석처리가 되어 실행이 안되기 때문에 우리 눈에는 sis2가 보이지만 컴퓨터를 이를 읽지 못하기 때문에 실제 생기는 변수는 sis1밖에 없고, print문의 결괏값으로 나오는 것은 치킨이다.
(그러니까 오늘은 치킨을 먹자)
이때 변수 이름으로 아무거나 다 되는 것은 아니다.
(1) 사용 가능 문자 : 영문 대소문자, _(언더바), 숫자
Muzi = 'cute'
year = 2021
char_of_2020 = 'pengsoo'
(2) 숫자로 시작하는 것은 안됨
1 = 3
print(1)
>> ????
이 경우에는 출력 값이 1일까 3일까?
답은 SyntaxError: cannot assign to literal이다. 1이라는 변수는 만들 수 없기 때문에 3이라는 값을 할당할 수 없다.
(3) 예약어도 사용 불가
예약어(reserved keywords)는 파이썬에서 코딩을 위해 미리 선점해 둔 단어들을 뜻한다.
위에서 예시로 든 print도 예약어이기 때문에,
print = 4
print(print)
이렇게 코드를 실행하게 되면 결과는 TypeError: 'int' object is not callable로 나오게 된다. 이 에러는 예약어를 변수로 쓸 경우 많이 만나는 에러이니 가급적 만나지 않도록 하는 것이 좋다.
여기서 예약어 예시로 print밖에 얘기 안 했지만, 앞으로 예약어는 더 많이 나오니 그때 예약어를 많이 익히도록 하자.
무지맘 본인은 주피터 노트북을 쓰는데, 거기서 예약어는 초록색으로 표시가 되기 때문에 예약어를 변수로 쓰는 실수를 피할 수 있다.
2. 변수의 값 확인 - 마지막 줄, print()
코딩을 하다 보면, 내가 이 변수에 어떤 값을 넣었는지 기억이 안 날 때도 있고, 여러 계산을 거치면서 중간에 이 변수에 어떤 값이 들어가 있나 궁금할 때도 있다. 그땐 직접 변수 값을 출력해서 확인해보면 된다.
(1) 코드 가장 마지막 줄에 값이 궁금한 변수 이름을 쓴다.
result = 0
# result에 1부터 5까지
# 더한 값을 저장해보자.
result
>> 15
처음 result라는 변수를 선언할 때는 값이 0이었지만, 중간에 1부터 5까지 result에 더하는 연산을 했을 때 최종적인 result의 값은 15이다.
그래서 코드 가장 마지막에 result를 쓰면 저장되어있던 값인 15가 출력된다.
마지막 줄에 여러 변수를 출력하고 싶다면, 쉼표를 이용해 나열하면 된다.
a = 1
b = 2
a, b
>> (1, 2)
1개를 출력했을 때와는 다르게 ( )를 이용해 나열되는데, 이는 tuple이라는 데이터로, "데이터 타입, 연산자(?)"에서 설명하도록 하겠다.
(2) print() 함수를 쓴다.
위의 코드에서 숫자를 1부터 5까지 1개씩 더하고 나서의 result값(계산 도중의 값)이 궁금하다.
그럴 땐 print()함수를 써서 값을 계속 찍어낼 수 있다.
result = 0
# result에 1부터 5까지
# 하나씩 더하고
print(result)
# 어떻게 나올까?
>> 1
>> 3
>> 6
>> 10
>> 15
계산 과정을 완벽히 나타낸 코드는 아니지만, 정상 동작을 하는 코드라면 1, 3, 6, 10, 15가 정상적으로 화면에 출력될 것이다.
print함수를 자세히 보자.
이 함수는 위에서 보듯이 사용자가 원하는 내용을 출력해 주는 함수이다.
a = 1
b = 2
print(a)
>> 1
print(a, b) # ,를 이용해 여러 변수를 한 줄에 출력 가능
>> 1 2
기본적으로는 ( ) 안의 내용을 출력하고 한 줄을 띄고, 여러 변수를 출력할 때는 띄어쓰기가 들어가게 된다. 이 옵션(후에 인자(parameter)로 부름)을 내가 원하는 걸로 바꿔줄 수 있다.
- sep: 구분 문자열, 출력할 변수 사이에 넣을 것. 초기값은 띄어쓰기(' ', space)
- end: 마지막에 출력할 문자열. 초기값은 엔터(\n, newline)
a = 10
b = 33
print(a, b)
>> 10 33
print(a, b, sep='!', end='***')
print('끝')
>> 10!33***끝
2번째 출력의 경우 end를 엔터가 아닌 ***로 했기 때문에 3번째 출력이 다음 줄에 나오지 않고 *** 다음에 바로 붙여서 나오게 된다.
< 요약 >
1. 변수 선언 & 값 할당: 변수 이름 = 값 또는 계산식
- 영문 대소문자, _, 숫자 O
- 숫자로 시작 X
- 예약어 X
2. 주석: # 이후 글은 실행 안됨
3. 코드 마지막 줄의 변수는 값이 출력됨
4. print(): 출력 함수
- sep: 구분자
- end: 마지막에 출력할 문자열
'Python' 카테고리의 다른 글
데이터 타입, 연산자 (4) 딕셔너리, 셋 (0) | 2021.05.14 |
---|---|
작은 공간이지만 무한히 늘어날 지식 - 파이썬편 (0) | 2021.05.12 |
데이터 타입, 연산자 (3) 리스트, 튜플 (0) | 2021.05.11 |
데이터 타입, 연산자 (2) 문자열형 (0) | 2021.05.07 |
데이터 타입, 연산자 (1) 숫자형, 논리형 (0) | 2021.04.22 |