WeSeong Log in
← Back to posts
프로그래밍 언어

프로그래밍 언어와 파이썬(변수, 연산자, 데이터형)

프로그래밍 언어와 파이썬(변수, 연산자, 데이터형)

예전에 파이썬을 배우긴 했지만 최근까지 자바 스프링 웹프로젝트를 진행했어서 많이 잊어먹었는데

이번에 배우면서 새록새록 떠오르더라구요.

그래서 다시 확실히 복습할 겸 이번 포스팅을 작성합니다.


Ⅰ. 개요

파이썬을 통해 무엇을 할 것이며, 어떻게 활용할 것인지 생각하는 것이 필요하다.

프로그램은 컴퓨터와 스마트폰에 들어 있는 많은 소프트웨어로서 유튜브, 메시지, 전화, 카카오톡 등 다양하다. 프로그래머프로그래밍 언어(C, C++, C#, Java, Python, Javascript 등)을 활용해서 프로그램을 만든다. 프로그래밍 언어는 컴파일러(Compiler) 언어 스크립트(Script)언어가 있다. 파이썬은 무료 오픈 소스로 다양하고 강력한 외부 라이브러리와 사용의 용이하다. 파이썬의 변수는 데이터를 저장할 주소값(메모리 공간)을 기억하기 어려워 사용하는 개념이다. 변수명을 지정할 때 다양한 규칙이 적용될 수 있지만 크게 맨 앞에 숫자는 쓸 수 없고 '_'(언더바)를 활용할 수 있고 예약어는 사용할 수 없다. print()함수는 파이썬에서 특정 로직의 결과를 출력하고 input()함수는 사용자에게 값(데이터)를 입력받을 수 있다. 파이썬에서 연산자는 크게 산술연산자, 대입연산자, 비교연산자, 논리연산자가 있으며 연산자마다 우선순위가 부여된다. 파이썬은 다른 프로그래밍 언어와 마찬가지로 데이터형(자료형) 존재하긴 하지만 형변환이 자동으로 이루어지고 별도로 선언하지 않는다. 데이터형의 종류는 숫자, 문자열, 불이 있으며 문자열에 활용 가능한 len(), upper(), lower(), isupper(), islower(), count(), find() 등의 유용한 함수가 있으며 그 외에도 유용한 다양한 함수가 존재한다.



Ⅱ. 프로그래밍 언어와 파이썬

  1. 프로그래밍 언어란?

프로그램은 소프트웨어(Software), 애플리케이션(Application), 앱(App), 응용 프로그램과 동일한 용어이다. 프로그래밍 언어로 프로그래머가 프로그램을 만드는데 그렇게 만들어진 프로그램 종류는 유튜브, 메시지, 전화, 카카오톡, 엑셀, 한글, 크롬, 메모장 등이 있다. 프로그래밍 언어는 우리가 소통하는 한국어와 같이 컴퓨터가 이해할 수 있는 언어이다. 그 종류는 컴파일러(Compiler) 언어스크립트(Script) 언어로 구분할 수 있다. 컴파일러 언어에서 컴파일 과정이 있는데 프로그래머가 작성하는 소스 코드를 기계어로 번역하는 과정이다. 컴파일러 언어로 컴파일된 파일(*.exe, *.class 등)을 실행해서 프로그램을 이용할 수 있고 대표적인 언어는 C, C++, Java, C# 등이 있다.


스크립트 언어는 인터프리터(Interpreter) 언어로 불리며 별도의 컴파일 과정 없이 소스 코드를 한 줄씩 읽어서 실행한다. 대표적인 언어로 파이썬(Python), 자바스크립트(Javascript), 펄(Perl) 등이 있다. 컴파일 과정을 조금 더 자세히 설명하자면 컴퓨터는 0과 1로 이루어진 기계어로 된 Binary파일을 읽을 수 있는데 프로그래머가 작성한 소스 코드는 사람이 알아들을 수 있는 언어이므로 아스키코드를 통해 변환한다. 그래서 컴파일 과정이 필요없는 스크립트 언어는 수정이 용이하고 컴파일러는 실행 파일을 열어도 수정이 어려우며 대신 실행 속도가 스크립트 언어보다 더 빠르다. 스크립트 언어는 사람이 알아들을 수 있는 언어로 번역하지만 컴파일러 언어는 컴파일 과정을 통해 기계어로 된 파일을 직접 실행하기 때문에 처리 과정이 더 빠르다. 특히 예전엔 대용량 데이터 처리에 있어 큰 차이가 있었지만 최근엔 하드웨어의 발달로 스크립트 언어도 충분히 사용할 만큼 속도가 괜찮다.


2. 파이썬이란?

파이썬은 스크립트 언어로 귀도 반 로섬(Guido van Rossum)이라는 프로그래머가 개발했다. 현재 2023년 활용도 1위를 차지하고 있다.

www.tiobe.com

파이썬의 장점은 무료 오픈 소스이며 사용이 용이하고 다양하고 강력한 외부 라이브러리 기능이 제공된다. 웹 개발 환경에도 강력하다. 단점으로 스크립트 언어이기 때문에 다른 언어보다 실행 속도가 느리고 모바일 컴퓨팅 지원 분야에 약하며, 하드웨어 제어 부분과 관련해서 사용이 쉽지 않다. 하지만 최근에 라이브러리의 강력한 기능으로 여러 데이터를 조합하고 활용하는데 용이(광범위)하기 때문에 단점이 많은 부분에서 커버되고 있어 느끼기 쉽지 않다. 모바일 컴퓨팅 분야, 하드웨어 제어 부분과 관련한 많은 라이브러리가 생겼으며, 단점이라기 보단 다른 언어보다 약한 부분이라고 생각하는 게 좋다. 그리고 클라우드 보안 관제에서 활용할 수 있는 많은 라이브러리가 있다.

www.python.org

클라우드 컴퓨팅 기술, 클라우드 보안 관제 분야에 파이썬을 활용하는 이유는 업무에 필요한 작업을 자동화하는 프로그램을 만드는 데 용이하기 때문이다. 특정 프로그램을 개발해서 배포할 필요없이 개별적인 자동화 프로그램을 만들어 사용하는 데 탁월하다. 우리가 알아들을 수 있는 언어이기 때문에 수정이 용이하고 이식성이 뛰어나며 코드 작성이 컴파일러 언어보다 간결하고 쉽다. 거기에 활용 가능한 강력한 외부 라이브러리 때문에 클라우드 보안 관제에서 자동화 프로그램을 활용하고 직무를 해나가는데 파이썬은 용이하다.


3. 파이썬 활용

실제 코드를 작성해서 파이썬을 활용해보는 실습부분이었습니다.

위에서 서술한 내용은 이론적인 부분을 정리한 것이라 보고서 혹은 논문 형식처럼 작성하려고 했습니다!

IDLE과 윈도우 커맨드, 메모장을 활용했는데 나중에 서버 관제는 리눅스 환경을 활용하기 때문에 미리 익숙해지는 데 도움이 되기 때문에 파이참(PyCharm)과 같은 툴을 활용하지 않았습니다.

이 부분은 다른 좋은 포스팅된 글들이 많아 검색하셔서 참고하시면 좋을 것 같습니다!!😉


여기 들어가시면 파이썬의 다양한 함수 기능 설명을 보실 수 있습니다!!!

https://docs.python.org/3/index.html



Ⅲ. 파이썬 변수와 print(), input(), int()

  1. 변수란?

컴퓨터의 메모리 공간을 활용해서 값을 저장하는 공간이다. 쉬운 예시로 음식은 데이터이고 변수는 음식을 담는 그릇이라고 생각하면 쉽다.

a = 100
b = 200

이 예시처럼 변수를 선언하는데 어릴 때 배운 일차방정식과 다르게 왼쪽이 변수명, 오른쪽이 대입할 값이다. 다른 언어와 다르게 변수에 관련한 파이썬의 특징은 나중에 이야기하겠지만 데이터형(자료형)을 선언해줄 필요가 없다는 것이다. 단순히 변수명과 대입연산자(=)를 활용해서 값을 넣어주면 자동으로 형변환 해준다.

데이터형은 프로그래밍 언어에서 굉장히 중요한데, 데이터 특성마다 컴퓨터가 활용하는 메모리 공간이 다르기 때문이다.


그래서 대표적으로 C, Java같은 언어는 데이터형을

항상 명시해줘야 한다!!

그리고 변수는 단순히 값만 대입하는 게 아니라 +, -, *, /와 같은 사칙연산한 결과도 받을 수 있다. 자세한 건 나중에 연산자 부분에서 다루기로 한다. 또, 변수를 선언할 때 파이썬만의 특징이 있는데

a, b, c = 1, 2, 3
list = 1, 2, 3, 4
variable = "안녕"
variable = "난 파이썬"

이 코드를 보면 맨 위처럼 선언하면 각각 a, b, c에 1, 2, 3이 대입된다. list 변수처럼 선언하면 배열이 된다!


※ 코딩에서 배열은 정말 중요한데 그 부분은 이후에 진행될 포스팅을 기대해주세요!!


variable 변수처럼 선언하게 되면 가장 마지막에 대입한 값이 남고 이전 값들은 초기화된다! 그래서 "안녕"과 "난 파이썬"이라는 데이터를 모두 사용하고 싶다면 각기 다른 변수를 선언해주거나 "난 파이썬"을 할당해주기 전에 "안녕"을 사용하는 것이 좋다.


2. 변수 이름 짓기

변수명은 기본적으로 영문과 숫자를 사용한다. 단, 여기서 중요한 점은 숫자로 시작할 수 없다!!

그리고 파이썬에서는 변수명에 '_(언더바)'를 사용할 수 있고 대, 소문자 활용이 가능하다. '_'는 맨 앞에도 가능하며 어느 위치든 상관없다. 변수명으로 예약어를 사용할 수 없는데 예약어는 이미 파이썬 문법에 정의되어 있는 사용되는 단어들이다.

True

False

None

if

elif

else

continue

pass

finally

def

for

while

with

try

except

break

class

return

import

as

예약어의 종류는 이외에도 다양하게 있으며 굳이 외울필요없이 코딩에 점점 익숙해지다보면 알게된다.

변수명에 길이 제한은 없지만 좋은 변수명을 위해 데이터를 알아보기 쉽게 짓는 것이 좋고 변수명에 대해 '_', 대, 소문자, 숫자를 활용해서 자신만의 규칙을 정하는 것도 좋다. 변수명으로 데이터를 바로 파악할 수 있고 짧으면 더욱 좋다. 예시로

phone = 01012345678
name = "홍길동"

def move():

def는 함수를 선언하는 것인데 나중에 다루겠지만 함수명도 변수명과 마찬가지로 이름 짓는게 중요하며 동사를 활용하는 것도 좋다!

그래서 나중에 클래스나 함수, 데이터에 따라 변수명을 어떻게 지을지 고민해보자!😊


※ 파이썬에선 특이하게 이미 존재하는 함수명을 변수명으로 선언할 수 있다. 하지만 새롭게 변수로 선언하게 되면 변수명이 함수명보다 우선시되어 기존의 역할을 잃어버리게 된다. 기존의 파이썬 내장 함수이기 때문에 재실행하면 다시 정상작동하지만 기존의 함수명을 변수명으로 선언하는 것은 권장되지 않는다!


3. print(), input(), int()

print(), input(), int()는 파이썬을 처음 배울 때 만나게 되는 파이썬의 기본 내장함수이다. 파이썬 언어 개발자가 특정 역할을 수행하도록 미리 만들어 놓은 함수이다. 함수에 대해서는 나중에 다루겠지만 간단하게 설명하자면 어릴 때 배운 수학에서 함수를 떠올리면 쉽다. 수학을 싫어했던 사람도 있어서 예시를 들자면, 요술상자가 있고 그 요술상자는 특정한 방식으로 동작한다. 특정 값(x)을 요술상자에 넣으면 출력값(return)이 있다. 이는 기본적인 함수 동작방식이며 x와 return은 변수로 선언할 수 있다. 사과(x)를 그 요술상자에 넣으면 사과(return)가 3개가 되는 것과 같다.


print()는 출력을 담당하는 함수이다. input()은 키보드로 직접 데이터를 입력받는 함수이다. int()는 입력받은 값 혹은 특정 값을 정수로 바꿔준다. 코드로 보자면

print("Hello, World!")
출력값: Hello, World
input("입력해주세요")
안녕하세요
입력값: 안녕하세요
int(3.14)
바뀐값: 3

기본적으로 이렇게 활용할 수 있는데 print, input, int 앞에 붙는 괄호 안에 출력, 입력, 바꾸고 싶은 데이터가 들어간다. 이 데이터를 인자라고 하며 print()함수는 하나만 되는 것이 아니라 여러 개가 될 수 있다. print()함수의 특이한 점으로

print("난")
print("파이썬")
print("열심히 해보자구")
결과 =>
난
파이썬
열심히 해보자구

print("난", end="")
print("파이썬", end="")
print("열심히 해보자구", end="")
결과 => 난파이썬열심히 해보자구

이런 결과가 나오는데 그 이유는 마지막 end인자에 있다. 저 end인자는 따로 넣어주지 않더라도 기본적으로 줄바꿈을 한다. 줄바꿈은 이스케이프 문자 \n인데 end="\n"인 기본값을 없애서 줄바꿈을 안하게 되어 저렇게 결과가 나타나게 된다. 이스케이프는 나중에 더 자세히 다루기로 한다.


input()함수는 코드를 실행하면 사용자가 특정 값을 입력할 때까지 대기한다. int()는 실수형, 문자형을 정수로 바꿔주는데 input()함수와 같이 사용할 수 있다.

num = int(input("정수를 입력해주세요"))
입력 대기...
1234
입력값 => 1234

입력받은 값을 직접 활용하기 위해 변수로 선언할 수 있고 input()함수의 괄호 안에 어떤 값을 입력하라고 안내 메시지를 넣을 수 있다. 단, 여기서 주의할 점은 입력받은 값이 정수로 변환할 수 없는 일반 글자(ex. abc)나 실수(2.1234)를 입력하면 int()함수로 정수로 변환할 수 없다! 또, 위에 있던 예시처럼 int()함수에 개별적으로 실수를 넣어주는 것은 정수로 변환 가능하다.



Ⅳ. 파이썬 연산자

사실 연산자와 관련된 자료는 정말 정리가 잘된 좋은 자료가 많다.

그래서 이 글에서는 단순히 어떤 연산자가 있는지 정리하고 넘어가도록 한다.


  1. 산술 연산자

+, -, *, / => 더하기, 빼기, 곱하기, 나누기 연산자이다. 일반적인 수학의 사칙연산과 같다.

a = 10
b = 20
a + b 결과 => 30
a - b 결과 => -10
a * b 결과 => 200
a / b 결과 => 0.5

여기서 알아둘 특이한 점은 이전에 변수에서 설명했듯 파이썬은 데이터형을 자동으로 형변환해주기 때문에 정수끼리 나눈 값도 실수형으로 바꿔준다.


일반 사칙연산과 다른 //, %, ** => 나누기(몫), 나머지값, 제곱 연산자가 있다.

a = 8
b = 5
a // b 결과 => 1
a % b 결과 => 3
a ** b 결과 => 32768

// 연산자는 나누기 할 때 몫을 반환한다. %는 나누기 한 후 나머지값을 반환한다. **는 앞에 숫자를 뒤에 숫자만큼 제곱한다. 위의 예시처럼 앞의 숫자가 8이고 뒤에 숫자가 5면 8을 5번 제곱한다.


2. 대입 연산자(복합 대입 연산자)

일반적인 대입 연산자는 '='이다. 추가적으로 알아둘 것은 복합 대입 연산자인데 종류는

+=

num += 10

num = num + 10

-=

num -= 10

num = num - 10

*=

num *= 10

num = num * 10

/=

num /= 10

num = num / 10

//=

num //= 10

num = num // 10

%=

num %= 10

num = num % 10

**=

num **= 10

num = num ** 10

이렇게 된다. 파이썬의 변수는 같은 이름으로 재할당이 되었기 때문에 num이라는 변수에 10의 값이 있다면 그 값을 그대로 사용해서 연산을 하고 다시 num변수에 넣어줄 때 이렇게 사용한다.


3. 비교 연산자, 논리 연산자

비교 연산자와 논리 연산자는 표로 한 번에 정리한다.

연산자

의미

설명

==

같다

두 값이 동일하면 참(True)

!=

같지 않다

두 값이 다르면 참(True)

>

크다

왼쪽이 크면 참(True)

<

작다

왼쪽이 작으면 참(True)

>=

크거나 같다

왼쪽이 크거나 같으면 참(True)

<=

작거나 같다

왼쪽이 작거나 같으면 참(True)

연산자

의미

설명

사용 예시

and

그리고

둘 다 참이어야 참

(num > 10) and (num < 20)

or

또는

둘 중 하나만 참이어도 참

(num == 10) or (num == 20)

not

부정

참이면 거짓, 거짓이면 참

not(num < 100)

이렇게 사용되며 True와 False로 반환되는 연산이다. 나중에 다룰 if, elif, else와 같이 유용하게 사용된다.

연산자 우선순위가 있는데 이 과정은 파이썬으로 특정 프로그램을 개발해서 배포하기 보단 클라우드 보안 관제와 관련되어 있기 때문에 해보면서 알아가도 된다. 그리고 가장 높은 우선순위인 () 괄호를 사용하는 일이 많기 때문에 괄호만 알아도 된다. 우선순위는 어떤 연산을 먼저할지를 결정하는 것이기 때문에 자신의 코드에 맞춰 괄호를 활용하면 된다!그 점만 확실히 알고가자!


※ Tip: Java나 C, 다른 언어에서 존재하는 증감연산자 i++, i--가 파이썬에서는 없다!



Ⅴ. 파이썬 데이터형

데이터형(자료형)은 변수의 종류를 뜻한다. 기본적으로 4가지가 있는데 정수형, 실수형, 문자형, 불형이 있다. 정수형과 실수형은 수학의 정수와 실수 개념이고 문자형은 글자를 뜻하며 불형은 True와 False이다. 이 데이터형을 확인하는 함수가 있는데 type()이며

a = 10
b = 1.2
c = "파이썬"
d = True
print(type(a))
결과 class 'int'
print(type(b))
결과 class 'float'
print(type(c))
결과 class 'str'
print(type(d))
결과 class 'bool'

이렇게 확인할 수 있다.


다시 말하지만 파이썬은 데이터형이 자동으로 형변환된다. 다른 언어는 직접 형변환을 해줘야 하는데 이를 Type Casting이라고 한다. 데이터를 자동으로 형변환할 땐 더 큰 데이터 형태를 따라간다. 다른 데이터형도 중요하지만 웹상에서 데이터를 주고 받는 기반 데이터형은 문자열이다. 그래서 문자열에 관한 내장 함수가 많으며 len(), upper(), lower(), isupper(), islower(), count(), find() 등이 있으며 그 외에도 굉장히 다양하다. 그리고 이스케이프 문자가 있는데 파이썬에서 문자열을 선언할 때는 큰따옴표 혹은 작은따옴표가 필요하다. 그리고 위에서 print()함수에서 다뤘던 것처럼 줄바꿈을 하는 \n 이스케이프 문자 외에도 탭키 - \t, 뒤로 한 칸 이동 - \b 등이 있다. 이처럼 특정한 의미를 가지는 문자가 있다. 만약 큰따옴표나 작은따옴표를 일반 문자로 사용하고 싶다면?

print("\"")
결과 => "
print('\'')
결과 => '

이렇게 사용할 수 있다. \ - 백슬래시는 아무 의미없는 n, t, b에 붙어서 의미를 부여하기도 하지만 원래 다른 의미가 있던 ", ' 앞에 붙어 의미를 제거하기도 한다.


위에 유용한 문자열 함수는 직접 사용하면 금방 익힐 수 있고 이미 정리가 잘되어있어 간단히 설명하자면

len("hello")
결과 => 5

str = "abc"
str.upper()
결과 => ABC

str = "ABC"
str.lower()
결과 => abc

str = "ABC"
str.isupper()
결과 => True

str = "abc"
str.islower()
결과 => True

str = "안녕, 난 파이썬이야. 예전에 배웠지만 이번에 다시 파이썬 복습하고 있어"
str.count("파이썬")
결과 => 2

str = "완전 처음 파이썬"
str.find("완전")
결과 => 0

이렇게 사용된다. len()은 문자열의 길이, upper()는 대문자로 변환, lower()는 소문자로 변환, isupper()는 대문자인지 True와 False로 islower()는 소문자인지, count()는 문자열 변수에 특정 글자가 몇 번 들어가는지, find()는 문자열 변수에 특정 글자가 몇 번째에 포함되어 있는지를 알려준다. find()함수의 경우 찾은 문자열 변수에 찾으려는 글자가 없다면 -1을 반환한다.



후기

예전에 배웠지만 잊어먹은 부분을 다시 떠올릴 수 있어 좋았고 이렇게 긴 시간동안 블로그에 다시 포스팅하며 복습할 수 있어 확실히 기억할 수 있게 되었습니다. 사실 이론적인 부분은 지루한 감이 있지만 🥲 곧 코딩을 직접 해보며 게임을 만드는 실습이 진행된다고 하니 매우 기대됩니다.😃