June 11, 2016
anaconda package를 설치하는게 윈도우 환경에서는 수월하다.
혹 python.org에서 설치하고자 하신다면, 수동으로 python path를 잡아줘야 하고, pip 설치도 해야한다. 그런데 이게 여간 까다로운 작업이 아니며, 굉장히 난해하다. 더군다나 이제 막 프로그래밍에 입문했다면 더더욱. 고로, 아나콘다를 이용해 python을 설치하도록 하자.
파이썬에서의 변수는 동적 타이핑이므로 할당하면 알아서 Type을 지정해준다. 우선 파이썬에서 변수명에 사용 가능한 문자는 알파벳 대·소문자, 숫자, 밑줄(_)이다.
단, 변수명은 숫자로 시작할 수 없다. 특히, 변수명에 파이썬 언어에서 사용하는 Reserved Word의 경우 사용 불가능하다.
userName = 'seungdols'
username = 'seungdols' #위 두 변수는 다른 변수이다.`할당은 =으로 변수에 값을 대입한다고 생각하면 된다.
userAge , userName = 30, 'seungdols' #여러 변수를 한 번에 할당도 가능하다.기본 연산자로는 ,**이 존재한다.
기본적인 연산자는 기본 수학과 동일하고, //의 경우는 정수 나눗셈(내림 나눗셈)이라하고, %의 경우 나머지 연산자, **의 경우 제곱 연산을 뜻한다.
>>> x , y = 5, 7
>>> x+y
12
>>> x-y
-2
>>> x/y
0.7142857142857143
>>> x//y
>>> x**y
78125
>>> x*y
35
>>>추가로 += , -=, *= 3가지의 할당 연산자가 더 있다. 각각 의미는 아래 코드로 확인하자. x = x + y와 x+=y와 같은 의미이다.
>>> x+y
12
>>> x+=y
>>> print(x)
12
>>> x - y
5
>>> x-=y
>>> print(x)
5
>>> x*y
35
>>> x*=y
>>> print(x)
35
>>> x = x * y
>>> print (x)
245
>>>int() , float(), str() # 세가지의 타입 변환 내장함수가 존재한다.정수는 소수부가 없는 숫자를 말한다.
>>> x+y
12
>>> x+=y
>>> print(x)
12
>>> x - y
5
>>> x-=y
>>> print(x)
5
>>> x*y
35
>>> x*=y
>>> print(x)
35실수는 소수부가 포함된 수들을 말하며, 정수보다 표현 범위가 크다.
>>> f = 1233454.345345345
>>> print (f)
1233454.345345345문자열은 ', "로 감싸진 문자들의 나열을 말한다.
a = 'seungdols'
print(a)
seungdols리스트는 보통 서로 연관된 데이터의 모음이다. 비슷한 종류의 데이터를 별도의 변수에 저장하는 대신 리스트에 저장하면 편하다.
userAges = [23,44,23,45,40,50]
userAges = []#이렇게 빈 리스트도 생성 가능하다.
userAges[0]#index는 0부터 시작한다.
userAges[-1]#reverse도 지원하며, -1이 가장 마지막 인덱스와 같다.list[시작:끝]을 하게 되면 slice라는 기법인데, 시작index부터 끝index까지의 리스트 범위를 사용할 수 있다. 단, 끝 index는 포함하지 않는다. 즉, 마지막 index-1까지만 포함 된다는 의미이다.
userAges[0:5]
[23, 44, 23, 45, 40]userAges * 2
[23, 44, 23, 45, 40, 50, 23, 44, 23, 45, 40, 50]#리스트를 2번 곱한 것도 가능
userAges[0] = userAges[0] + 10 #리스트 원소내 값 수정도 가능하다.
print(userAges)
[33, 44, 23, 45, 40, 50]아래와 처럼 튜플은 ()를 이용하여 생성하고, 리스트와 다른 점은 불변식이라는 점이다. 초기선언 이후 값을 변경 할 수 없다. 원소에 접근하는 것은 리스트와 같이 인덱스로 접근 한다.
tup = (1,2,3,4,5)
tup
(1, 2, 3, 4, 5)
tup[0]
1
tup[0] = 2
Traceback (most recent call last):
File "<pyshell#37>", line 1, in <module>
tup[0] = 2
TypeError: 'tuple' object does not support item assignment>>>dictionary type의 경우는 Java의 HashMap과 비슷하다고 볼 수 있고, Key : value 형태를 갖는다. 특히 한 사전 데이터 타입 안에 같은 key가 중복 되어서는 안 된다. dict() 메소드로도 생성 할 수 있다.
dic = {1:'one', 2:'two'}
dic[1]
'one'
dic[0]
Traceback (most recent call last):# key 0인 것이 없으니 오류가 난다.
File "<pyshell#40>", line 1, in <module>
dic[0]
KeyError: 0조건
기본적인 비교연산자는 다른 언어들과 동일하다.
5 != 2
True
>>> 5> 2
True
>>> 2 <5
True
>>> 5>= 5
True
>>> 2 <= 5
True
>>> 2 <= 2
TrueC/C++, Java에서 쓰는 else if를 쓰지 않고, elif를 쓰는 것이 좀 차이가 있다. 그리고 아시겠지만, 파이썬은 {}를 쓰지 않고, indent 들여쓰기를 가지고 블록을 구분한다.
if 조건 : code elif 조건 : code else : code
if True:
print('a')
elif True:
print('b')
else:
print('c')
ainput 함수를 쓰면 되고, 2.x 경우 raw_input()을 사용하는 것으로 알고 있다.
userInput = input('Input Number : ')
code A if condition else code B 로 이루어지며, if 조건이 참이면 앞의 코드를 실행하고 그게 아니면 else 문장을 실행한다.
>>> a
5
>>> a = 6 if a == 10 else 2
2li = [1,2,3,4,5]
for a in li:
print(a)
1
2
3
4
5기존 코드를 try 영역에 두고, 예외 발생할 경우 처리할 코드를 except영역에 두면 된다. try: except: 기본 적인 Error의 경우는 다음과 같다. IOError: ImportError: IndexError: KeyError: NameError: TypeError: 자세한 것은 파이썬 홈페이지에서 확인 할 수 있다.
try:
answer = 12/0
print(answer)
except:
print("Error")
Error코드를 함수로 정의 해두고 사용하면 편리해진다. 그리고 코드의 관리 차원에서도 좋고, 호출하기도 쉽다. 그렇지 않으면, 찾을 때도 번거롭고, 사용하기에도 불편함이 따른다. 그래서 보통 함수단위로 작성하는 버릇이 좋다.
def 함수명(매개변수):
return [표현식]
def hello():
print('hello')
>>> hello()
helloimport module name 이렇게 한다면 모듈명.함수명으로 호출을 해야 하지만 from module name import function name 이렇게 하면 아래와 같이 randint를 바로 사용할 수 있게 된다.
import os
from random import randint
a = randint(1,5)
>>> a
4
os.path파일 쓰기모드 ‘w’ - 파일이 존재하지 않으면, 생성한다.
file = open('text.txt','w')
file.write('File IO Test')
12
>>> file.close()파일 읽기 모드 ‘r’ - 파일이 없으면, 오류를 발생한다.
file = open('text.txt','r')
>>> line = file.read()
>>> >>> line
'File IO Test'
>>> file.close()파일 추가모드 ‘a’ - 파일의 끝부터 차례로 추가시킨다.
file = open('text.txt','a')
>>> for line in range(1, 10):
file.write('\n line '+str(line))
>>> file.close()위 코드의 파일 다시 읽기
file = open('text.txt','r')
>>> for line in file:
print(line)
File IO Test
line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9>>> file.close()파일 읽기/쓰기 모드 'r+'가 존재한다. 바이너리의 경우 'rb' , 'wb'가 존재한다.
버퍼를 이용하여 파일 읽기
file = open ('text.txt','r')
>>> data = file.read(10)#10글자씩만 읽어들인다고 지정한다.
>>> while len(data):
print(data)
data = file.read(10)