반응형

06-2 3과 5의 배수 구하기

입력 

출력

result = 0
for n in range(1,1000):
    if n % 3 == 0 or n % 5 == 0:
        result += n
print(result)

 

06-3 게시판 페이징하기 

함수 이름

입력 

출력

def getTotalPage(m,n):
    if m % n ==0:
        return m // n 
    else:
        return m // n +1

print(getTotalPage(5,10))
print(getTotalPage(15,10))
print(getTotalPage(25,10))
print(getTotalPage(30,10))

06-4 간단한 메모장 만들기

필요한 기능?

입력 ?

출력 ?

import sys
option = sys.argv[1]

if option == '-a':
    memo = sys.argv[2]
    f = open('memo.txt','a')
    f.write(memo)
    f.write('\n')
    f.close()
elif option == '-v':
    f = open('memo.txt')
    memo = f.read()
    f.close()
    print(memo)

 

06-5 탭을 4개의 공백으로 바꾸기

import sys
src = sys.argv[1]
dst = sys.argv[2]
print(src)
print(dst)

f = open(src)
tab_content = f.read()
f.close()

space_content = tab_content.replace("\t"," "*4)
print(space_content)

f = open(dst,'w')
f.write(space_content)
f.close()

 

06-6 하위 디렉터리 검색하기 

import os

def search(dirname):
    filenames = os.listdir(dirname)
    for filename in filenames:
        full_filename = os.path.join(dirname, filename)
        print(full_filename)
        
search("C:/")

 

특정 파일 만 출력하기

import os

def search(dirname):
    filenames = os.listdir(dirname)
    for filename in filenames:
        full_filename = os.path.join(dirname, filename)
        ext = os.path.splitext(full_filename)[-1]
        if ext == '.json':
            print(full_filename)
        
search("C:/")

하위 디렉터리 내용 출력

import os

def search(dirname):
    try:
        filenames = os.listdir(dirname)
        for filename in filenames:
            full_filename = os.path.join(dirname, filename)
            if os.path.isdir(full_filename):
                search(full_filename)
            else:
                ext = os.path.splitext(full_filename)[-1]
                if ext == '.py':
                    print(full_filename)
    except PermissionError:
        pass
    
search("C:/")

 

하위 디렉터리 검색을 쉽게 해주는 os.walk

import os

for (path, dir, files) in os.walk("C:/"):
    for filename in files:
        ext = os.path.splitext(filename)[-1]
        if ext == ".py":
            print("%s/%s" % (path, filename))

07. 정규 표현식

07-1 정규 표현식 살펴보기

복잡한 문자열을 처리 할 때 사용하는 기법으로 , 파이썬 만의 고유 문법이 아니라 문자열을 처리하는 모든 곳에서 사용한다.

 

정규 표현식은 왜 필요한가 ?

data = """
park 800905-1049118
kim 700905-1059119
"""
result = []
for line in data.split("\n"):
    word_result = []
    for word in line.split(" "):
        if len(word) == 14 and word[:6].isdigit() and word[7:].isdigit():
            word = word[:6]+"-"+"******"
        word_result.append(word)
    result.append(" ".join(word_result))
print("\n".join(result))

import re
data = """
park 800905-1049118
kim 700905-1059119
"""
pat = re.compile("(\d{6})[-]\d{7}")
print(pat.sub("\g<1>-******",data))

 

07-2 정규 표현식 시작하기

.^$*+?{}[]|()

 

문자 클래스 []

[] 사이의 문자들과 매치

Dot(.) 메타 문자는 줄바꿈 문자인 \n을 제외한 모든 문자와 매치됨을 의미한다.

반복 (*) 0부터 무한대로 반복 될수 있다는 의미

반복 (+) 최소 1번 이상 반복 될 때 사용

 

반복 ({m,n}, ? )

1. {m} 

2. {m,n} 범위

3. ? {0,1}

 

파이썬에서 정규 표현식을 지원한느 re모듈

import re

re.compile()

 

 정규식을 사용한 문자열 검색

match()

search()

findall()

finditer()  정규식과 매치되는 문자열을 반복 가능한 객체로 돌려준다.

import re
p = re.compile('[a-z]+')

m = p.match("python")
print(m)

m = p.match("3 python")
print(m)

p = re.compile('[a-z]+')
m = p.match("python")
if m:
    print("match found:", m.group())
else:
    print('No math')

import re
p = re.compile('[a-z]+')

m = p.search("python")
print(m)

m = p.search("3 python")
print(m)

import re
p = re.compile('[a-z]+')

m = p.findall("life is too short")
print(m)

import re
p = re.compile('[a-z]+')

