반응형

[ ]를 사용하는 리스트는 임의의 객체를 저장하는 집합적 자료형이다.

각 자료는 순서를 가지고 있고, 순서에 따라 접근 가능하다.


len 함수를 이용한 문자열의 길이 출력


L이란 리스트에 있는 자료를 순서에 따라 접근


그림으로 표현을 해본다면 다음과 같다.



슬라이싱 또한 가능하다.


리스트의 연산도 가능하다.


[L + L 연산]

[L * 3 연산]


L이라는 리스트 안에 range 함수로 채우고자 하는 값의 범위를 넣어주면 채워진다.


확장 슬라이스도 가능하다 (파이썬 2.3 이상에서 가능)


멤버십 테스트

* 4라는 값이 L안에 존재하는가? 참(True)


리스트는 다양한 메쏘드를 가지고 있다.


리스트 마지막에 자료 추가


리스트 자료의 삭제


리스트 순서를 바꾼다. 리스트는 메쏘드(객체 함수)를 가진다.


리스트를 오름차순으로 정렬한다.



반응형

'프로그래밍 > 파이썬(Python)' 카테고리의 다른 글

자료형의 종류 1.문자열  (0) 2018.01.07
자료형의 종류  (0) 2018.01.07
파이썬에서 콘솔 입,출력하기  (0) 2017.12.16
문자열로 된 파이썬 코드 실행하기  (0) 2017.12.10
파이썬 기초문  (0) 2017.07.28
반응형

1) 문자열

문자열은 문자들(텍스트)을 표현하기 위한 자료형이다.

문자열들은 단일 인용부호(‘ ‘) 혹은 이중 인용부호(“ ”) 안에 묶여진 문자들의 모임이다.



이러한 문자열들은 인덱싱(Indexing)으로 각각의 문자를 취할 수 있다.



또한 슬라이싱(Slicing)으로 부분 문자열을 취할 수도 있다.



슬라이싱의 시작 위치가 생략되면 ‘처음부터’, 마지막 위치가 생략되면 ‘끝까지’의 의미이다.



슬라이싱은 세 가지 값을 가질 수 있다.

(start : stop : step) 파이썬 2.3부터는 내장 시퀀스 자료형에 몇 단계를 건너뛸까를 정하는 step이 지원된다. 이것을 확장 슬라이스(Extended Slice)라고 한다.

시퀀스 자료형인 문자열, 리스트, 튜플에 모두 적용된다.

생략되었을 경우에 start는 0, stop은 자료형의 크기, step은 1의 값을 가진다.



연결(+)과 반복(*)의 연산도 적용 가능하다.



문자열은 값이 변경되지 않는다.



만일 문자열 변경을 원하면 슬라이싱과 연결하기를 이용한다.



문자열 길이는 len  내장 함수를 이용한다.



멤버십 테스트를 이용하여 부분 문자열의 존재를 확인할 수 있다.



반응형

'프로그래밍 > 파이썬(Python)' 카테고리의 다른 글

자료형의 종류 2.리스트  (0) 2018.01.08
자료형의 종류  (0) 2018.01.07
파이썬에서 콘솔 입,출력하기  (0) 2017.12.16
문자열로 된 파이썬 코드 실행하기  (0) 2017.12.10
파이썬 기초문  (0) 2017.07.28
반응형

자료형이란, 컴퓨터로 표현할 수 있는 자료의 종류를 의미한다.

예를 들어, 숫자를 저장하는 형태와 문자열을 저장하는 형태가 다른 것과 같이,

파이썬에서는 여러가지의 정보를 저장할 수 있는 자료형을 미리 정해 놓고 있는데,

이를 내장 자료형(Built-in Types)이라고 한다.


파이썬은 다른 언어에서 제공하지 못하는 고수준의 편리한 자료형이 준비되어 있다.

파이썬의 자료형은 강력하여 다른 언어에서는 해야 할 많은 번거로운 작업을 줄여 준다.

