회원 로그인
정보기억 정보기억에 체크할 경우 다음접속시 아이디와 패스워드를 입력하지 않으셔도 됩니다.
그러나, 개인PC가 아닐 경우 타인이 로그인할 수 있습니다.
PC를 여러사람이 사용하는 공공장소에서는 체크하지 마세요.
소셜네트워크 서비스를 통해서 로그인하시면 별도의 로그인 절차없이 회원서비스를 이용하실 수 있습니다.


최근 게시물

1.노션에서 작성 중

1.노션에서 작성 중

개편하기 전까지 노션에서 작성 중

2024.04.04//read more

2.ChatGPT

2.ChatGPT

OpenAI로 대규모 언어 모델대화형...

2023.03.16//read more

3.노코딩 게임 엔진 - 빌..

3.노코딩 게임 엔진 - 빌..

빌드 지원안드로이드iOS윈도우즈특이사...

2023.03.14//read more

4.(완료) 미접속 회원 정..

4.(완료) 미접속 회원 정..

[완료] 36명의 회원을 정리하였습니...

2023.02.16//read more

5.매뉴얼 플러스 - 전자제..



안정적인 DNS 서비스 DNSEver
DNS Powered by DNSEver.com


Python 2강 - 파이썬 문과 기본 자료형

artsone | 2007.10.15 02:25 | 조회 5314
Python02-1.asf

Python 2강

파이썬 문과 기본 자료형


1. 변수명 및 예약어
2. 파이썬 기초문
3. 문자열 파이썬 코드 실행하기
4. 콘솔 입출력
5. 자료형의 종류
6. 변경 가능성
7. 자료형 확인과 기타의 자료형
8. 메모리 관리
9. 파이썬 제어문



1. 변수명 및 예약어

#변수명 만드는 법
_ a-z A-Z
예) a, a1, _1, _a1

변수명 만들 때 조심할 점
-함수의 이름이나 모듈의 이름을 피하라
TypeError: call of non-function (type string)이라는 에러가 뜬다.

#예약어
예약어는 변수로 사용할 수 없다

예약어 확인하기
keyword에서 확인된 예약어 이외에 변수로 사용할 수 있다.
>>> import keyword
>>> keyword.kwlist

#주석문
# <- 이것이 주석

#연속라인
은 다음 라인과 현재 라인을 연결
코드가 너무 길어서 보기 불편한 것을 정리하기 위함이다.
예)
>>> if (a == 1) and #에러가 난다.
syntaxError: invalid syntax
>>> if (a == 1) and #을 사용하여 아래와 연결한다.
(b == 3):
print 'connected lines'



2. 파이썬 기초문

#치환문

>>> a = 1 #1을 a로 저장한다.
>>> b = a
>>> 1 + 3 = a #잘못된 치환문:변수가 앞에 와야 한다.
SyntaxError: can't assign to operator
>>> a = 1
>>> a = a + 1

등호는 별도로 있다.
>>> 4 == 5 #4와 5는 같지 않으므로 거짓(0)이 나온다.
0
>>> 4 == 4 #4와 4는 같으므로 참(1)이 나온다.
1


다양한 형태의 치환문
>>> c, d = 3, 4 #여러 개를 한꺼번에 치환
>>> x = y = z = 0
>>> e = 3.5; f = 5.6 # 두개이상의 문들을 ;로 구분
>>> print a, b, c, d, e, f
1 1 3 4 3.5 5.6

>>> e, f = f, e # 값을 교환
>>> print e, f
5.6 3.5


확장 치환문(파이썬2.0)
+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, **=

x op= y의 의미는 x = x op (y)와 같다. #op(오퍼레이터)는 +, -, * 등 =앞에 붙는 사칙연산
이해) x = x op (y)
x = 1, y = 2 * 2, op는 +라고 할때
x = 1 + (2*2)를 연산해서 x의 변수에 치환된다는 소리다.
그래서 답은 5이다. (y에 괄호가 있어 먼저 계산된다.)

>>> a = 1
>>> a += 4
>>> a
5
>>> a -= 3
>>> a
2
>>> a *= 2+3
>>> a
10


Python02-1.asf 07:15

3. 문자열 파이썬 코드 실행하기

식(expression) 실행 - eval()
식을 계산 실행

>>> a = 1
>>> eval("a + 1") #"a + 1"식, 연산수행만 해준다.
2
>>> a #a값은 여전히 1, 값이 변경되지 않는다.
1

