서론
출력문은 사실 다른 모듈을 사용하거나 다른 방식으로 대체가 가능하다. 하지만, 변수와 입력문은 그렇지 않다. 특히, 변수는 어느 프로그래밍 언어에서든 자주 사용할 수밖에 없는 데, 파이썬에서는 동적 타입 언어 덕분에 매우 편리하게 작동되고 있다.
변수
변수란 값을 저장할 때 사용하는 식별자 혹은 데이터를 저장할 수 있는 메모리 공간으로 정의된다. 즉, 수학 시간에 배운 그 변수라고 생각하면 편하다. 사용하는 방법은 간단하다. 변수 이름과 "=" 대입 연산자 그리고, 넣을 값만 있으면 된다. 그리고 처음 시작할 때 변수를 미리 생성하는 것을 변수 선언, 변수에 값을 넣는 것을 변수 할당, 변수에서 값을 꺼내는 것을 변수 참조라 한다.
변수의 이름은 사실 프로그래머 마음대로 짓어도 상관은 없지만, 좀 더 체계적인 프로그램을 만들기 위해 변수 이름에 대한 어느 정도 규칙이 존재한다.
1. 프로그램은 대소문자를 구별한다. (pi!= pI!= Pi!= PI)
2. 숫자를 사용이 가능하되 시작으로 사용해선 안 된다. (a1 O, 1a X)
3. 특수 문자는 _와 $만 가능하지만 이름의 시작으로 사용해선 안 된다.(_pi X)
4. 키워드, 예약어(print, True, int….)를 사용해선 안 된다. (print X)
5. 이름 사이에 공백이 있으면 안 된다. (south korea X)
6. 누구나 알기 쉽고 간결하게 지어야 한다.(skaksdmlqustn X)
변수 이름 짓기의 종류
통상적으로 변수의 첫 글자는 소문자로 시작한다. 그리고 위의 변수 이름 짓기 규칙을 기반으로 여러 가지 변수 이름 짓는 방법들이 존재한다. 대표적으로 카멜 표기법과 스네이크 표기법이 있다.
카멜 표기법(Camel Case)
각 단어의 첫 글자를 대문자로 표기하되 첫 단어의 첫 글자는 소문자로 표기하는 방식이다. Java, C#, JS에서 많이 사용된다.
ex) camelCase, southKorea, numberOfProjectiles,...
스네이크 표기법(Snake Case)
모두 소문자(혹은 모두 대문자)로 쓰되, 띄어쓰기를 밑줄(_) 기호로 대체하는 방식이다. C, C++에서 많이 사용된다. 변수나 함수, 유형, 클래스 이름은 소문자를, 상수 및 매크로 이름은 대문자를 사용하는 게 관례.
ex) snake_case, united_states_of_america, input_key,...
파스칼 표기법(Pascal Case)
각 단어의 첫 글자를 대문자로 표기한다. 요즈음은 그냥 이것도 카멜 표기법이라고 부른다. 변수나 함수 이름으로는 카멜백 표기법을 사용하는 언어라고 해도 적어도 클래스 이름은 파스칼 표기법을 사용하는 게 보통이다.
ex) PascalCase, NationalBasketballAssociation, TotalCalculator,...
헝가리안 표기법(Hungarian Notation)
첫 단어를 포함해서 모든 단어의 첫 글자를 대문자로 하되, 그 앞에 변수의 유형을 뜻하는 약어를 소문자로 붙여 준다. 주로 C에서 사용된다.
ex) iCount, strName,...
케밥 표기법(Kebab Case)
모두 소문자(혹은 모두 대문자)로 쓰되, 띄어쓰기를 하이픈(-) 기호로 대체하는 방식이다. CSS, HTML, URL와 같이 "-"를 연산자로 이용하지 않는 언어에서 사용된다.
ex) kebab-casa, bayerische-motoren-werke, font-size,...
파이썬은 변수나 함수 이름은 스네이크 표기법을, 클래스 이름은 파스칼 표기법을 쓰는 관례를 사용한다. 일반적으로 카멜 표기법 와 스네이크 표기법을 알아두는 것이 좋다.
위 방식은 식별자마다 적용이된다. 아래 그림과 같이 적용이된다.
input()
입력문 input()을 사용하는 방법은 input() 함수 input() 함수 안에 물어볼 것을 적고, 실행 후 값을 넣는다.(주의!! input() 함수 안에 넣은 것은 입력이 아니라 출력되는 부분이다.) 그리고 입력한 값을 저장하기 위해서 변수에 대입을 해준다.
type() 함수를 통해 변수의 자료형을 알 수 있다. 이를 통해 input() 함수로 입력하는 값은 항상 문자열(str)로 들어가진다. 그렇기에 만약 내가 입력한 값을 숫자로 사용하고 싶다면 자료형을 변환하여 입력을 받는 것이 좋다.
자료형
자료형이란 데이터의 종류로 파이썬에는 다음과 같은 자료형들이 있다.
- NoneType: 비어있음
- bool: 불대수, 불
- int: 정수
- float: 실수
- complex: 복소수
- str: 문자열
- tuple: 튜플
- list: 리스트
- dict: 딕셔너리
- set: 집합
- function: 함수
현재까지는 int, float, str만 알고 있어도 된다. 다음 글에서 위의 자료형들이 자연스럽게 나오기에 설명을 아끼겠다.
자료형 변환
종종 코딩하다 보면 input과 같이 문자를 숫자로 혹은 정수를 실수로 자료형을 바꿔야 하는 상황이 있다. 이때 자료형을 바꾸는 것을 자료형 변환이라 한다. 보통 자료형 뒤에 "()" 괄호를 붙여 그 안에 변환해야 할 값을 넣어 사용한다.
- int(): 정수로 변환
- float(): 실수로 변환
- str(): 문자로 변환
- bin(): 2진수로 변환
- oct(): 8진수로 변환
- hex(): 16진수로 변환
- tupple(): 튜플로 변환
- list(): 리스트로 변환
- set(): 집합으로 변환
- ord(): 문자를 아스키코드에 해당하는 숫자로 변환
- chr(): 숫자를 아스키코드에 해당하는 문자로 변환
복합 대입 연산자
복합 대입 연산자는 연산과 할당을 합쳐놓은 것이다. 식을 간결하게 해주는 효과가 있다. 복합 대입 연산자는 "+=, -=, *=, /=, //=, %=, **=, ^=, <<=, >>= , &=, |=" 이 존재한다. "&"연산자와 "|"연산자는 조건문에서 다룰 예정이다.
한 번에 여러 변수 넣기
한 번에 여러 입력값을 넣기 위해 map()이라는 함수를 유용하게 사용되고 있다. map() 함수의 사용방법은 "map(함수, 시퀀스)" 형식으로 사용된다. 같이 사용된 split() 함수는 스퀸스를 {함수 안의 넣은 값}을 기준(디폴트는 None으로 띄어쓰기, 엔터를 기준으로 구분한다.)으로 스퀸스를 나누어 준다.(list, tupple, str은 시퀀스에 해당한다.)
파이썬은 특이하게 a, b=b, a처럼 여러 변수를 한 번에 대입할 수 있다. 그 이유는 다음 리스트장에서 다룰 예정이다.
format()
문자와 숫자를 왔다 갔다 하면서 출력할 때 불편함을 느낀다. 이때 편하게 사용하는 함수가 몇몇 있는 데, 대표적으로 format함수가 있다. 사용방법은 아래와 같다.
f-string
문자열 앞에 "f" 나 "F"를 붙이는 형식으로 사용되며, "{}"중괄호를 통해 표현식을 적을 수 있다.
파이썬 3.5버전 이후로 지원이 되며, 다양한 방법으로 사용되고 있다.
그 외의 join함수를 이용하는 방법도 있다.
그 외 함수
문자열과 관련된 함수들이다. 사용 방법은 "변수.함수()"이다.
upper() : 문자열의 알파벳을 대문자로
lower() : 문자열의 알파벳을 소문자로
strip() : 양옆 공백 제거
rstrip() : 오른쪽 공백 제거
istrip() : 왼쪽 공백 제거
find() : 왼쪽부터 찾아서 처음 등장하는 위치를 찾는다
rfind() : 오른쪽부터 찾아서 처음 등장하는 위치를 찾는다
split() : 문자열을 특정한 문자로 자를 때
isalnum() : 문자열이 알파벳 또는 숫자로만 구성되어 있는 가
isalpha() : 문자열이 알파벳으로만 구성되었는가
isidentifier() : 문자열이 식별자로 사용할 수 있는가
isdecimal() : 문자열이 정수 형태 인가
isdigit() : 문자열이 숫자로 인식될 수 있는가
isspace() : 문자열이 공백으로만 구성되어 있는가
islower() : 문자열이 소문자로만 구성되어 있는가
isupper() : 문자열이 대문자로만 구성되어 있는가
자주 사용하지 않으면 기억해 둘 필요가 없다.
주섬주섬
코딩 처음 배울 시기 내 마음대로 변수 이름을 짓다가 이 변수가 무엇을 의미하는 변수인지 알 수 없는 경우가 많았다.... 여러분도 조심하길 바란다. 또한, 프로젝트를 하게 된다면 변수 표기법을 통일하는 것이 좋을 것이다. 같이 프로젝트하는 사람이 어느 언어를 주로 사용하느냐에 따라 변수 표기법이 다르기에 스크립트가 들쭉날쭉할 수 있다.
- 코딩을 연습하고 싶다면 백준에서 여러 문제를 풀어보는 것을 추천한다.
참고
- 동적 타입 언어란 자료형이 컴파일 시 자료형을 정하는 것이 아니고 실행 시에 결정되어 타입 없이 변수만 선언하여 값을 지정할 수 있게 해주는 언어이다.(장점으로 런타임까지 타입에 대한 결정을 끌고 갈 수 있기 때문에 유연성이 높고, 컴파일 시 타입을 명시해주지 않아도 되기 때문에 빠르게 코드를 작성할 수 있다. 단점으로는 실행 도중에 변수에 예상치 못한 타입이 들어와 Type Error가 생길 수 있다.)
- 식별자는 프로그래밍 언어에서 이름을 붙일 때 사용하는 단어이다.
- 키워드(keyword)는 특별한 의미가 부여된 단어로, 파이썬이 만들어질 때 이미 사용하겠다고 예약해 놓은 것이다.
- 아스키코드(ASCII Code)란 7비트로 이루어진 문자 인코딩을 말한다.
- 시퀀스(sequence)란 자열처럼 값이 연속적으로 이어진 자료형을 말한다.
- << 연산자 비트를 왼쪽으로 이동하는 연산자("^2" 연산이라 생각하면 편하다. ex) 2<<2 == 8)
- >> 연산자 비트를 오른쪽으로 이동하는 연산자(<< 연산의 역 연이라 생각하면 편하다. ex) 8>>2 == 2)
- None은 "Null"과 같은 의미로 아무것도 없음을 의미한다. 주의해야 할 점으로 0과 False와 ''(작은따옴표 사이에 아무것도 없음)과 다르다.
- 표현식이란 어떤 값으로 이행하는 임의의 유효한 코드 단위를 말한다.
댓글