대부분의 경우 별다른 자료 구조의 설계 없이, 파이썬에서 제공되는 자료형만 가지고 충분히 할 수 있다.


[주요 내장 자료형]


자료형

설명

수치 형(Numbers)

정수, 롱형 정수, 실수, 복소수 등을 표현.

123, 12345L, 1.43, 5+4j

문자열(Strings)

문자들의 모임.(내용 변경X)

‘spams’, “ham”, “egg”, “”hot dog””

리스트(Lists)

순서를 가지는 파이썬 임의 객체 집합.

[‘ham’, ‘spam’]

사전(Dictionaries)

순서를 가지지 않는 객체의 집합.

키(Key)로 값을 꺼낸다.

{‘ham’:4, ‘spam’:5}

튜플(Tuples)

순서를 가지는 파이썬 임의 객체의 집합.(내용 변경X)

(‘ham’, ‘spam’)

파일(Files)

파일에 자료를 입.출력하기 위한 객체.

f = open(‘ham’)


반응형
반응형

1. 콘솔 입력

키보드로부터 문자열을 읽어 들이기 위해서 사용하는 함수는 raw input이다.

이 함수는 하나의 인수를 받을 수 있는데, 키보드 입력을 알려 주는 프롬프트(메시지)이다.

엔터 키를 입력할때 까지 읽은 문자열을 리턴한다.



만일 정수나 실수 등의 값을 원한다면 raw_input을 사용해서 문자열을 받은 후 수치 형으로

변환하거나, input을 이용한다.


[raw_input 함수로 정수값을 출력]


[input 으로 정수값을 출력]


[raw_input 으로 실수값 출력]


input은 입력된 문자열을 파이썬 식으로 처리해서 넘겨준다.


2. 콘솔 출력

1) print

화면으로 자료를 출력하는데 가장 보편적으로 사용되는 것은 print 문이다. 여러 값들을 콤마(,)로

구분할 수 있으며, 출력 시에 각 값들 사이에 공백 한 개가 추가된다.



세미콜론(;)으로 분리된 문은 순차적으로 입력된 문들로 처리된다.


기본적으로 print 문은 마지막에 줄바꾸기를 하지만, print 끝에 콤마(,)를 사용하면 줄바꾸기를 하지 않는다.



일반 자료형들도 ‘ ’식을 이용하여 문자열로 변환한 후 출력할 수 있다. ‘ ‘는 객체를 문자열로 변환한다.



2) pprint 모듈 이용하기

print 문이 복잡한 자료를 출력할 때 적합하지 않다면 pprint를 사용한다.

(complicated = complicated * 3 은 입력값을 3번 출력하기 위해서 입력된 것임.)



pprint를 사용하여 출력을 한 경우 보기 쉽게 입력값이 출력이 되고



print를 사용하여 출력을 하면 입력값이 연달아서 3번 출력하게 되므로 좀 보기가 어렵다.



3) 대화적 출력 후크(Interactive Display Hook)

파이썬 인터프리터를 대화적으로 사용할 때 출력은 기본적으로 repr() 내장 함수를 이용하여 출력된다.

2.1 이상에서 sys.displayhook을 설정하면 repr() 대신에 다른 함수를 기본 출력 함수로 사용할 수 있다.

예를 들어 다음과 같은 리스트가 주어져 있다.

sys.displayhook을 설정하는 방법은 다음과 같다.


>>> import sys, pprint

>>> sys.displayhook = pprint.pprint


그리고 다시 리스트를 출력하게 되면 pprint 형식으로 출력이 된다.



그러나 print 문으로 출력하면 여전히 이전의 방식대로 출력된다.


이상으로 콘솔 입,출력 방법을 알아보았다.

반응형

'프로그래밍 > 파이썬(Python)' 카테고리의 다른 글

자료형의 종류 1.문자열  (0) 2018.01.07
자료형의 종류  (0) 2018.01.07
문자열로 된 파이썬 코드 실행하기  (0) 2017.12.10
파이썬 기초문  (0) 2017.07.28
파이썬 변수명 및 예약어  (0) 2017.07.28
반응형

