점프 투 파이썬 01~05

TATamo·2023년 11월 7일
1

01

파이썬이란?

파이썬(Python)은 1990년 암스테르담의 귀도 반 로섬(Guido van rossum)이 개발한 인터프리터 언어이다. 공동 작업과 유지 보수가 매우 쉽고 편리해 사용자 층이 더욱 넓어지고 있고 사용하는 업체 또한 늘어나고 있는 추세이다.

인터프리터 언어란 소스 코드를 한 줄씩 해석한 후 그때그때 실행해 결과를 바로 확인할 수 있는 언어를 말한다.

파이썬의 특징

  • 파이썬은 인간다운 언어이다
  • 문법이 쉬워 빠르게 배울 수 있다
  • 무료이지만 강력하다
  • 간결하다
  • 프로그래밍을 즐기게 해 준다
  • 개발 속도가 빠르다

파이썬으로 할 수 있는 일

  • 웹 프로그래밍
  • 인공지능과 머신러닝
  • 수치 연산 프로그래밍
  • 데이터 분석
  • 데이터베이스 프로그래밍
  • 시스템 유틸리티 제작하기
  • GUI 프로그래밍
  • C/C++와 결합하기
  • 사물 인터넷

02

정수형

>>> 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!!!!!!!!'

문자 개수 세기 - count

>>> a = "hobby"
>>> a.count('b')
2

위치 알려 주기 1 - find

>>> a = "Python is the best choice"
>>> a.find('b')
14
>>> a.find('k')
-1

같은 방식으로 index 함수를 써도 된다. find 함수와 차이점은 문자열 안에 존재하지 않는 문자를 찾으면 오류가 발생한다는 점이다.

문자열 삽입 - join

>>> ",".join('abcd')
'a,b,c,d'

소문자를 대문자로 바꾸기 - upper

>>> a = "hi"
>>> a.upper()
'HI'

대문자를 소문자로 바꾸기 - lower

>>> a = "HI"
>>> a.lower()
'hi'

문자열 바꾸기 - replace

>>> 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번째 요솟값을 삭제한다.

리스트에 요소 추가하기 - append

>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]

리스트 정렬 - sort

>>> a = [1, 4, 3, 2]
>>> a.sort()
>>> a
[1, 2, 3, 4]

리스트 뒤집기 - reverse

>>> a = ['a', 'c', 'b']
>>> a.reverse()
>>> a
['b', 'c', 'a']

인덱스 반환 - index

>>> a = [1, 2, 3]
>>> a.index(3)
2
>>> a.index(1)
0

리스트에 요소 삽입 - insert

>>> a = [1, 2, 3]
>>> a.index(3)
2
>>> a.index(1)
0

리스트 요소 제거 - remove

>>> a = [1, 2, 3, 1, 2, 3]
>>> a.remove(3)
>>> a
[1, 2, 1, 2, 3]

a가 3이라는 값을 2개 가지고 있을 경우, 첫 번째 3만 제거된다.

리스트 요소 끄집어 내기 - pop

pop()은 리스트의 맨 마지막 요소를 리턴하고 그 요소는 삭제한다.

>>> a = [1, 2, 3]
>>> a.pop()
3
>>> a
[1, 2]

리스트에 포함된 요소 x의 개수 세기 - count

>>> 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'}

딕셔너리에서 Key를 사용해 Value 얻기

>>> grade = {'pey': 10, 'julliet': 99}
>>> grade['pey']
10
>>> grade['julliet']
99

집합 자료형

>>> s1 = set([1, 2, 3])
>>> s1
{1, 2, 3}
  • 중복을 허용하지 않는다.
  • 순서가 없다.

불 자료형

불(bool)자료형이란 참(True)과 거짓(False)을 나타내는 자료형이다.


03

if문의 기본 구조

if 조건문:
    수행할_문장1
    수행할_문장2
    ...
else:
    수행할_문장A
    수행할_문장B
    ...
  • if문에 속하는 모든 문장에는 들여쓰기를 해야한다.
  • if 조건문 뒤에는 반드시 콜론(:)이 붙는다.

다양한 조건을 판단하는 elif

>>> pocket = ['paper', 'cellphone']
>>> card = True
>>> if 'money' in pocket:
...      print("택시를 타고가라")
... elif card: 
...      print("택시를 타고가라")
... else:
...      print("걸어가라")
...
택시를 타고가라

while 문의 기본 구조

while 조건문:
    수행할_문장1
    수행할_문장2
    수행할_문장3
    ...

while 문 강제로 빠져나가기 - break

반복을 빠져나가고 싶을 때 break를 사용한다.

>>> coffee = 10
>>> money = 300
>>> while money:
...     print("돈을 받았으니 커피를 줍니다.")
...     coffee = coffee -1
...     print("남은 커피의 양은 %d개입니다." % coffee)
...     if coffee == 0:
...         print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
...         break
...

while 문의 맨 처음으로 돌아가기

처음의 조건문으로 돌아갈 때 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 문의 기본 구조

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 문의 처음으로 돌아가게 된다.

for 문과 함께 자주 사용하는 range 함수

>>> add = 0 
>>> for i in range(1, 11): 
...     add = add + i 
... 
>>> print(add)
55

range(1,11)은 숫자 1부터 10까지(1이상 11미만)의 숫자를 데이터로 가지는 객체이다.
따라서 변수에 숫자가 1부터 10까지 하나씩 차례로 대입되며 반복한다.


04

파이썬 함수의 구조

def 함수_이름(매개변수):
    수행할_문장1
    수행할_문장2
    ...
def add(a, b):  # a, b는 매개변수
    return a+b

print(add(3, 4))  # 3, 4는 인수

input

>>> a = input()
Life is too short, you need python
>>> a
'Life is too short, you need python'

input은 사용자가 키보드로 입력한 모든 것을 문자열로 저장한다.

05

클래스

여러분 모두 계산기를 사용해 보았을 것이다. 계산기에 숫자 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는 '객체'라고 부른다. 이렇게 클래스를 사용하면 계산기가 늘어나도 객체를 생성하면 간단하게 할 수 있다.

메서드(method)

>>> 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

pip install SomePackage 

pip uninstall

pip uninstall SomePackage

최신 버전으로 업그레이드하기

pip install --upgrade SomePackage 

설치된 패키지 확인하기

pip list

1개의 댓글

comment-user-thumbnail
2023년 11월 8일

오 정말 유익하군요.

답글 달기