m = p.finditer("life is too short")
print(m)

for r in m:
    print(r)

 

match 객체의 메소드

groun()

start()

end()

span() 매치된 문자열의 (시작, 끝)에 해당하는 튜플을 돌려준다.

import re
p = re.compile('[a-z]+')

m = p.match("python")
print(m.group())
print(m.start())
print(m.end())
print(m.span())

import re
p = re.compile('[a-z]+')

m = p.search("3 python")
print(m.group())
print(m.start())
print(m.end())
print(m.span())

 

컴파일 옵션

DOTALL, S  : dot 문자(.) 가 줄바꿈 문자를 포함하여 모든 문자와 매치된다.

import re
p = re.compile('a.b')
m = p.match("a\nb")
print(m)

p = re.compile('a.b', re.DOTALL)
m = p.match("a\nb")
print(m)

IGNORECASET, I: 대 소문자에 관계 없이 매치한다.

import re
p = re.compile('[a-z]', re.I)
m = p.match("python")
print(m)
m = p.match("Python")
print(m)
m = p.match("PYTHON")
print(m)

 

MULTILINE, M ㅣ 여러 줄과 매치한다.

(^,$ 메타 문자의 사용과 관계가 있는 옵션이다.)

import re
p = re.compile('^python\s\w+')
data = """python one
Life is too short
python two
you need python
python three"""
print(p.findall(data))

p = re.compile('^python\s\w+',re.MULTILINE)
print(p.findall(data))

VERBOSE ,X: verbose모드를 사용한다.

(정규식을 보기 편하게 만들 수도 있고 주석 등을 사용할 수도 있다.)

import re
charref = re.compile(r'&[#](-[0-7]+|[0-9]+|[0-9a-fA-F]+);')

charref = re.compile(r"""&[#] # start of a numeric entirty reference
(
-[0-7]+ #octal form
|[0-9]+ #decimal form
|[0-9a-fA-F]+ # hexadecimal form
)
; # Trailing semicolon
""", re.VERBOSE)

 

백슬래스 문제 

\ -> \\

\\ -> \\\\

07-3 강력한 정규 표현식의 세계로

메타문자

| 메타 문자는 or과 동일한 의미

import re
p = re.compile('Crow|Servo')
m = p.match('CrowHello')
print(m)

^ 메타 문자는 문자열의 맨 처음과 일치함을 의미

import re
print(re.search('^Life','Life is too short'))
print(re.search('^Life','My Life'))

$ 문자열의 끝과 매치함을 의미한다.

import re
print(re.search('short$','Life is too short'))
print(re.search('short$','Life is too short, you need python'))

\A 문자열의 처음과 매치됨을 의미한다.

^메타 문자와 동일한 의미이지만 re.MULTILINE옵션을 사용할 경우에는 다르게 해석된다.
re.MULTILINE옵션을 사용할 경우 ^은 각 줄의 문자열의 처음과 매치되지만 \A는 줄과 상관없이 전체 문자열의 처음에고만 매치된다.

 

\Z 끝과  매침

 

\b는 단어 구분자 word boundary whitespace

import re
print(re.search(r'\bclass\b','no class at all'))
print(re.search(r'\bclass\b','the declassified algotithm'))
print(re.search(r'\bclass\b','one subclass is'))

\B \b문자와 반대의 경우

import re
print(re.search(r'\Bclass\B','no class at all'))
print(re.search(r'\Bclass\B','the declassified algotithm'))
print(re.search(r'\Bclass\B','one subclass is'))

그루핑

(ABC)+

import re
m = re.search(r'(ABC)+','ABCABCABC OK?')
print(m)
print(m.group(0))

p= re.compile(r"\w+\s+\d+[-]\d+[-]\d+")
m = p.search("park 010-1234-1234")

p= re.compile(r"(\w+)\s+\d+[-]\d+[-]\d+")
m = p.search("park 010-1234-1234")
print(m.group(1))

group(0) 매치된 전체 문자열
group(1) 첫번째 그룹에 해당하는 문자열
group(2) 두번째 그룹에 해당하는 문자열
group(n) n번쨰 그룹에 해당하는 문자열
p= re.compile(r"(\w+)\s+(\d+[-]\d+[-]\d+)")
m = p.search("park 010-1234-1234")
print(m.group(2))

p= re.compile(r"(\w+)\s+((\d+)[-]\d+[-]\d+)")
m = p.search("park 010-1234-1234")
print(m.group(3))

그룹핑된 문자열 재참조하기

그룹의 또 하나 좋은 점은 한 번 그루핑한 문자열을 재참조할 수 있다는 점이다.

