파이썬(Python)은 1990년 암스테르담의 귀도 반 로섬(Guido van rossum)이 개발한 인터프리터 언어이다. 공동 작업과 유지 보수가 매우 쉽고 편리해 사용자 층이 더욱 넓어지고 있고 사용하는 업체 또한 늘어나고 있는 추세이다.
인터프리터 언어란 소스 코드를 한 줄씩 해석한 후 그때그때 실행해 결과를 바로 확인할 수 있는 언어를 말한다.
>>> a = 123
>>> a = -178
>>> a = 0
>>> a = 1.2
>>> a = -3.45
>>> a = 3, b= 4
>>> a + b # 더하기
7
>>> a - b # 빼기
-1
>>> a * b # 곱하기
12
>>> a / b # 나누기
0.75
>>> a ** b # a의 b제곱을 나타내는 `**` 연산자
81
>>> 7 % 3 # 나눗셈 후 나머지를 리턴하는 `%` 연산자
1
>>> 7 // 4 # 나눗셈 후 몫을 리턴하는 // 연산자
1
"Hello World"
'Python is fun'
"""Life is too short, You need python"""
'''Life is too short, You need python'''
문자열에 작은따옴표를 포함시킬 때는 큰따옴표로 묶고, 반대로 큰따옴표를 포함시킬 때는 작은따옴표로 묶는다.
\
를 이용해서 작은따옴표,큰따옴표를 나타낼 수 있다. ex) \', \"
여러 줄을 묶고 싶을 때에는 """나 '''로 묶어준다.
줄을 바꿀 때 \n
을 사용하면 된다.
>>> food = 'Python\'s favorite food is perl'
>>> say = "\"Python is very easy.\" he says."
>>> a = "python"
>>> a * 2 # a를 2번 반복
'pythonpython'
>>> a = "Life is too short"
>>> len(a)
17
문자열의 길이에는 공백 문자도 포함된다.
>>> a = "Life is too short, You need Python"
>>> a[3]
'e'
>>> a[-1] # -1은 뒤에서부터 첫번째
'n'
"파이썬은 0부터 숫자를 센다."
a[시작번호:끝번호]를 지정할 때 끝 번호에 해당하는 문자는 포함하지 않는다.ex) a[0:3] 0 <= a < 3
>>> a = "Life is too short, You need Python"
>>> a[0:2]
'Li'
>>> a[5:7]
'is'
>>> a[12:17]
'short'
>>> a[19:] # 끝 번호 생략하면 문자열의 끝까지
'You need Python'
>>> a[:17] # 시작 번호 생략하면 문자열 처음부터
'Life is too short'
>>> a[:] # 시작,끝 번호 생략하면 처음부터 끝까지
'Life is too short, You need Python'
>>> a[19:-7] # a[19]부터 a[-8]까지
'You need'
%d -숫자
>>> "I eat %d apples." % 3 #
'I eat 3 apples.'
%s -문자열 문자열을 대입할 때는 반드시 큰따옴표나 작은따옴표를 써야 한다.
>>> "I eat %s apples." % "five"
'I eat five apples.'
2개 이상의 값 넣기
>>> number = 10
>>> day = "three"
>>> "I ate %d apples. so I was sick for %s days." % (number, day)
'I ate 10 apples. so I was sick for three days.'
>>> "%10s" % "hi"
' hi'
%10s는 전체 길이가 10개인 문자열 공간에서 대입되는 값을 오른쪽으로 정렬하고 그 앞의 나머지는 공백으로 남겨 두라는 의미이다.
반대쪽인 왼쪽 정렬은 %-10s
이다.
>>> "%0.4f" % 3.42134234
'3.4213'
숫자 0은 길이에 상관하지 않겠다는 의미이다.
%10.4f
: 소수점 네 번째 자리까지 표시하고 전체 길이가 10개인 문자열을 오른쪽 정렬
>>> "%10.4f" % 3.42134234
' 3.4213'
>>> "{0:<10}".format("hi")
'hi '
>>> "{0:>10}".format("hi")
' hi'
>>> "{0:^10}".format("hi")
' hi '
>>> "{0:=^10}".format("hi")
'====hi===='
>>> "{0:!<10}".format("hi")
'hi!!!!!!!!'
>>> a = "hobby"
>>> a.count('b')
2
>>> a = "Python is the best choice"
>>> a.find('b')
14
>>> a.find('k')
-1
같은 방식으로 index
함수를 써도 된다. find
함수와 차이점은 문자열 안에 존재하지 않는 문자를 찾으면 오류가 발생한다는 점이다.
>>> ",".join('abcd')
'a,b,c,d'
>>> a = "hi"
>>> a.upper()
'HI'
>>> a = "HI"
>>> a.lower()
'hi'
>>> a = "Life is too short"
>>> a.replace("Life", "Your leg")
'Your leg is too short'
리스트명 = [요소1, 요소2, 요소3, ...]
대괄호([])로 감싸 주고 각 요솟값은 쉼표(,)로 구분해 준다.
>>> a = [1, 2, 3]
>>> a
[1, 2, 3]
>>> a[0]
1
>>> a[0] + a[2]
4
>>> a[-1]
3
>>> a = [1, 2, 3, 4, 5]
>>> a[0:2]
[1, 2]
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a + b
[1, 2, 3, 4, 5, 6]
>>> a = [1, 2, 3]
>>> a * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> a = [1, 2, 3]
>>> len(a)
3
>>> a = [1, 2, 3]
>>> a[2] = 4
>>> a
[1, 2, 4]
>>> a = [1, 2, 3]
>>> del a[1]
>>> a
[1, 3]
del a[x]
는 x번째 요솟값을 삭제한다.
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> a = [1, 4, 3, 2]
>>> a.sort()
>>> a
[1, 2, 3, 4]
>>> a = ['a', 'c', 'b']
>>> a.reverse()
>>> a
['b', 'c', 'a']
>>> a = [1, 2, 3]
>>> a.index(3)
2
>>> a.index(1)
0
>>> a = [1, 2, 3]
>>> a.index(3)
2
>>> a.index(1)
0
>>> a = [1, 2, 3, 1, 2, 3]
>>> a.remove(3)
>>> a
[1, 2, 1, 2, 3]
a가 3이라는 값을 2개 가지고 있을 경우, 첫 번째 3만 제거된다.
pop()은 리스트의 맨 마지막 요소를 리턴하고 그 요소는 삭제한다.
>>> a = [1, 2, 3]
>>> a.pop()
3
>>> a
[1, 2]
>>> a = [1, 2, 3, 1]
>>> a.count(1)
2
[]
, 튜플은 ()
로 둘러싼다.딕셔너리는 단어 그대로 ‘사전’이라는 뜻이다. 즉 "people"이라는 단어에 "사람", "baseball"이라는 단어에 "야구"라는 뜻이 부합되듯이 딕셔너리는 Key와 Value를 한 쌍으로 가지는 자료형이다. 예컨대 Key가 "baseball"이라면 Value는 "야구"가 될 것이다.
Key와 Value의 쌍 여러개가 {}로 둘러싸여 있고 쉼표로 구분되어 있다.
{Key1: Value1, Key2: Value2, Key3: Value3, ...}
추가하기
>>> a = {1: 'a'}
>>> a[2] = 'b' # a[Key] = 'Value'
>>> a
{1: 'a', 2: 'b'}
삭제하기
>>> del a[1]
>>> a
{2: 'b'}
>>> grade = {'pey': 10, 'julliet': 99}
>>> grade['pey']
10
>>> grade['julliet']
99
>>> s1 = set([1, 2, 3])
>>> s1
{1, 2, 3}
불(bool)자료형이란 참(True)과 거짓(False)을 나타내는 자료형이다.
if 조건문:
수행할_문장1
수행할_문장2
...
else:
수행할_문장A
수행할_문장B
...
- if문에 속하는 모든 문장에는 들여쓰기를 해야한다.
- if 조건문 뒤에는 반드시 콜론(:)이 붙는다.
>>> pocket = ['paper', 'cellphone']
>>> card = True
>>> if 'money' in pocket:
... print("택시를 타고가라")
... elif card:
... print("택시를 타고가라")
... else:
... print("걸어가라")
...
택시를 타고가라
while 조건문:
수행할_문장1
수행할_문장2
수행할_문장3
...
반복을 빠져나가고 싶을 때 break를 사용한다.
>>> coffee = 10
>>> money = 300
>>> while money:
... print("돈을 받았으니 커피를 줍니다.")
... coffee = coffee -1
... print("남은 커피의 양은 %d개입니다." % coffee)
... if coffee == 0:
... print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
... break
...
처음의 조건문으로 돌아갈 때 continue를 사용한다.
>>> a = 0
>>> while a < 10:
... a = a + 1
... if a % 2 == 0: continue
... print(a)
...
1
3
5
7
9
무한히 반복한다는 의미이다.
while True:
수행할_문장1
수행할_문장2
...
Ctrl+C
를 사용하여 무한 루프를 빠져 나갈 수 있다.
for 변수 in 리스트(또는 튜플, 문자열):
수행할_문장1
수행할_문장2
...
>>> test_list = ['one', 'two', 'three']
>>> for i in test_list:
... print(i)
...
one
two
three
while 문에서 살펴본 continue 문을 for 문에서도 사용할 수 있다. 즉, for 문 안의 문장을 수행하는 도중 continue 문을 만나면 for 문의 처음으로 돌아가게 된다.
>>> add = 0
>>> for i in range(1, 11):
... add = add + i
...
>>> print(add)
55
range(1,11)은 숫자 1부터 10까지(1이상 11미만)의 숫자를 데이터로 가지는 객체이다.
따라서 변수에 숫자가 1부터 10까지 하나씩 차례로 대입되며 반복한다.
def 함수_이름(매개변수):
수행할_문장1
수행할_문장2
...
def add(a, b): # a, b는 매개변수
return a+b
print(add(3, 4)) # 3, 4는 인수
>>> a = input()
Life is too short, you need python
>>> a
'Life is too short, you need python'
input은 사용자가 키보드로 입력한 모든 것을 문자열로 저장한다.
여러분 모두 계산기를 사용해 보았을 것이다. 계산기에 숫자 3을 입력하고 +를 입력한 후 4를 입력하면 결괏값으로 7을 보여 준다. 다시 한번 +를 입력한 후 3을 입력하면 기존 결괏값 7에 3을 더해 10을 보여 준다. 즉, 계산기는 이전에 계산한 결괏값을 항상 메모리 어딘가에 저장하고 있어야 한다.
# calculator.py
result = 0
def add(num):
global result
result += num # 결괏값(result)에 입력값(num) 더하기
return result # 결괏값 리턴
print(add(3))
print(add(4))
2대의 계산기를 사용하려면 함수를 각각 따로 만들어야 한다.
# calculator2.py
result1 = 0
result2 = 0
def add1(num): # 계산기1
global result1
result1 += num
return result1
def add2(num): # 계산기2
global result2
result2 += num
return result2
print(add1(3))
print(add1(4))
print(add2(3))
print(add2(7))
하지만 계산기가 더 많이 필요할 때는 클래스를 사용하면 간단해진다.
# calculator3.py
class Calculator:
def __init__(self):
self.result = 0
def add(self, num):
self.result += num
return self.result
cal1 = Calculator()
cal2 = Calculator()
print(cal1.add(3))
print(cal1.add(4))
print(cal2.add(3))
print(cal2.add(7))
cal1, cal2는 '객체'라고 부른다. 이렇게 클래스를 사용하면 계산기가 늘어나도 객체를 생성하면 간단하게 할 수 있다.
>>> class FourCal:
... def setdata(self, first, second):
... self.first = first
... self.second = second
클래스 안에 구현된 함수는 메서드(method)라고 부른다.
setdata 메서드에는 self, first, second 총 3개의 매개변수가 필요한데 실제로는 a.setdata(4, 2)처럼 2개의 값만 전달했다. 왜 그럴까? a.setdata(4, 2)처럼 호출하면 setdata 메서드의 첫 번째 매개변수 self에는 setdata 메서드를 호출한 객체 a가 자동으로 전달되기 때문이다. 다음 그림을 보면 객체를 호출할 때 입력한 값이 메서드에 어떻게 전달되는지 쉽게 이해할 수 있을 것이다.
모듈이란 함수나 변수 또는 클래스를 모아 놓은 파이썬 파일이다. 모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있도록 만든 파이썬 파일이라고도 할 수 있다
import 모듈_이름
>>> import mod1
>>> print(mod1.add(3, 4))
7
>>> print(mod1.sub(4, 2))
2
mod1.add, mod1.sub처럼 쓰지 않고 add, sub처럼 모듈 이름 없이 함수 이름만 쓰고 싶은 경우
from mod1 import *
mod1 모듈의 모든 함수를 불러와 사용하겠다는 뜻이다.
파이썬에서 패키지packages란 관련 있는 모듈의 집합을 말한다.
파이썬에서 모듈은 하나의 .py 파일이다.
파이썬 설치 시 기본으로 설치된다.
표준 라이브러리
pip 도구를 이용하여 설치한다.
pip은 파이썬 모듈이나 패키지를 쉽게 설치할 수 있도록 도와주는 도구이다.
pip install SomePackage
pip uninstall SomePackage
pip install --upgrade SomePackage
pip list
오 정말 유익하군요.