이어서..
문(statement) 수행 - exec
문자열로 된 실행

>>> exec 'a += 1' # a += 1은 a = a + 1와 같다.(확장 치환문)
>>> a
2


>>> exec ''' #실행 함수 exec를 이용, ''' 여러줄 문자열 시작
a = 1
if a < 10:
print 'OK'
''' # ''' 여러줄 문자열 끝
OK


4. 콘솔 입출력

콘솔 입력 - raw_input :문자열
input :식
콘솔 출력 - print

#raw_input
>>> name = raw_input('이름?')
이름?artsone
>>> name
'artsone'

>>> number = raw_input('number : ')
number : 32
>>> number
'32' #숫자가 아닌 문자
>>> a = int(number) #int()를 사용하여 정수숫자로 변경 가능하다.
>>> a
32
>>> a = float(number) #float()를 사용하여 실수숫자로 변경 가능하다.
>>> a
32.0

#input 식을 직접 입력할 수 있다.
>>> b = input('expr : ')
expr : 4 + 5
>>> b
9
>>> b = input('expr : ')
expr : a * 10
>>> b
320.0

#print
>>> print a
32.0
>>> print a, b
32.0 320.0


반복문 실행시 아래로 결과가 나온다.
>>> for x in range(5):
print x
0
1
2
3
4
5

,를 넣어 한줄로 결과가 나오게 할 수도 있다.
>>> for x in range(5):
print x,
0 1 2 3 4 5





Python02-2.asf

5. 자료형의 종류
주요 내장 자료형

수치형
문자열
리스트
사전
튜플
파일 (9장)


#수치형
정수형
>>> 23
23
실수형
>>> 23.023
23.023
부동소수점
>>> #floating point
롱형
>>> 2 ** 128
340282366...L #뒤에 L자 붙은
>>> print 2 ** 128
340282366...
복소수형
>>> a = 4 + 5j
>>> a
(4+5j)

문자열, 리스트, 사전, 튜플
기본적인 의미는 데이터를 저장하고 불러올 수 있다는 것이다.
문자열 구분 ' ' 데이터 변경 불가
리스트 구분 [ ] 데이터 변경 가능 append(), insert()
사전 구분 { } 데이터 변경 가능
튜플 구분 ( ) 데이터 변경 불가

#문자열
>>> a = 'spam and egg'
>>> a[0]
's'
>>> a[1] #앞문자에서 2번째(0이 첫번째)
'p'
>>> a[-1]
'g'
>>> a[-3] #뒷문자에서 3번째
'e'
>>> a[1:4] #슬라이싱 slicing
'pam'
>>> a[:5]
'spam '
>>> a[5:]
'and egg'
>>> a * 3 #문자열 반복
spam and eggspam and eggspam and egg
>>> a + 'ham' #문자열 붙임 가능
'spam and eggham'
>>> len(a) #문자열 길이
12
>>> a[0] = 'x' #문자열을 변경하면 아래와 같이 에러
Traceback (most recent call last) :
File "", line 1, in ?
a[0] = 'x'
TypeError: object doesn't support item addignment


#리스트
데이터 값을 순서에 의해 배열로 넣어둔다.
>>> L = [] #공리스트 생성
>>> L
[]
>>> L = [1,2,3] #리스트는 숫자뿐만 아니라
>>> L
[1, 2, 3]
>>> L = [1, 2, 'spam', 'and', 'egg'] #문자도 가능
>>> L
[1, 2, 'spam', 'and', 'egg']
>>> L[0] #문자열 처럼 사용 가능
1
>>> L[-2]
'and'
>>> L[1:4] #슬라이싱도 가능
[2, 'spam', 'egg']
>>> len(L) #길이연산도 가능
5
>>> 'egg' in L #L안에 3이 있느냐도 알 수 있다.
1 #참일땐 1, 거짓일땐 0
>>> 3 in L
0

>>> L.append(100) #메소드도 가능 append(값)는 뒤에 추가한다는 명령
>>> L
[1, 2, 'spam', 'and', 'egg', 100]
>>> L[0] = 300 #값 변경도 가능
>>> L
[300, 2, 'spam', 'and', 'egg', 100]
>>> L.insert(1, 500) #insert(배열,값) 배열에 앞에 값을 추가한다.
[300, 500, 2, 'spam', 'and', 'egg', 100]
>>> del L[3] #데이터 값을 삭제한다.
>>> L
[300, 500, 2, 'and', 'egg', 100]