우리는 우리가 원하는 문자열을 프로그램 실행 중이라도 마음대로 만들 수 있기 때문에

문자열로 표현된 파이썬 코드를 실행하는 것은 유용할 수 있다.

이런 코드를 실행하는 방법은 몇 가지가 있다.


1. eval

eval() 내장 함수는 문자열로 된 파이썬 식(Expression)을 실행한다.


식만을 수행할 수 있기 때문에 문을 실행하려고 하면 다음과 같은 SyntaxError 예외가 발생한다.


eval() 내장 함수의 사용 형식은 다음과 같다.

eval (expression[, globals[, locals]])

여기서 global은 전역 영역 사전, local은 지역 영역 사전이다. 이들 인수는 선택적이다.


2. exec

exec는 문자열로 된 문(Statement)을 수행한다.


exec는 여러 개의 문일 수 있다.


exec의 사용 형식은 다음과 같다.

exec code [ in globals [, locals]]

여기서 global은 전역 영역 사전, local은 지역 영역 사전이다.


3. compile

exec나 eval은 문자열로 입력된 코드를 분석해서 파이썬 컴파일 코드로 변환한다. 만일 이러한 코드를 반복적으로 수행하게 되면 변환에 필요한 시간은 크게 늘어나게 된다.

효율적인 수행 방법은 문자열을 파이썬 코드로 한번 변환해 둔 후에, 반복 실행할 때마다 이 코드를 활용하는 것이다. compile() 내장 함수는 문자열을 컴파일하여 파이썬 코드를 리턴한다.

사용 형식은 다음과 같다.  

compile (string, filename, kind)


여기서 string은 코드 문자열, filename은 코드 문자열이 저장된 파일명이다. 코드 문자열이 파일에서 읽혀지지 않았다면 <string>이 된다. kind는 어떤 종류의 코드가 컴파일되야 하는지 지정한다. ‘exec’이면 여러 개의 문들을 컴파일하며, ‘eval’이면 하나의 식을, ‘single’이면 하나의 대화적 문을 컴파일한다.


단일 문의 실행 예


복합 문의 실행 예


반응형

'프로그래밍 > 파이썬(Python)' 카테고리의 다른 글

자료형의 종류  (0) 2018.01.07
파이썬에서 콘솔 입,출력하기  (0) 2017.12.16
파이썬 기초문  (0) 2017.07.28
파이썬 변수명 및 예약어  (0) 2017.07.28
파이썬 스크립트를 작성하고 실행하기  (0) 2017.07.20
반응형

1. 주석문

주석(Comment)은 코드의 내용을 설명하거나, 참조할 사항 등을 기록하는 것으로 프로그램 실행에는 전혀 영향을 미치지 않는다.


주석은 라인 어디에서나 시작할 수 있다. 한 라인에서 # 다음에 나오는 문자들은 주석으로 취급된다.


2. 연속 라인

줄바꾸기 앞의 ‘\’는 다음 라인을 현재 라인과 연결시켜 주는 역할을 한다.


3. 치환문

= 문은 우변의 객체 혹은 식을 좌변의 이름에 할당하는 것이다. 치환문(Assignment) 혹은 대입문이라고 한다. 변수 이름은 선언될 필요가 없다. 필요한 시점에서 치환하면 변수는 생성된다. 변수의 형은 우측의 객체에 의해서 결정된다.


하지만 다음과 같은 문은 에러이다. = 문은 좌변에 치환될 변수명이 와야 하기 때문이다.


‘=’은 ‘등호’가 아니라 치환 연산자이다. 오른쪽의 값을 왼쪽에 갖다 놓으라는 뜻이다.