p = re.compile(r'(\b\w+)\s+\1')
print(p.search('Paris in the the spring').group())

그루핑된 문자열에 이름 붙이기

?P<name>\w+)\s+((\d+)[-]\d+[-]\d+)

import re
p= re.compile(r"(?P<name>\w+)\s+((\d+)[-]\d+[-]\d+)")
m = p.search("park 010-1234-1234")
print(m.group("name"))

import re
p= re.compile(r"(?P<word>\b\w+)\s+(?P=word)")
print(p.search('Paris in the the spring').group())

전방 탐색

import re
p= re.compile(r".+.:")
m = p.search("http://google.com")
print(m.group())

(?=...) 긍정형 전방 탐색 ..에 해당하는 정규식과 매치되어야 하며 조건이 통과되어도 문자열이 소비되지 않는다.

(?!...) 부정형 전방 탐색 .. 에 해당하는 정규식과 매치되지 않아야 하며 조건이 통과되어도 문자열이 소비되지 않는다.

import re
p= re.compile(r".+(?=:)")
m = p.search("http://google.com")
print(m.group())

.*[.].*$  파일 이름+.+확장자

.*[.][^b].*$ bat인 파일은 제외해야 한다.

.*[.]([^b]..|.[^a].|..[^t])$

.*[.]([^b].?.?|.[^a]?.?|..?[^t]?)$

 

부정형 전방 탐색

.*[.](?!bat$).*$

.*[.](?!bat$|exe$).*$

 

문자열 바꾸기

import re
p= re.compile(r"(blue|white|red)")
m = p.sub('colour','blue socks and red shoes')
print(m)

m = p.sub('colour','blue socks and red shoes',count=1)
print(m)

m = p.subn('colour','blue socks and red shoes')
print(m)

sub메서드를 사용할 때 참조 구문 사용하기

import re
p= re.compile(r"(?P<name>\w+)\s+(?P<phone>(\d+)[-]\d+[-]\d+)")
print(p.sub("\g<phone> \g<name>","park 010-1234-1234"))

import re
p= re.compile(r"(?P<name>\w+)\s+(?P<phone>(\d+)[-]\d+[-]\d+)")
print(p.sub("\g<2> \g<1>","park 010-1234-1234"))

 

sub메소드의 매개변수로 함수 넣기

import re

def hexrepl(match):
    value = int(match.group())
    return hex(value)

p= re.compile(r"\d+")
p.sub(hexrepl,'Call 65490 for printing, 49152 for user code.')

Greedy vs Non-Greedy

import re
#greedy
s = '<html><head><title>Title</title>'
print(len(s))

print(re.match('<.*>',s).span())
print(re.match('<.*>',s).group())

#non-greedy
print(re.match('.*?>',s).group())

non-greedy문자인 ?는 *?,+?,??,{m,n}?와 같이 사용할 수 있다.

반응형
반응형

05-1 클래스

프로그래머들이 가장 많이 사용하는 프로그래밍 언어 중 하나인 C언어에는 클래스가 없다.

 

과자 틀 -> class

과자 틀을 사용해 만든 과자 -> 객체 object

 

def 함수 이름(매개변수):

  수행할 문장

  ...

 

생성자(Constructor)객체가 생성될 때 자동으로 호출되는 메서드를 의미한다.

 

클래스의 상속

상속이란 물려받다 라는 뜻으로 , 재산을 상속받다 라고 할 떄의 상속과 같은 의미이다.

class 클래스 이름(상속할 클래스 이름)

 

05-2 모듈

모듈이란 함수나 변수 또는 클래스를 모아 놓은 파일이다.

모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 파이썬 파일이라고도 할 수 있다.

from 모듈 이름 import 모듈 함수

from mod1 import add,sub

from mod1 import *

 

if __name__ =="__main__":의 의미

 

 

05-3 패키지

패키지는 도트(.)를 사용하여 파이썬 모듈을 계층적으로 (디렉터리 구조)으로 관리할 수 있게 해준다.

 

__init__.py의 용도

해당 디렉터리가 패키지의 일부임을 알려주는 역할을 한다. 

 

05-4 예외 처리

오류 예외 처리 기법

try, except문

try:

  ...

except [발생오류[as 오류 메시지 변수]]:

  ...

 

try ... finally

 

여러개의 오류 처리 하기 

try:

  ...

except [발생오류[as 오류 메시지 변수]]:]

  ...

except [발생오류[as 오류 메시지 변수]]:

  ...

 

오류 일부러 발생시키기 

raise명령어

 

05-5 내장 함수 

abs 절댓값 돌려주는 함수 