#사전
키의 값으로 데이터를 모아둔다.
리스트와 다르게 헷쉬라는 기법으로 저장되기 때문에 저장하는데 순서에 구애받지 않는 것이다.

>>> D = {'one':1, 'two':2} #브라이스로 묶으며, 'one' 키, 1 벨류
>>> D
{'one': 1, 'two': 2}
>>> D['one'] #키를 주면 벨류값을 찾는다.
1
>>> D['one'] = 'hana' #키 one을 키 hana로 변경한다.
>>> D['one']
'hana'
>>> D #저장되는게 다르게 보이는데 헷쉬라는 기법으로 저장하기 때문이다.
{'two': 2, 'one': 'hana'}
>>> D['three'] = 4 #추가한다.
>>> D['three']
4
>>> D
{'three': 4, 'two': 2, 'one': 'hana'}
>>> del D['three'] #삭제한다.
>>> D
{'two': 2, 'one': 'hana'}



#튜플
리스트와 유사하다. 하지만 값을 변경하지 못한다.

>>> T = (1,2,'spam')
>>> T[0] #배열 가능
1
>>> T[:3] #슬라이싱 가능
(1, 2, 'spam')
>>> T * 3 #반복 가능
(1, 2, 'spam', 1, 2, 'spam', 1, 2, 'spam')
>>> T + T #붙임 가능
(1, 2, 'spam', 1, 2, 'spam')
>>> len(T) #길이연산 가능
3
>>> T[0] = 100 #그러나 수정은 하지 못한다.

Traceback (most recent call last):
File "", line 1, in
T[0] = 100
TypeError: 'tuple' object does not support item assignment
>>>

#파일(9장)




Python02-2.asf 09:35

내장 자료형의 분류

자료형 저장 모델 변경 가능성 접근방법
----------------------------------------------------------------
수치형 리터럴 불가 직접
문자열' ' 리터럴 불가 시퀀스-인덱싱,슬라이싱,in으로 찾기 가능(위 리스트 예제 'egg' in L)
리스트[ ] 저장형 가능 시퀀스
사전{ } 저장형 가능 매핑-키를 이용해 데이터를 검색
터플( ) 저장형 불가 시퀀스




6. 변경 가능성(수치, 문자, 배열 등..)

a = 1일 경우
a가 1을 가르키고
a = 2로 변경하면 1이 없어지는게 아니라
a가 2로 가르키게 된다는 의미?



7. 자료형 확인과 기타의 자료형

type 사용
types 모듈
dir(types)


#type(변수)
해당 변수의 자료형을 확인할수 있다.
(위 예제를 따라 했다면 아래와 같이 확인할 수 있다.)

>>> a = 'spam and egg'
>>> a
'spam and egg'
>>> type(a)
#문자열
>>> type(L)
#리스트
>>> type(D)
#사전
>>> type(T)
#튜플

>>> L = [1,2,'spam','and']
>>> L
[1, 2, 'spam', 'and']
>>> type(L) == type([]) #L이 리스트이냐 확인 가능
1 #True #L과 [](공리스트)를 비교하여 참, 거짓으로 리스트인지를 알 수 있다.
>>> type(0)

>>> type([])


>>> b = 1
>>> b
1
>>> type(b)

>>> type(b) == type(0) #b가 정수형인가를 비교하여 참, 거짓으로 알 수 있다.
1 #True
>>> type(b) == type(0.0) #(0.0)실수와 비교했으므로 거짓이 나온다.
0 #False
>>> type(0.0)




#types 모듈
types를 불러
dir(모듈)

>>> import types #types 모듈을 임포트한다.
>>> dir(types) #dir(모듈)로 타입 목록을 볼 수 있다.
['BooleanType', 'BufferType', 'BuiltinFunctionType', 'BuiltinMethodType', 'ClassType', 'CodeType', 'ComplexType', 'DictProxyType', 'DictType', 'DictionaryType', 'EllipsisType', 'FileType', 'FloatType', 'FrameType', 'FunctionType', 'GeneratorType', 'GetSetDescriptorType', 'InstanceType', 'IntType', 'LambdaType', 'ListType', 'LongType', 'MemberDescriptorType', 'MethodType', 'ModuleType', 'NoneType', 'NotImplementedType', 'ObjectType', 'SliceType', 'StringType', 'StringTypes', 'TracebackType', 'TupleType', 'TypeType', 'UnboundMethodType', 'UnicodeType', 'XRangeType', '__builtins__', '__doc__', '__file__', '__name__']