‘등호’를 위한 연산자는 ‘==’라는 것이 있다. 등호는 두 개의 값이 동일한지 그렇지 않은지를 판별한다. 파이썬 2.2 이하에서는 만일 결과 값이 0이면 다른 값(거짓)임을, 1이면 같은 값(참)임을 나타낸다. 파이썬 2.3부터는 True, False로 진리 값을 나타낸다.

여러 값을 한 줄에 치환하는 기능을 보자.


그러나 다음과 같은 C 형식은 허용되지 않는다.


왜냐하면 ‘b = c + d’는 식(Expression)이 아니라 문(Statement)이기 때문이다. ‘x = y = z = 0’이 가능한 것은 파이썬 자체가 이러한 형식의 문을 지원하기 때문이지 ‘z = 0’이 식이기 때문이 아니다.


4. 확장 치환문

C 언어에서 사용되던 연산자로 앞서 배운 연산자를 치환문과 함께 사용할 수 있다. 확장 치환 연산자의 종류는 다음과 같다.


--------------------------------------------------------------------------------------------------------------------------

+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, **=

--------------------------------------------------------------------------------------------------------------------------


‘x op=y’의 의미는 ‘x = x op (y)’와 같다. 즉, ‘a += 2’는 ‘a = a + (2)’와 같다.


5. 이름과 객체

파이썬은 다른 많은 언어와는 달리 변수의 이름과 값 객체가 분리되어 있다. 예를 들어, a = 1 이란 문에서 숫자 1이 변수 a에 저장되는 것이 아니다. 파이썬에서는 a를 이름, 숫자 1을 객체라고 하며, 두 개념은 분리되어 있다. 다음과 같은 구조를 가진다.


** 이름과 객체

일반적인 컴파일러 언어(소스 코드를 기계어 수준으로 번역해서 실행하는 언어, C언어가 대표적)는 이름과 객체의 개념이 분리되어 있지 않다. 컴파일러 언어에서 이름은 번역될 때 실제 메모리 주소로 모두 변환되므로 프로그램을 수행하는 런타임 시점에서는 이러한 심볼의 이름들은 의미가 없다. 즉, 변수 혹은 객체의 이름은 해당 객체의 주소로 변환된다.

이에 반해서 파이썬과 같은 동적인 자료형을 가지는 언어에서는(대부분은 스크립트 언어) 변수의 생성과 소멸이 언제든지 일어날 수 있기 때문에 이름이 주소로 변환되지 않고 별도의 장소에 이름이 보관되며, 이름과 객체와의 관계 정보를 추가로 가지고 있다. 이름이 저장되는 장소를 심볼 테이블(Symbol Table)이라고 한다.


6. 객체의 치환

다음과 같은 코드가 있다.


Y와 Z는 각각 객체 X를 내부 항목으로 지정했다. 이 때,

1. Y나 Z 안에 X가 복사되어 삽입되는 경우

(원래의 [1,2,3] 객체 이외에 또 다른 객체가 만들어지고, 새로 만들어진 [1,2,3] 객체가 Y와 Z에 삽입되는 경우)

2. [1,2,3]은 그대로 하나만 존재하고, 이 객체에 대한 참조만 Y와 Z에 삽입되는 경우

위 두가지의 경우가 발생할 수 있다.


테스트 코드로 이것을 확인할 수 있다.

즉, X의 값을 하나 바꿨을 때 Y와 Z에 영향을 미치면 이것은 공유 객체, 그렇지 않으면 분리된 객체이다.


X[1]만을 변경했는데, Y와 Z가 같이 변했다. 이것은 객체가 공유된다는 뜻이다. 사실 이름 X는 객체의 레퍼런스를 나타내는 것이므로 Y와 Z는 동일 객체의 레퍼런스만 저장하고 있는 것이다.


일반적으로 파이썬에서의 치환은 대부분 레퍼런스에 의해 이루어진다. 만일 객체의 복사를 원한다면 객체에서 따른 방법을 적용하거나 일괄적으로 copy모듈을 이용하면 된다.  

반응형
반응형

변수명 만드는 법

