본문 바로가기

IT

파이선 문법 1 - 변수와 자료형

프로그래밍 언어는 C, C++, C#, Java, 파이선 등 다양하지만 프로그래밍 언어가 나타내는 특성은 유사합니다.

파이선 프로그래밍 언어 기준으로 프로그래밍 언어의 특징을 설명해 드리지만 다른 프로그래밍 언어들도 언어 형식만 다를 뿐이지 모두 같은 속성을 가지고 있습니다. 

 

 

변수, 자료형, 표준 입출력, 파일 입출력, 제어 구조, 배열, 함수로 나누어 설명해 드립니다.

상대적으로 쉬운 파이선 언어를 통해 컴퓨터가 이해하는 프로그래밍 언어의 속성을 파악하는 것도 좋은 접근법인 것 같습니다.

1. 변수

컴퓨터는 자료를 처리하고 저장하는 수단으로 변수를 사용합니다.

변수는 숫자, 문자, 문자열, 배열 등과 같은 형태의 자료를 처리하거나 저장하는 수단이 됩니다.

변수마다 값을 저장하기 위한 메모리 공간이 할당됩니다.

변수들끼리 구분하기 위해 변수명을 가지며, 자료를 변수명으로 지정된 저장 공간에 저장한 후에 변수명으로 자료를 처리합니다. 변수에 저장된 값은 변경이 가능합니다.

 

파이선의 경우는 변수의 자료형을 미리 지정할 필요가 없으나, C나 Java와 같은 언어에서는 변수의 자료형을 미리 선언해야 합니다. 이 부분도 파이선이 좀 더 쉬운 프로그래밍 언어가 되는 요소입니다.

변수가 필요한 경우 '=' 기호를 사용해 값을 변수에 넣어주면 자동으로 자료형이 결정됩니다.

변수에 넣어 주는 자료형이 정수형(int)이면 자동으로 정수형으로 인식하고

변수에 넣어 주는 자료형이 문자형(string)이면 자동으로 문자형으로 인식하게 됩니다.

 

다음은 정수형, float 형, 문자형, 문자열형, 배열의 자료에 대한 사용 예시입니다.

>>> a = 10   #정수형
>>> print(a)
10
>>> b= 10.0  #float 형
>>> print(b)
10.0
>>> c= 'B'  # 캐릭터형
>>> print(c)
B
>>> d= "Good"   # 문자형
>>> print(d)
Good
>>> e = [k,l,m]
>>> print(e)
[k,l,m]
>>>

2. 자료형

자료형의 종류에는 숫자 형, 문자열, 리스트, 튜플, 집합, 사전형, 부울 형이 있으며, 

각 자료형에 맞는 연산자를 사용해야 합니다.

 

2-1) 숫자형

숫자 형에는 정수, 실수, 복소수, 8진수, 16진수가 있습니다.

연산자의 종류는 다음과 같습니다.

  •  덧셈 : +
  •  뺄셈 : -
  •  곱셈 :*
  •  나눗셈 : /
  •  나눗셈 몫 : //
  •  나눗셈 나머지 : %
  •  제곱수 : **
  •  대입 : =

2-2) 문자열

문자열은 문자, 단어로 구성된 문자들의 집합입니다.

큰따옴표(" ") 또는 작은따옴표(' ')로 문자열 변수를 표현합니다.

Python에서 큰따옴표이든 작은따옴표이든 긴 문자열을 표현할 수 있다는 점이 C 언어 계열과의 차이점이 됩니다.

 

문자열 연산자에는 ' + '와 ' * ' 가 있으며 실행 결과는 다음과 같습니다.

>>> var1 = hap' + 'py'  
>>> print(var1)
happy
>>> var2 =  'py'  * 3
>>> print(var2)
pypypy

문자열에는 인덱싱과 슬라이싱과 같은 중요한 개념이 있습니다.

인덱싱(indexing)이란 '무엇인가를 가리킨다'는 의미이고, 슬라이싱(slicing)은 '무엇인가를 잘라낸다'는 의미입니다.

문자열 인덱싱을 사용하는 경우에는 문자열을 구성하고 있는 문자들 맨 앞에서부터 또는 맨 뒤에서부터 순서대로 번호가 부여됩니다.

슬라이싱의 경우에는 문자열의 앞에서 또는 뒤에서부터 문자와 문자 사이에 번호를 순서대로 부여합니다. 

인덱싱, 슬라이싱
인덱싱과 슬라이싱

 

인덱싱
한 문자일 경우 : 
print(k[3])     =>  d
print*k[-5])    => b
여러 문자일 경우
print(k[1], k[3])   => b,d
슬라이싱
한 문자일 경우 : 
print(k[3:4]  => d
print(k[-5:-4]) => b
여러 문자일 경우
print(;[1:3]) => bc

2-3) 리스트

리스트는 숫자, 문자, 문자열을 나열해서 저장할 수 있는 자료형입니다.