8. 메모리 관리

쓰레기 수집(gabge collection)

python2-1.jpg

x ↘
y → 500
z ↗
Reference count = 3
x = y = z = 500 한 결과

#x,y,z가 500을 사용하며, 레퍼런스 카운터가 3이 된다.

x
y → 500
z ↗
Reference count = 2
del x 한 후

#x가 삭제되면 레퍼런스 카운터가 2가 된다.

x 1
y ↗ 2 500 → 메모리에서 제거됨
z ↗
Reference count = 0
y = 1; z = 2 한후

#레퍼런스 카운터가 0이면 자동으로 메모리에서 제거된다.


객체의 신원 식별
is 사용
같은 객체를 참조(레퍼런스)하면 1, 아니면 0

데이터가 같더라도 같은 객체(object)가 아니다.
>>> L1 = [1,2,3]
>>> L2 = [1,2,3]
>>> L1 == L2 #L1객체와 L2객체의 데이터는 같지만
1 #True
>>> L1 is L2 #같은 값을 가지고 있는 서로 다른 객체이다.
False #고로 서로 다른 레퍼런스를 가진다는 의미이다.
>>> L3 = L2 #L2를 L3로 포인트(레퍼런스)했으므로
>>> L2 is L3 #참이 나온다.
True
>>> L3
[1, 2, 3]

정리하면
L1 →[1,2,3]
L2 →[1,2,3]
L3 ↗
그러므로 레퍼런스 카운터는 3이고, 데이터는 2곳으로 메모리에 저장되는 것이다.




Python02-3.asf

9. 파이썬 제어문

#if문
조건문, 선택문이라고 한다.

if 조건식1:
문들1
elif 조건식2:
문들2
else:
문들3

조건식1이 참이면 문들1 실행, 조건식1이 거짓이면 문들2 실행
조건식1, 2도 아니다면 문들3을 실행한다.
if문이 중첩되도 된다.
작성시에도 칸(컬럼)이 맞아야한다.


>>> score = 90
>>> if score >= 0: #score 90이 0보다 크거나 같으면 축하합니다.를 출력
print '축하합니다.'


축하합니다.
>>> score = 80
>>> if score >= 90: #score 80이 90보다 크거나 같으면 축하합니다.를 출력, 그렇지 않을 경우 안됐군요. 출력
print '축하합니다.'
else:
print '안됐군요.'



안됐군요.

다른 예)
>>> n = 10
>>> if n > 0:
print 'positive'
elif n < 0:
print 'negative'
else:
print 'zero'


positive

>>> n = -10
>>> if n > 0:
print 'positive'
elif n < 0:
print 'negative'
else:
print 'zero'


negative



04:55
#for문
반복문
python2-2.jpg

for 변수명 in [시퀀스객체]:
문1
continue
break
문2
else:
...


>>> for x in [1, 2, 3]: #시퀀스 데이터의 순서에 따라 출력
print x


1
2
3

>>> for x in ['cat', 'cow', 'tiger']: #문자도 가능
print len(x), x #문자열의 길이 출력 가능


3 cat
3 cow
5 tiger

>>> for x in [1, 2, 3]:
print x, x*x, x**0.5 #연산 출력 가능


1 1 1.0
2 4 1.41421356237
3 9 1.73205080757

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for x in range(10): #횟수 함수를 이용한 반복문
print x, #,은 한줄에 이어 출력


0 1 2 3 4 5 6 7 8 9

1부터 10의 합을 구해보자.
>>> range(10) #횟수 함수를 사용하려고 하자 0부터 9까지 데이터를 사용하게 된다.
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 10) #길이의 한계를 주어
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11) #1에서 10까지의 데이터를 확인한다.
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> sum = 0 #sum의 값을 정의하고
>>> for x in range(1, 11):
sum += x #sum = sum + 1과 같다.


>>> sum #sum을 출력시 55라는 답이 나온다.
55


continue를 만나면 그 아래 문은 실행하지 않고 다음 테이터(시퀀스객체)를 수행한다.
>>> sum = 0
>>> for x in range(1, 11):
if x > 5: #만약에 5보다 클경우 아래 문을 수행
continue #continue이므로 조건문에 의해 아랫문은 실행하지 않는다.
sum += x #결국 1~5까지 연산하는 것이다.


>>> sum
15

break를 만나면 문2를 수행하지 않고 for문이 그냥 종료된다.
>>> sum = 0
>>> for x in range(1, 11):
if x > 5:
break
sum += x