all(x) 반복 가능한 (iterable)자료형 x를 입력 인수로 받으며 이 x가 모두 참이면 True, 거짓이 하나라도 있으면 False를 돌려준다.

any(x)는 x중 하나라도 참이 있으면 True를 돌려주고 ,x가 모두 거짓일 때에만 False를 돌려준다. 

chr(x) ASCII코드 값을 입력받아 그 코드에 해당하는 문자를 출력하는 함수이다.

dir 객체가 자체적으로 가지고 있는 변수나 함수를 보여준다.

divmod(a,b)는 2개의 숫자를 입력으로 받는다. 

enumerate 는 열거하다 . 이 함수는 순서가 있는 자료형(리스트, 튜플, 문자열_)을 입력으로 받아 인덱스 값을 포함하는 enumerate 객체를 돌려준다.

eval(expression) 은 실행 가능한 문자열을 입력으로 받아 문자열을 실행한 결괏값을 돌려주는 함수이다.

 

filter무 엇인가를 걸러내는 뜻

hex(x)는 정수 값을 입력받아 16진수로 변환하여 돌려주는 함수이다.

id(object)는 객체를 입력받아 고유 주소 값(레퍼런스)을 돌려주는 함수이다.

input([prompt])은 사용자 입력을 받는 함수이다.

int(x)는 문자열 형태의 숫자나 소수점이 있는 숫자 등을 정수 형태로 돌려주는 함수로 , 정수 를 입력으로 받으면 그대로 돌려준다.

isinstance(object, class)는 첫 번째 인수로 인스턴스, 두번쨰 인수로 클래스 이름을 받느나. 입력으로 받은 인스턴스가 그 클래스의 인스턴스인지를 판단하여 참이면 True, 거짓이면 False를 돌려준다.

len(s)은 입력값 s의 길이(요소의 전체 개수)를 돌려주는 함수이다.

 

list(s)는 반복 가능한 자료형 s를 입력받아 리스트로 만들어 돌려주는 함수이다.

list함수에 리스트를 입력으로 주면 똑같은 리스트를 복사하여 돌려준다.

 

map(f, iterable)은 함수(f)와 반복 가능한(iterable)자료형을 입력으로 받는다. 

map은 입력 받은 자료형의 각 요소를 함수 f가 수행한 결과를 묶어서 돌려주는 함수이다.

 

max(iterable)는 인수로 반복 가능한 자료형을 입력받아 그 최댓값을 돌려주는 함수

min(iterable)은 max함수와 반대로 , 인수로 반복 가능한 자료형을 입력 받아 그 최솟값을 돌려주는 함수

 

oct(x)는 정수 형태의 숫자를 8진수 문자열로 바꾸어 돌려주는 함수이다.

 

open(filename,[mode])은 '파일 이름'과 '읽기 방법'을 입력받아 파일 객체를 돌려주는 함수이다.

 

ord(c)  문자의 아스키 코드 값을 돌려주는 함수이다.

 

pow(x,y)는 x의 y제곱한 결괏값을 돌려주는 함수이다.

 

 

 

range([start],step[,step])는 for문과 함께 자주 사용하는 함수이다. 이 함수는 입력받은 숫자에 해당하는 범위 값을 반복 가능한 객체로 만들어 돌려준다.

인수가 하나일 경우 : 0부터 시작

인수가 2개일 경우 : 시작 숫자와 끝 숫저

인수가 3개일 경우 : 숫자 사이의 거리

 

round(number[,ndigits])함수는 숫자를 입력받아 반올림해 주는 함수

 

sorted(iterable)함수는 입력 값을 정렬한 후 그 결과를 리스트로 돌려주는 함수

 

str(object)은 문자열 형태로 객체를 변화하여 돌려주는 함수

 

sum(iterable)은 입력 받은 리스트나 튜플의 모든 요소의 합을 돌려주는 함수

 

tuple(iterable)은 반복 가능한 자료형을 입력받아 튜플 형태로 바꾸어 돌려주는 함수

 

type(object)은 입력값의 자료형이 무엇인지 알려주는 함수

 

zip(*iterable)은 동일한 개수로 이루어진 자료형을 묶어 주는 역할을 하는 함수

05-6 외장함수

sys

sys모듈은 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다.

 

명령 행에서 인수 전달하기 - sys.argv

강제로 스크립트 종료하기 -sys.exit()

자신이 만든 모듈 불러와 사용하기 -sys.path

 

pickle

객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 하는 모듈이다.

import pickle

pickle.dump()

 

pickle.dump로 저장한 파일을 pickle.load를 사용해서 원래 있던 딕셔너리 객체(data)상태 그대로 불러오는 예이다.

 

 