각각의 숫자나 문자열을 콤마(,)로 구분하고 전체를 대괄호([ ])로 감쌉니다.

리스트에도 인덱싱과 슬라이싱 기능이 제공됩니다.

>>> a = [ ]
>>> print(a)
[ ]
>>> b = [1,2,3 ]
>>> print(b)   # 숫자 리스트
[1,2,3 ]
>>> c = ['Good', 'Morning', 'Everyone']   #문자열 리스트
>>> print(c)
[ 'Good', 'Morning', 'Everyone']
>>> print(c[2])
Everyone
>>>

리스트 연산자에는 ' + ' , ' * '가 있고 +는 concat의 의미를 가지며, *는 전체의 반복 의미를 가집니다.

a = [1,2,3]
print (a *3)
[1,2,3,1,2,3,1,2,3]
a = [1,2,3]
b = [4,5,6]
print (a +b)
[1,2,3,4,5,6]

리스트 변수에 = 연산자를 통해 값을 얼마든지 변경할 수 있습니다.

2-4) 튜플 (tuple)

튜플은 리스트와 유사하지만 읽기 전용, 즉 변경이 불가능합니다.

 

튜플이 리스트와의 차이점은 다음과 같습니다.

  • 리스트는 대괄호[]를 사용하지만 튜플은 괄호( )를 사용합니다.
  • 리스트는 값의 생성, 삭제, 수정이 가능하지만, 튜플은 값을 바꿀 수 없습니다.
  • 튜플은 t2 = (1, )와 같이 요소가 1개일 때 요소 뒤에 콤마(,)를 반드시 붙여야 한다.
  • 튜플은 t4 = 1, 2, 3처럼 괄호를 생략할 수 있습니다.

튜플은 값을 변경할 수 없다는 점만 제외하면 리스트와 동일하기 때문에 리스트와 마찬가지로' + ', ' * '연산자를 사용할 수 있습니다.

 

다음은 튜플의 인덱싱과 슬라이싱의 예시입니다.

>>> t1 = ('a', 'b', 3,4 )
>>> print( t1[1] )    #튜플변수의 인덱싱
b
>>> print( t1[2:] )   #튜플 변수의 슬라이싱
(3,4)
>>>

 

2-5) 집합 ( set )

집합은 집합에 대한 연산에 사용되는 자료형입니다.

집합은 키워드 'set'을 이용해 만들 수 있으며, 다음과 같은 특징이 있습니다.

  • 중복을 허용하지 않습니다.
  • 순서가 없습니다 (unordered)
  • 인덱싱이나 슬라이싱을 할 수 없습니다.
구분 명령어 실행 결과
&
(교집합 연산자)
s1 = set([1,2,3])
s2 = set([3,4,5])
print(s1 & s2)
{3}
|
(합집합 연산자)
s1 = set([1,2,3])
s2 = set([3,4,5])
print(s1 | s2)
{1,2,3,4,5}
-
(차집합 연산자)
s1 = set([1,2,3])
s2 = set([3,4,5])
print(s1 - s2)
{1,2}

 

2-6) 사전형 (dictionary)

사전형은 리스트나 튜플처럼 순차적으로 요소 값을 구하지 않고 키(Key)를 사용하여 값(Value)을 찾습니다.

변수명 = {Key1:Value1, Key2:Value2, Key3:Value3 }

 

다음은 사전형의 사용 예시입니다.

>>> dic = {'name':'Lee', 'phone':'010-9877-2312', 'birth':'2005'}
>>> dic['name']
'Lee'
>>> dic['birth']
'2005'
>>>

2-7) 부울형 (Bool)

부울 형은 부울 연산을 수행하는 데 사용되는 자료형입니다.

부울 형 변수는 'True' 혹은 'False'값의 의미를 가집니다.

숫자 값을 가질 경우는 0은  False를 의미하고, 0이 아닌 이외의 수는 True를 의미합니다.

부울 연산의 종류에는 비교 연산과 논리 연산이 있습니다.

부울 연산의 결과는 참(True) 또는 거짓(False)으로 나타나고, 참은 0이 아닌 숫자로, 거짓은 0으로 나타납니다.

구분 의미 명령 ( a=3, b=5 ) 실행결과
비교
연산자
< 작다 a < b True 
<= 작거나 같다 a <= b True 
> 크다 a > b False
>= 크거나 같다 a >= b False
!= 같지 않다 a != b True 
== 같다 a == b False
논리
연산자
and 두 값이 모두 True일 경우 True True and True True 
or 두 값 중 하나라도 True이면 True True or False True 
not 논리값의 반댓값 not False True 

 

'IT' 카테고리의 다른 글

유무선 네트워크  (0) 2022.10.27
파이선 문법 3 - 제어,배열,함수  (0) 2022.10.27
파이선 문법 2 - 입출력  (0) 2022.10.26
파이썬과 소스코드 편집기 설치  (0) 2022.10.25
컴퓨팅을 통한 문제 해결  (0) 2022.10.25