변수명, 함수명, 클래스명 등을 만드는 규칙은 대체로 다른 언어와 유사한데, 첫 문자가 언더스코아(_) 또는 영문자이고 두 번째 문자부터는 영문자, 숫자, 언더스코아(_)일 수 있으며, 이름의 크기는 제한 없다.


다음과 같은 것들은 변수명이 될 수 있다.

----------------------------------------------------------------------------------------------------------------

a, a1, my_name, your_job, MyName, __private, __private_member, …

----------------------------------------------------------------------------------------------------------------


다음 같은 것들은 변수명이 될 수 없다.

---------------------------------------------------------------------------------------------------------------

1abc, @file, %x

---------------------------------------------------------------------------------------------------------------


예약어

파이썬에서 이미 사용하고 있는 몇몇 예약어는 변수로 사용할 수 없다. 예약어는 다음과 같은 것들이 있다.


and

elif

global

or

assert

else

if

pass

break

except

import

print

class

exec

in

raise

continue

finally

is

return

def

for

lambda

try

del

from

not

while




yield


프로그램으로 파이썬 예약어(혹은 키워드)를 알아내는 방법은 다음과 같다.


변수명을 만들때 조심할 점

변수명을 정하는데 중요한 내용 중의 하나는, 내장 함수 이름이나 모듈 이름은 피하는 것이 좋다.

예를들어 str은 어떤 객체를 문자열 표현으로 변환해 주는 자료형 클래스인데, 변수명으로 사용하게 되면

다음부터 그 함수를 사용할 수 없게 된다.



반응형
반응형

이제 파일에 프로그램을 작성하고 그것을 한꺼번에 실행해 보자. 윈도우나 리눅스에서 IDLE를 사용한다면 IDLE가 제공하는 에디터를 사용하면 된다. 그렇지 않다면 즐겨 사용하는 어떠한 에디터를 사용해도 된다.

리눅스에서는 emacs가 파이썬에 좋은 에디터로 알려져있으며 vim도 많이 사용한다.


윈도우에서 IDLE모드로 스크립트 작성하기 (ex: 2017년 7월 달력 만들기)

1. IDLE(GUI) 실행


2. 메뉴에서 File → New File(Ctrl-N) 클릭


3. 새로운 화면에 달력 스크립트 작성


4. File → save 누르고 파일명 저장 (ex:cal2017_07.py로 저장)

맨 마지막에 키보드 입력 구문을 넣지 않고 윈도우에서 실행하게 되면 실행 즉시

종료가 되는 현상이 발생하는데 이를 방지하기 위해서 구문을 추가해준다.


** raw_input 구문에 주석을 입력하고 저장시 다음과 같은 I/O Warning 메시지가 나올 수도 있는데

Edit my file 을 클릭하면 언어셋을 변경해준다.

(아마도 raw_input 구문 주석 부분에 한글로 입력이 되어있어 언어셋 변환이 필요해 보인다.)



Edit my file을 클릭하면 맨 위쪽에 언어셋 구문이 추가 되어있다.


5. 저장된 파이썬 파일을 실행한다.

[실행 결과]



리눅스에서 스크립트 작성 후 실행하기

1. 리눅스에서 터미널 창을 열어 #vim cal2017_07.py 명령어를 입력한다.

2. 편집기 창에서 파이썬 스크립트를 작성한다.


저장하는 방법은 : 키를 누르면 편집기에 커맨드 창이 나타나는데 이때 wq를 입력하면 저장이 되면서 터미널로 돌아가진다.


** 첫번째 줄 #!/usr/bin/python의 의미는 파이썬을 명시적으로 실행시키지 않고 스크립트를 실행하도록 하기 위해 추가 된 것이다.


3. 파일에 쓰기 권한을 준 후 스크립트 파일을 실행한다.

# chmod +x cal2017_07.py

#./cal2017_07.py


만약 스크립트에 첫번째 줄을 명시하지 않았다면 #python cal2017_07.py 로 실행하면 된다.


반응형

+ Recent posts