os

환경 변수나 디렉터리, 파일 등의 os자원을 제어할 수 있게 해주는 모듈이다.

 

내 시스템의 환경 변수 값을 알고 싶을 때 os.environ

os.environ['PATH']

 

디렉터리 위치 돌려받기 -os.getcwd()

시스템 명령어 호출하기 - os.system

os.system("dir")

실행한 시스템 명령어의 결괏값 돌려받기 -os.popen

os.popen("dir")

 

os.mkdir()

os.rmdir()

os.unlink() -> 파일을 지운다.

os.rename(src, dit)

 

shutil 

shutil은 파일을 복사해 주는 파이썬 모듈이다.

shutil.copy("src.txt","dst.txt")

 

glob

디렉터리에 있는 파일들을 리스트로 만들기 -glob(pathname)

*, ? 등 메타 문자를 써서 원하는 파일만 읽어 들일 수 도 있다.

 

tempfile

파일을 임시로 만들어서 사용할 때 유용한 모듈이 바로 tempfile이다.

tempfile.mktemp()는 중복되지 않는 임시 파일의 이름을 무작워로 만들어서 돌려준다.

 

tempfile.TemporaryFile()은 임시 저장 공간으로 사용해 파일 객체를 돌려준다.

f.close()

 

time

time.time()은 UTC를 사용하여 현재 시간을 실수 형태로 돌려주는 함수이다.

time.localtime은 time.time()이 돌려준 실수 값을 사용해서 연도, 월, 일, 시 ,분, 초, ..의 행태로 바꾸어 주는 함수이다.

time.asctime위 time.localtime에 의해서 반환된 튜플 형태의 값을 인수로 받아서 날짜와 시간을 알아보기 쉬운 형태로 돌려주는 함수이다.

time.ctime 