>>> sum
15

else: 문1이 정상적인 출력을 하고 난 후 else:를 출력한다.
>>> for x in range(10):
print x,
else:
print 'done'


0 1 2 3 4 5 6 7 8 9 done
>>> for x in range(10):
print x
break #break로 인해서 한번만 반복하고 종료한다.
else:
print 'done'


0

for문 안에 for문을 넣을 수 있다.
구구단을 예제로 보자.
>>> for x in range(2, 4): #2 ~ 3
for y in range(2, 10): #2 ~ 9
print x, '*', y, '=', x*y

2의 2~9 반복, 3의 2~9 반복하게 되므로 아래와 같은 결과물이 나온다.

2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27

1~100까지 3과 7로 나눠지는 값 구하기
>>> for x in range(1, 101):
if x % 3 == 0 and x % 7 == 0: #and로 앞 조건과 뒤 조건이 맞으면 아래문을 수행한다.
print x #x % 3은 x를 3으로 나눌때 0과 같은지 묻는 조건문(x % 7도 동일)


21
42
63
84

>>> for x in range(1, 101):
if x % 3 == 0 or x % 7 == 0: #or를 하게 되면 3과 7의 어느 것이든 조건이 맞으면 다 출력한다.
print x,


3 6 7 9 12 14 15 18 21 24 27 28 30 33 35 36 39 42 45 48 49 51 54 56 57 60 63 66 69 70 72 75 77 78 81 84 87 90 91 93 96 98 99



#while문
조건을 만족하면 계속 수행한다.

while 조건:
continue
break
else:
...

>>> count = 10
>>> while count > 0: #count가 0이 될 때까지 아래문 수행
print 'Hello'
count -= 1 #count = count - 1


Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello

for문과 마찮가지로 break 사용가능하다.
>>> count = 10
>>> while count > 0:
print 'Hello'
if count > 5: #count=10이 5가 보다 크므로
break #break 수행
else:
print 'done'


Hello

for문과 마찮가지로 else 윗문 완료후 else 아래문 수행
>>> while count > 0:
print 'Hello'
count -= 1
else:
print 'done'


Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
done


Python02-3.asf 끝
285개(14/15페이지)
프로그래밍
번호 제목 글쓴이 조회 날짜
25 [VisualStudio] Visual Studio Express 2012 다운로드/설치 첨부파일 푸딩뱃살 2731 2013.04.06 20:12
24 [Python] DC 이효리 겔러리에서 사진 추출하기 사진 artsOne 934 2009.03.27 01:54
23 [Python] 클래스 안의 함수 실행 artsOne 2545 2012.09.20 11:54
22 [Python] 기본 함수들 artsOne 4882 2012.09.12 15:39
21 [Python] Config Parser artsOne 2264 2012.08.28 13:55
20 [Python] win32 오픈오피스 실행 artsOne 2154 2012.08.01 17:38
19 [Python] 문자열의 기호들을 출력하기 artsOne 2868 2009.04.17 11:59
18 [Python] python 자료형 / 자료형 출력 artsOne 3394 2009.03.30 00:54
17 [Python] win32 모듈로 Excel 사용하기 artsOne 4113 2008.03.18 02:24
16 [Python] 용어 정리 artsone 3565 2008.02.26 23:11
15 [Python] Python 9강 - 파일 사진 첨부파일 artsone 9963 2007.11.03 02:59
14 [Python] Python 8강 - 객체의 복사 및 형 변환 사진 첨부파일 artsone 5220 2007.11.01 04:15
13 [Python] Python 7강 - 사전 사진 첨부파일 artsone 2871 2007.10.30 03:26
12 [Python] Python 6강 - 튜플 artsone 3139 2007.10.24 05:30
11 [Python] Python 5강 - 리스트 사진 첨부파일 artsone 7338 2007.10.23 22:13
10 [Python] Python 4강 - 문자열 사진 첨부파일 artsone 3700 2007.10.20 03:04
9 [Python] Python 3강 - 수치 자료형과 연산자 사진 첨부파일 artsone 4197 2007.10.18 17:01
>> [Python] Python 2강 - 파이썬 문과 기본 자료형 사진 첨부파일 artsone 5315 2007.10.15 02:25
7 [Python] Python 1강 - 파이썬이란? artsOne 3418 2007.10.11 23:36
6 [Python] [스크랩] Python은 무엇인가? artsone 2001 2008.02.26 16:20