time.strftime('출력할 형식 포맷 코드', time.localtime(time.time())

time.sleep() 함수는 주로 루프 안에서 많이 사용한다. 이 함수를 사용하면 일정한 시간 간격을 두고 루프를 실행할 수 있다.

 

calendar

calendar는 파이썬에서 달력을 볼수 있게 해주는 모듈이다.

calendar.calendar(연도)

calendar.prmonth(연도, 월)

calendar.weekday(연도, 월, 일)

calendar.monthrange(연도, 월) 

 

random

random은 난수(규칙이 없는 임의의 수)를 발생시키는 모듈이다.

random.random()

random.randint(1,10)

random.choice()

random.shuffle(list data)

 

webbrowser

자신의 시스템에서 사용하는 기본 웹 브라우저를 자동으로 실행하는 모듈이다. 

webbrowser.open(url)

open_new함수는 이미 웹 브라우저가 실행한 상태이더라도 새로운 창으로 해당 주소가 열리게 한다.

06 파이썬 프로그래밍 어떻게 시작해야 할까?

06-1 내가 프로그램을 만들 수 있을 까?

구구단

입력과 출력 

프로그램 을 짤 순서를 생각한다.

def GuGu(n):

  result = []

  i = 1

  while i < 10:

    result.append(n * i)

    i += 1

  return result

 

 

반응형
반응형

04-1 함수

반복적으로 사용되는 가치 있는 부분을 한 뭉치로 묶어서 

어떤 입력값을 주었을 때 어떤 결괏값을 돌려준다.

 

파이썬 함수의 구조

def 함수이름(매개변수):

  수행할 문장1

  수행할 문장2

  ...

 

 

매개변수와 인수

매개변수는 함수에 입력으로 전달된 값을 받는 변수를 의미하고 

인수는 함수를 호출할 때 전달하는 입력값을 의미한다.

def add(a,b):

  return a+b

add(3,1)

a,b 매개변수

3,1 인수

 

입력값 -> 함수 -> 출력값

 

입력값이 몇개가 될지 모를 때는 어떻게 해야 할까?

*args는 임의의 정한 변수 이름이다.

def add_many(*args):

  result = 0

  for in in args:

    result += i

  return result

 

**kwargs : 딕셔너리 

 

함수의 결괏값은 언제나 하나이다.

 

매개변수에 초깃값 미리 설정하기

def say_myself(name, old, man = True):

초깃값 은 마지막에 해야 한다. 

 

global 명령어 사용하기

 

python lambda

lambda 매개변수1, 매개변수2,..: 매개변수를 사용한 표현식

add = lambda a,b: a+b

result = add(3,4)

 

04-2 사용자 입력과 출력

사용자 입력 

input()

input('숫자를 입력하세요:')

str 으로 인식한다.

 

04-3 파일 읽기 쓰기

파일 생성하기

f = open("새파일.txt','w')

r 읽기 모드- 파일을 읽기만 할 때 사용
w 쓰기 모드- 파일에 내용을 쓸때 사용
a 추가 모드-파일의 마지막에 새로운 내용을 추가할 때 사용

 

f.readline()

 

 

반응형
반응형

02-2 파이썬 프로그래밍의 기초, 자료형

02-7 불 자료형

참과 거짓 자료형이다.

 

비여 있지 않으면 참이 된다.

숫자에서는 그 값이 0일 때 거짓이 된다.

자료형 참 or 거짓
문자열 "python"
문자열 "" 거짓
리스트 [1,2,3]
리스트 [] 거짓
튜플 () 거짓
딕셔너리 {} 거짓
숫자형 0이 아닌 숫자
숫자형 0 거짓
  None 거짓

 

02-8 자료형의 값을 저장하는 공간,변수

변수 이름 = 변수에 저장할 값

 

변수란?

변수는 객체를 가리키는 것

객체란 우리가 지금 껏 보안 자료형과 같은 것을 의미하는 말이다.

 

메모리의 주소

id(a)

 

리스트를 복사할 때

a = [1,2,3]

b = a  => 주소 같이 저장 된다.

 

다른 주소 가리키고 싶을 떄

1.[:]사용

b = a[:]

2. copy모듈 사용

from copy import copy

b = copy(a)

 

변수를 만드는 여러 가지 방법

a,b = ('python','life')

(a,b) = 'python', 'life'

[a,b] = ['python','life']

a = b ='python'

 

a = 3 

b = 5

a,b = b,a

a  ==> 5

b  ==> 3

 

 

03. 프로그램의 구조를 쌓는다! 제어문

03-1 if문

선택 

 

if조건문:

  수행할 문장1

else:

  수행할 문장2

 

들여쓰기 (indectation) 

들여쓰기 잘못하면 오류가 난다.

upexpected indent

 

공백으로 할 겨면 , 항상 공백으로 통일하고 , 탭으로 할 거면 항상 탭으로 통일 해서 사용해야 한다.

 

x or y x와 y둘 중에 하나만 참으면 참이다
x and y x와 y 모두 참이어야 참이다.
not x x가 거짓이면 참이다.

x in s, x not in s

 

다양한 조건을 판단하는 elif

if조건문:

  수행할 문장1

elif조건문:

  수행할 문장2

else:

  수행할 문장3

 

pass

 

조건부 표현식

if score >= 60:

  message = "success"

else:

  message = "failure"

 

message =  "success" if score >= 60 else "failure"

조건문이 참인 경우 if 조건문 else 조건문이 거짓인 경우

 

03-2 while문

while 조건문:

  수행할 문장1

 

while 문 강제로 나가기 break

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

continue

 

무한 루프 ; 무한히 반복한다는 의미

 

03-3 for문

1. 전형적인 for문

for i in list:

 

2. 다양한 for문의 사용

for (first, last) in a:

 

3. for문의 응용

 

for문과 continue문

 

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

range(10) -> 0,1,2,3,4,5,6,7,8,9

range(1,11) -> 1,2,3,4,5,6,7,8,9,10

 

리스트 내포 사용하기

a = [1,2,3,4]

result = []

for num in a:

  result.apppend(num*3)

 

result = [num * 3 for num in a]

result = [num * 3 for num in a if num % 2 == 0]

[표현식 for 항목 in 반복 가능 객체 if 조건]

 

result = [x* y for x in range(2,10)

for y in range(1,20)] 

result = [x* y for x in range(2,10)
for y in range(1,10)] 
print(result)

결과 :

[2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81]

 

 

반응형
반응형

본 내용은  fastcampus 딥러닝/인공지능 올인원 패키지 online을 정리한 것이다.

자료형이란 프로그래밍을 할 때 쓰이는 숫자 , 문자열, 등 자료 형태로 사용하는 모든 것을 뜻한다. 

프로그램의 기본이자 핵심 단위가 바로 자료형이다.

 

02-1 숫자형

숫자 형태로 이루어진 자료형

정수 : 양의 정수와 음의 정수 , 0

실수 : floating-point 소수점이 포함된 숫자

 a = 4.24E10 => 지수표현 방식

8진수 : Octal => Oo

16진수 : Hexadecimal => Ox

 

숫자형을 활용하기 위한 연산자

사칙연산 +,-,*,/

 ** =>제곱

 % 나눗셈 후 나머지를 반환하는 연산자

 // 나눗셈 후 몫을 반환하는 연산자

 

 

02-2 문자열 자료형

"

'

"""

'''

 

문자열 연산하기

1. 문자열 더해서 연결하기

2. 문자열 곱하기

a = "python"

a * 2

'pythonpython'

3. 문자열 곱하기 응용

4. 문자열 길이 구하기

len(a)

 

문자열 인덱싱과 슬라이싱

a[3]

파이썬은 0부터 숫자를 센다.

0과 -0은 똑같은 것이기 때문에 a[-0]은 a[0]과 똑같은 값을 보여준다.

 

문자열 슬라이싱이란?

a[0:3]

a[시작번호: 끝번호]

 

문자열 포매팅 

문자열 안의 특정한 값을 바꿔야 할 경우가 있을 때 이것을 가능하게 해주는 것이 바로 문자열 포매팅 기법이다.

 

문자열 포매팅 따라 하기

1. 숫자 바로 대입

"I eat %d apples." % 3

2. 문자열 바로 대입

"I eat %s apples." % "five"

3,숫자값을 나타내는 변수로 대립

number = 3

"I eat %d apples." % number

4. 2개 이상의 값 넣기

number = 10

day = "three"

"I ate %d apples. so I was sick for %s days." % (number,day)

 

포맷코드와 숫자 함께 사용하기

1. 정렬과 공백

"%10s" % "hi" <- hi 오른쪽 정렬

"%-10s" % "hi" <- hi 왼쪽 정렬

 

2. 소수점 표현하기

"%0.4f" % 3.421334556

 

format함수를 사용한 포매팅

숫자 바로 대입하기

"I eat {0} apples".format(3)

2개 이상의 값 넣기

number= 10

day ="three"

"I eat {0} apples. so I was sick for {1} days.".format(number, day)

 

 

"{0:<10}".format("hi") 왼쪽 정렬

"{0:>10}".format("hi") 오른쪽 정렬

"{0:^10}".format("hi") 가운데 정렬

공백 채우기 "{0:=^10".format("hi")

 

소수점 표현하기

"{0:0.4f}".format(y)

 

f문자열 포매팅

f'나의 이름은 {name}입니다 . 나이는 {age}입니다.'

 

문자열 관련 함수

문자 개수 세기(count)

위치 알려주기 1(find)

위치 알려주기 2(index)

문자열 삽입(join)

소문자를 대문자로 바꾸기(upper)

대문자를 소문자로 바꾸기(lower)

왼쪽 공백 비우기(lstrip)

오른쪽 공백 지우기(rstrip)

양쪽 공백 지우기(strip)

문자열 바꾸기(replace)

문자열 나누기(split)

 

 

02-3 리스트 자료형

odd = []

 

리스트의 인덱싱과 슬라이싱

a[0]

a[-1]

 

리스트의 슬라이싱

a[0:2]

 

리스트 연산하기

1. 리스트 더하기 +

2. 리스트 반복하기 *

3. 리스트 길이 구하기 len()

 

리스트의 수정과 삭제

리스트에서 값 수정하기

a[2] = 4

del 함수 사용해 리스트 요소 삭제하기

del a[1]

del 객체

 

리스트 관련 함수

리스트에 요추 추가하기 append

리스트 정렬 sort()

리스트 뒤집기 reverse()

위치 반환 index(x)

리스트에 요소 삽입 insert

리스트 요소 제거 remove()

리스트 요소 끄집어 내기 pop()

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

리스트 확장 extend([4,5])

 

02-4 튜플 자료형

t1 = ()

immutable

 

1. 튜플 요솟값을 삭제하려 할 때

오류가 난다.

2. 튜플 요솟값을 변경하려 할 때 

오류가 난다.

 

튜플 다루기

1. 인덱싱 하기 t1[0]

2. 슬라이싱하기

3. 튜플 더하기

4. 튜플 곱하기

5. 튜플 길이 구하기

 

02-5  딕셔너리 자료형

Dictionary

{key1:value1,....}

 

딕셔너리 쌍 추가 , 삭제 하기 

1. 딕셔너리 쌍 추가하기 

a[1] = 'a'

2. 딕셔너리 요소 삭제하기

del a[1]

 

딕셔너리를 사용하는 방법

a[1]

 

딕셔너리 만들때 주의할 사항

key가 같은  value가 두개 있을 떄 마지막의 값으로 된다.

list를 key로 사용할 수 없다.

 

딕셔너리 관련 함수

key 리스트 만들기(keys)

a.keys() =>리스트를 돌려준다.

 

for k in a.keys():

  print(k)

 

list(a.keys())

 

value 리스트 만들기 

a.values()

 

key,value 쌍 얻기

a.items()

 

key : value 쌍 지우기 

a.clear()

 

key로 value얻기

a.get(1)

 

해당 key가 딕셔너리 안에 있는지 조사하기 (in)

 

02-6 집합 자료형

s1 = set([1,2,3])

중복을 허용 하지 않는다. 

순서가 없다.

 

교집합 , 차집합 구하기

교집합

s1&s2

s1.intersection(s2)

합집합 

s1|s2

s1.union(s2)

차집합

s1-s2

s2-s1

s1.difference(s2)

s2.difference(s1)

 

집합 자료형 관련 함수

s1.add(s4)

 

값 여러개 추가하기 (update)

s1.update([4,5,6])

 

특정 값 제거하기(remove)

s1.remove(2)

반응형
반응형

01-1 파이썬이란?

python 1990년 암스테르담의 귀도 반 로섬 

Guido Van Rossum

인트프리터 언어

파르나소스 산의 동굴에 살던 큰 뱀 을 뜻

예: 구글

사진 공유 서비스 인스타그램, 파일 동기화 서비스 드롭박스 등

 

공동 작업과 유지 보수가 매우 쉽고 편하다.

 

01-2 파이썬의 특징

파이썬은 인간다운 언어이다.

파이썬은 문법이 쉬워 빠르게 배울 수 있다.

파이썬은 무료이지만 강력하다. 오픈 소스

  파이썬과 c는 찰떡 궁합이란 말이 있다.

  즉 프로그램의 전반적인 뼈대는 파이썬으로 만들고 , 빠른 실행 속도가 필요한 부분은 c로 만들어서 파이썬 프로그램 안에 포함시키는 것이다.

파이썬은 간결하다.

  파이썬 프로그램은 줄을 맞추지 않으면 실행이 되지 않는다.

파이썬은 프로그래밍을 즐기게 해 준다.

파이썬은 개발 속도가 빠르다.

 

01-3 파이썬으로 무엇을 할 수 있을까?

파이썬으로 할 수 있는 일 

시스템 유틸리티 제작

GUI 프로그래밍: 쉽게 말해 화면에 또 다른 윈도우 창을 만들고 그 창에 프로그램을 동작시킬 수 있는 메뉴나 버튼, 그림  등을 추가하는 것이다.

 대표적인 예로 : Tkinter(티케이인터) 

c/c++와의 결합: 파이썬은 접착 언어라고도 부르는데 , 그 이유는 다른 언어와 잘 어울려 결합해서 사용할 수 있기 때문입니다.

웹 프로그래밍: 

수치 연산 프로그래밍 : python은 적합한 언어는 아니다. 수치가 복잡하고 연산이 많다면 C같은 언어로 하는 것이 더 빠르기 때문이다. 하지만 파이썬은 Numpy라는 수치 연산 모듈을 제공한다. 이 모듈은 C로 작성 했기 때문에 파이썬에서도 수치 연산을 빠르게 할 수 있다.

데이터베이스 프로그래밍 sybase, infomix, oracle , mysql, postgreSQL등의 데이터베이스 => pickle

 pickle은 파이썬에서 사용하는 자료를 변형 없이 그대로 파일에 저장하고 불러오는 일을 맡아 한다. 

데이터 분석, 사물 인터넷

 파이썬으로 만든 판다스 pandas 모듈

 

파이썬으로 할 수 없는 일

시스템과 밀접한 프로그래밍 영역 : 빠른 속도를 요구하거나 하드웨어를 직접 건드려야 하는 프로그램에는 어울리지 않는다.

모바일 프로그래밍:  안드로이드 앱을 개발 하는 것은 아직 어렵다. 지원하지만 이것만으로는 앱을 만들기에는 아직 역부족이다. 아이폰 앱을 개발하는 것 역시 파이썬으로 할 수 없다.

 

01-4 파이썬 설치하기

윈도우에서 파이썬 설치하기

download

Add python to 3.x path해주는 것이 좋다.

 

01-5 파이썬 둘러보기

입력과 출력이 번갈아 이어지는 것을 마치 대화하는 것처럼 느껴지기 떄문에 파이썬 '대화형' 인터프리터라고 부른다.

 

기초문법 

사칙연산 

변수에 숫자 대입하고 계산하기

변수에 문자 대입하고 출력하기

조건문 if

반복문 for

반복문 while

함수

 

01-6 파이썬과 에디터

IDLE로 파이썬 프로그램 작성하기

명령 프롬프트 창(command prompt)

 

추천 에디터 :

비주얼 스튜디어 코드

파이참

반응형

+ Recent posts