출처: https://bumcrush.tistory.com/182 [맑음때때로 여름]

pip install flask_cors

--------------------------------------------------------

import flask_cors CORS, cross_origin

CORS(app) # 모든 요청

--------------------------------------------------------

CORS(app, resources={r'*': {'origins': '*'}}) #모든 곳에서 호출하는 것을 허용

CORS(app, resources={r'*': {'origins': 'http://www.test.com'}}) # http://www.test.com 에서의 호출만 허용

CORS(app, resources={r'/_api/*': {'origins': 'http://www.test.com:5000'}}) # http://www.test.com:5000 에서의 호출만 허용

from urllib import request
from bs4 import BeautifulSoup as bs
import re

url = 'https://search.musinsa.com/ranking/brand'

target = request.urlopen(url)
soup = bs(target, 'html.parser')

brand = soup.select('.brandLogo img')
brandname = []

print('----------------------------------------------------')

for alt in brand[:5] :
    #print(alt.get('alt'))
    brandname.append(alt.get('alt'))


print(brandname)
print('----------------------------------------------------')

import json
jsonString = json.dumps(brandname, ensure_ascii=False)

print(jsonString)


from flask import Flask

# 웹서버 생성
app = Flask(__name__)
print(app)
print(__name__)

#url
@app.route('/brand')
def brandName():
    return jsonString
    
if __name__ == '__main__':
     app.run(debug=True, port=8000)

 

 

 

 

from urllib import request
from bs4 import BeautifulSoup as bs
import re

url = 'https://search.musinsa.com/ranking/brand'

target = request.urlopen(url)
soup = bs(target, 'html.parser')

brand = soup.select('.brandLogo img')
rankup = soup.select('.rank')
result_list = soup.find_all('span', class_="rank")

brandname = []
brandrank = []
brandrank_data = []
rank_data = []

for span in result_list[:10] :
    brandrank_data.append(span.text)

print(brandrank_data)

print('----------------------------시작------------------------')

for alt in brand[:10] :
    #print(alt.get('alt'))
    brandname.append(alt.get('alt'))


print(brandname)
print(brandname[0])
print('----------------------------------------------------')


for cla in rankup[:10] :
    brandrank.append(cla.get('class'))

print(brandrank)
print('----------------------------------------------------')


for i in range(10) :
    rank_data.append(
        {
            'name':brandname[i],
            'rank':brandrank_data[i]
        }
        
        )

print(rank_data)
print('----------------------------------------------------')





import json
jsonString = json.dumps(rank_data, ensure_ascii=False)

print(jsonString)


from flask import Flask

# 웹서버 생성
app = Flask(__name__)
#print(app)
#print(__name__)


from flask_cors import CORS
CORS(app)

#url
@app.route('/brand')
def brandName():
    return jsonString
    
if __name__ == '__main__':
     app.run(debug=True, port=8000)

 

 

없으면 cmd에서 pip install pymysql 해준다.

포트는 기본 3306

import pymysql
project_db = pymysql.connect(host='127.0.0.1', db='open', user='aia', password='aia')

cursor1=project_db.cursor()

sql_select = 'select * from member'
cursor1.execute(sql_select)

while True :

    row = cursor1.fetchone()

    if row==None :
        break;
    print(row)

project_db.close()

 

 

import sys
import io
 
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')
#한글깨짐 방지

를 위에 넣어주거나

 

 

 

 

 

환경변수에 인코딩 추가하는 방법

 

사용하는 윈도우 환경 변수에 "PYTHONIOENCODING=utf-8" 추가합니다.

환경변수를 추가하려면 "제어판 -> 시스템 -> 고급시스템설정 -> 고급탭 -> 환경변수"로 이동 하셔서

 

 

 

 

 

환경변수 창 아래쪽에 있는 시스템 변수 항목에서 "새로만들기" 버튼 을 클릭 하고 새 시스템 변수에서 아래의 그림과 같이 변수 이름과 변수 값을 적어 넣으시고 확인 버튼을 누르시면 

 

 

 

 

 

 

 

위의 그림과 같이 시스템 변수에 인코딩이 추가된 모습을 볼 수 있습니다. 여기서 "확인" 버튼을 누르면 끝!!!

 



출처: https://mrcoding.tistory.com/entry/아톰에서-파이썬-스크립트-실행시-한글-깨짐현상-잡는-꿀팁 [Mr. Coding]

=

from flask import Flask


# 웹서버 생성
app = Flask(__name__)
print(app)
print(__name__) #main

# url mapping
@app.route('/')
def index():
    return 'Hello, Python'

@app.route('/hello')
def hello():
    return '<h1> /hello 요청의 응답입니다 </h1>'


if __name__ == '__main__':
    app.run(debug=True, port=8000)

 

 

파이썬이 설치된 위치의 Script에 들어가서 cmd를 실행해준다.

그리고 pip install beatufulsoup4라고 치고 이렇게 나오면 설치완료!

 

 

아톰 사용하고 있고 그 뒤로는 이렇게 불러오기 가능!

쥬피터 노트북에는 깔려있고? VS CODE도 그냥 이렇게 쓰는 것 같다능~

근데 vscode는 터미널이 있어서 거기에서 하는듯..

 

설치 목록확인은 pip list

 

pip install flask

test1.csv
0.00MB
test2.csv
0.00MB

# Chapter09_02
# csv 파일 읽기 및 쓰기

# csv : meme - text/csv;

import csv

# 예제1
with open('./resource/test1.csv','r') as f :
    reader = csv.reader(f)
    next(reader) #header (첫줄) skip

    # 객체확인
    print(reader)

    # 타입확인
    print(type(reader))

    # 속성확인
    print(dir(reader))
    print()

    # 내용 출력
    for c in reader :
        #print(c)
        #print(type(c)) #list~~
        print(''.join(c))


# 예제2
with open('./resource/test2.csv','r') as f :
    reader = csv.reader(f,delimiter='|') # 구분자

    for c in reader:
        print(c)
        # 리스트안에 각각 두개 ['나라','약자']로 가져옴

# 예제3
with open('./resource/test1.csv','r') as f :
    reader = csv.DictReader(f)

    print(reader)
    print(type(reader))
    print(dir(reader))

    for c in reader:
        #print(c) #{'Name|Code': 'Zimbabwe|ZW'}
        for k,v in c.items():
            print(k,v)
        print('--------------------')


# 예제4
w = [[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15],[16,17,18],[19,20,21]]
with open('./resource/write1.csv', 'w', encoding='utf-8') as f:
    print(dir(csv))
    wt=csv.writer(f)

    #dic확인
    #print(dir(wt))

    for v in w :
        wt.writerow(v) # 한줄씩 입력.row단위로.

# 예제5
with open('./resource/write2.csv', 'w', encoding='utf-8') as f:
    # 필드명
    fields = ['one', 'two','three']

    #DictWriter

    wt = csv.DictWriter(f, fieldnames=fields)
    #header Writer
    wt.writeheader()

    for v in w :
        wt.writerow({'one': v[0],'two':v[1],'three':v[2]})
# chapter09_01
# 파일 읽기 및 쓰기

# 읽기 모드 r 쓰기모드 w 추가모드 a 텍스트모드 t 바이너리모드 b
# 상대경로('../, ./') 절대 경로("C:\django\example..")

# 파일 읽기, 읽기 작업(read)
# 예제1)
import sys
import io

sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')
#한글깨짐 방지

f = open('./resource/it_news.txt', 'r', encoding='UTF-8')

# 속성확인
print(dir(f))
# 인코딩 확인
print(f.encoding)
# 파일이름
print(f.name)
# 모드 학인
print(f.mode)

cts=f.read()
print(cts)

#반드시 clos
f.close()


print('--------------------------------------')

# 예제2
with open('./resource/it_news.txt', 'r', encoding='UTF-8') as f :
    c = f.read()
    print(c)
    print(iter(c))
    print(list(c))
    # with문에서는 알아서 close해준다.

print('--------------------------------------')


# 예제3
# read() : 전체 읽기, read(10) : 10byte만 읽어옴
with open('./resource/it_news.txt', 'r', encoding='UTF-8') as f :
    c = f.read(20)
    print(c)
    c = f.read(20)
    print(c) # 다음 20byte를 읽어봄. 내가 마지막에 어디까지 읽었는지 내부적으로 기억.
    c = f.read(20)
    print(c)
    f.seek(0,0) # 처음으로 from 0 to 0
    c = f.read(20)
    print(c)
print('--------------------------------------')

# 예제4
# readline : 한줄씩 읽기
with open('./resource/it_news.txt', 'r', encoding='UTF-8') as f :
    line = f.readline()
    print(line)
    line = f.readline()
    print(line) #반복문 안에서 읽어오는 것이 좋다.
print('--------------------------------------')

# 예제5
# readlines : 전체를 읽은 후 라인 단위 리스트로 저장
with open('./resource/it_news.txt', 'r', encoding='UTF-8') as f :
    cts = f.readlines()
    print(cts)
    print(cts[0])

    for c in cts :
        print(c, end='')

print('--------------------------------------')


# 파일쓰기 (write)

# 예제1
with open('./resource/contents1.txt', 'w') as f :
    f.write('I love Python\n')

# 예제2
with open('./resource/contents1.txt', 'a') as f :
    f.write('I love Python\n')       # w로하면 덮어쓰기 a 뒤에추가 (append)

# 예제3
# writelines : 리스트 > 파일로 한줄씩
with open('./resource/contents2.txt', 'w') as f :
    list=['orange\n', 'Apple\n', 'banana\n','melon\n']
    f.writelines(list)

# 예제4
with open('./resource/contents3.txt', 'w') as f :
    print('Test Text Write', file=f) #콘솔이 아니라, 파일로 출력
# chapter08_02
# 파이썬 외장 (External)함ㅅ
# 실제 프로그램 개발 중 자주 사용
# 종류 : sys. pickle, shutil, temfile, time, randome 등

# 예제1
import sys
print(sys.argv) #sys.argv라고 구글에 검색해보면 좋다.


# 예제2 (강제종료)
# sys.exit()

# 예제3 (파이선 패키지 위치)
print(sys.path)


#pickle : 객체 파일 읽기, 쓰기
import pickle

# 예제4(쓰기)

f = open("test.obj", 'wb')
obj = {1:'python',2:'study', 3:'basic'}
pickle.dump(obj,f)
f.close()


# 예제5(열기)

f = open('test.obj', 'rb')
data = pickle.load(f)
print(data, type(data))
f.close()


# os : 환경변수, 디렉토리(파일) 처리 관련, 운영체제 작업 관련
# mkdir, rmdir(비어있으면 삭제), rename,

# 예제6
import os
print(os.environ)
print(os.environ["USERNAME"])
print(os.environ["ATOM_HOME"])

# 예제7 (현재 경로)
print(os.getcwd())


# time : 시간 관련 처리.
import time

# 예제8
print(time.time())

# 예제9 형태변환
print(time.localtime(time.time()))

# 예제10 (간단 표현)
print(time.ctime())

# 예제11 (형식 표현)
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))

# 예제12 (시간 간격 발생)
# for i in range(5) :
#     print(i)
#     time.sleep(1) #1초마다 실행하겠다는 뜻

# random : 난수 리턴
import random

# 예제13
print(random.random()) #0~1 실수

# 예제14
print(random.randint(1,45))
print(random.randrange(1,45))

# 예제15(섞기)
d=[1,2,3,4,5]
random.shuffle(d)
print(d)

# 예제16 (무작위 선택)
c = random.choice(d)
print(c)

# webbrowser : 본인 os의 웹 브라우저 실행
import webbrowser

webbrowser.open("http://naver.com")
webbrowser.open_new("http://naver.com")

docs.python.org/ko/3.9/library/functions.html

 

내장 함수 — Python 3.9.1rc1 문서

내장 함수 파이썬 인터프리터에는 항상 사용할 수 있는 많은 함수와 형이 내장되어 있습니다. 여기에서 알파벳 순으로 나열합니다. abs(x) 숫자의 절댓값을 돌려줍니다. 인자는 정수, 실수 또는 __

docs.python.org

 

# Chapter08-1
# 파이썬 내장(Built-in) 함수
# 자주 사용하는 함수 위주로 실습
# 사용하다보면 자연스럽게 숙달
# str(), int(), tuple() 형변환 이미 학습

# 절대값
# abs()

print(abs(-3))

# all, any : iterable 요소 검사(참, 거짓)
print(all([1,2,3])) # and
print(any([1,2,0])) # or

# chr : 아스키 -> 문자 , ord : 문자 -> 아스키

print(chr(67))
print(ord('C'))

# enumerate : 인덱스 + Iterable 객체 생성
for i, name in enumerate(['abc', 'bcd', 'efg']):
    print(i, name)


#  filter : 반복가능한 객체 요소를 지정한 함수 조건에 맞는 값 추출

def conv_pos(x):
    return abs(x) > 2
    
print(list(filter(conv_pos, [1, -3, 2, 0, -5, 6])))
print(list(filter(lambda x: abs(x) > 2, [1, -3, 2, 0, -5, 6])))

# id : 객체의 주소값(레퍼런스) 반환

print(id(int(5)))
print(id(4))

# len : 요소의 길이 반환
print(len('abcdefg'))
print(len([1,2,3,4,5,6,7]))

# max, min : 최대값, 최소값

print(max([1,2,3]))
print(max('python study'))
print(min([1,2,3]))
print(min('python study'))

# map : 반복가능한 객체 요소를 지정한 함수 실행 후 추출
def conv_abs(x):
    return abs(x)
    
print(list(map(conv_abs,[1,-3,2,0,-5,6])))
print(list(map(lambda x:abs(x),[1,-3,2,0,-5,6])))

# pow : 제곱값 반환
print(pow(2,10))

# range : 반복가능한 객체(Iterable) 반환
print(list(range(1,10,2))) # 1 3 5 7 9
print(list(range(0,-15,-1))) # 0 ~ -14

# round : 반올림

print(round(6.5781, 2))
print(round(5.6))

# sorted : 반복가능한 객체(Iterable) 정렬 후 반환 

print(sorted([6,7,4,3,1,2]))
a = sorted([6,7,4,3,1,2])
print(a)
print(sorted(['p','y','t','h','o','n']))


# sum : 반복가능한 객체(Iterable) 합 반환
print(sum([6,7,8,9,10]))
print(sum(range(1,101)))

# type : 자료형 확인

print(type(3))
print(type({}))
print(type(()))
print(type([]))

# zip : 반복가능한 객체(Iterable)의 요소를 묶어서 반환

print(list(zip([10,20,30],[40,50,777]))) #짝이 맞지 않으면 반환되지않음 3:2 면 2개만.
print(type(list(zip([10,20,30],[40,50,777]))[0]))

'python_basic' 카테고리의 다른 글

[파이썬] csv 파일쓰기 / 읽기  (0) 2020.11.30
[파이썬] 파일읽기 / 쓰기  (0) 2020.11.30
[파이썬] 외장함수  (0) 2020.11.30
[파이썬] 예외처리 Exception / try - except - else - finally  (0) 2020.11.30
[파이썬] 패키지 / init  (0) 2020.11.23
[파이썬] 모듈  (0) 2020.11.23
[파이썬] 클래스  (0) 2020.11.23
# chapter07-01
# 파이썬예외처리의 이해
# 예외종류
# syntax, type, name, index, value, key..error
# 문법적으로는 틀리지 않았지만, 코드실행 프로세스(단계) 발생하는 예외도 중요

# 1. 예외는 반드시 처리
# 2. 로그는 반드시 남긴다.
# 3. 예외는 던져진다.
# 4. 예외 무시.


# syntaxError / 문법 오류.
# print('error) / print('error'))


# nameError / 참조 없음
# a=10
# b=15
# pring(c)

# ZeroDivisionError
# print(100/0)

#IndexError
x=[50,70,90]
print(x[1])
# print(x[4])


# KeyError
dic={'name' :'Lee' , 'age' : 41, 'city':'busan'}
# print(dic['hobby'])

# 예외가 없는 것을 가정하고 프로그램을 작성 > 런타임 예외 발생 시 예외 처리 권장(EAFP)


# AttributeError : 모듈, 클래스에 있는 잘못된 속성 사용 예외
import time
# print(time.time2()) time2는 없다


# ValueError

x = [10,50,90]
x.remove(50)
print(x)
# x.remove(200)

# FileNotFoundError
# f = open('text.txt') 파일 없음 에러.


# TypeError : 자료형에 맞지 않는 연산 수행할 경우
x = [1,2]
y = (1,2)
z = 'test'
# print(x+y)
print(x+list(y))


# 예외처리 기본
# try : 에러가 발생할 가능성이 있는 코드 실행
# except 에러명1 : 여러개 가능
# except 에러명2 :
# else : try 블록의 에러가 없을 경우 실행
# finally : 항상 실행.


name = ['kim', 'lee', 'park']

# 예제1

try :
    z = 'kim' #'Cho' 예외처리가 된다.
    x = name.index(z)
    print('{} Found it {} in name'.format(z,x+1))
except   ValueError :
    print('not fount it = occurred ValueError!')
else :
    print('ok! else.')

print()


# 예제2

try :
    z = 'kim' #'Cho' 예외처리가 된다.
    x = name.index(z)
    print('{} Found it {} in name'.format(z,x+1))
except : # except Exception : 와 같다.
    print('not fount it = occurred')
else :
    print('ok! else.')

print()


# 예제3

try :
    z = 'cho' #'Cho' 예외처리가 된다.
    x = name.index(z)
    print('{} Found it {} in name'.format(z,x+1))
except Exception as e :
    print(e) #'cho' is not in list
    print('not fount it = occurred')
else :
    print('ok! else.')
finally :
    print('ok! finally!')

print()


# 예제4
# 에외 발생 : raise
# raise 키워드로 예외 직접 발생

try :
    a = 'park'
    if a == 'kim' :
        print('Ok! pass')
    else :
        raise ValueError #강제로 발생시키는에러.
except ValueError :
    print('Occurred! Exception!')
else :
    print('OK! else.')

'python_basic' 카테고리의 다른 글

[파이썬] 파일읽기 / 쓰기  (0) 2020.11.30
[파이썬] 외장함수  (0) 2020.11.30
[파이썬] 내장함수  (0) 2020.11.30
[파이썬] 패키지 / init  (0) 2020.11.23
[파이썬] 모듈  (0) 2020.11.23
[파이썬] 클래스  (0) 2020.11.23
[파이썬] 사용자로부터 입력받기 / input  (0) 2020.11.23
__all__ = ['module1', 'py명', '파이썬파일이름!']

# __init__.py
# import 했을때 사용허락할 파일명만 적는다
# chapter06_03
# 패키지 작성 및 사용법
# 파이썬은 패키지로 분할 된 개별적인 모듈로 구성
# 상대경로 : ..(부모 디렉토리) .(현재 디렉토리) > 모듈 내부에서만 사용

#__pycache__ : 파이캐시 빠른실행을 위해 파이썬이 만듦 삭제가능 > 어차피 실행하면 또생김

#__init__.py : python3.3부터는 없어도 패키지로 인식
# 과거에는 init 파일이 없으면 import를 할 수 없었다.
# > 단 하위 호환을 위해 작성 추천,


# 예제1

import sub.sub1.module1 # 같은 경로일떄는 이렇게 가져오기도.
import sub.sub2.module2

# 사용
sub.sub1.module1.mod1_test1()
sub.sub1.module1.mod1_test2()

sub.sub2.module2.mod2_test1()
sub.sub2.module2.mod2_test2()

print()
print()
print()

# 예제2
from sub.sub1 import module1
from sub.sub2 import module2 as m2 #별칭 alias

module1.mod1_test1()
module1.mod1_test2()

m2.mod2_test1()
m2.mod2_test2()

print()
print()
print()

# 예제3
from sub.sub1 import *
from sub.sub2 import *
# 전체가져오기 > 하지만 필요한 것만 가져오는 것이 좋다.

module1.mod1_test1()
module1.mod1_test2()

module2.mod2_test1()
module2.mod2_test2()
# chapter06_02
# 파이썬 모듈
# Module : 함수, 변수, 클래스 등 파이썬 구성 요소 등을 모아놓은 파일.

def add(x,y):
    return x+y

def subtract(x,y):
    return x-y

def multiply(x,y):
    return x*y

def divide(x,y):
    return x / y

def power(x,y):
    return x ** y




# print('-' * 15)
# print('called! inner!')
# print(add(5,5))
# print(subtract(15,5))
# print(multiply(5,5))
# print(divide(10,2))
# print(power(5,3))
# print('-' * 15)


# __name__ 사용 > import할 땐 실행되지 않는다.
if __name__ == "__main__":
    print('-' * 15)
    print('called! inner!')
    print(add(5,5))
    print(subtract(15,5))
    print(multiply(5,5))
    print(divide(10,2))
    print(power(5,3))
    print('-' * 15)
# 모듈 사용 실습

import sys
import time

print(sys.path)
print(type(sys.path))

## 모듈 경로 삽입 (영구등록방법아님.)
# sys.path.append('D:/JAVA/inflearnPython/math')
#
# print(sys.path)
# import test_module (math안에 06_02를 테스트용으로 복사해서 만들었음)
#
# # 모듈 사용.
# print(test_module.power(10,3))

import Chapter06_02
print(Chapter06_02.add(10,1000000))

 

append 후 print(sys.path)

# Chapter06_01
# 클래스 (ㅋㅋ붕어빵기계)
# OOP(객체 지향 프로그래밍), self, 인스턴스 메소드, 인스턴스 변수


# 클래스와 and  인스턴스의 차이를 이해하는 것이 중요
# 네임스페이스 : 객체를 인스턴스화 할 때 저장된 공간
# 클래스 변수 : 직접 접근 가능, 공유 (정수기! 공용화장실! 같은 것 ㅋㅋ)
# 인스턴스 변수 : 객체마다 별도 존재.

# 예제1)
# class dog():, class dog:, class(object):
class dog(): #object 상속
    # 클래스 속성
    specied = 'firstdog' #클래스 변수.

    # 초기화/인스턴스 속성 (java생성자)
    def __init__(self,name, age):
        self.name = name
        self.age = age


# 클래스 정보
print(dog)

# 인스턴스화 (- 코드로 구현해서 메모리에 올라간 시점.)
a = dog('happy',15)
b = dog('micky',2)
c = dog('micky',2)
# 비교
print(a == b, id(a), id(b))
print(a == c, id(b), id(c))

# 네임스페이스
print('dog1',a.__dict__)
print('dog2',b.__dict__)

# 인스턴스 속성 확인
print('{} is {} and {} is {}'.format(a.name, a.age, b.name, b.age))

if a.specied == 'firstdog':
    print('{0} is a {1}'.format(a.name, a.specied))

print(dog.specied) # 클래스에서도
print(a.specied) # 인스턴스변수에서도 바로 접근 공유 가능하다. (같은값.)


# 예제2) - self의 이해. (this같은 느낌인듯)

class SelfTest:
    def func1():
        print('func1 called')
    def func2(self): #__init__이 없어도 알아서 생성해주는 똑쟁이 파이썬..
        print(id(self)) #f값.
        print('func2 called')

f = SelfTest()

print(dir(f)) #func1과 func2가 있음을 확인 가능
print(id(f))

# f.func1() 에러! 예외.
f.func2() # self가 있는 인스턴스 메서드
SelfTest.func1() # 클래스로바로 접근해서 접근. (매개변수가 없는 클래스메소드)
                # self가 있으면 인스턴스화 시킨 변수가 self로 넘어감.
# SelfTest.func2() 반대로 에러! 예외
SelfTest.func2(f)


# 예제3)
# 클래스 변수, 인스턴스 변수

class Warehouse:
    #클래스 변수
    stock_num = 0 #재고

    def __init__(self, name):
        # 인스턴스 변수
        self.name=name
        Warehouse.stock_num +=1

    def __del__(self):
        Warehouse.stock_num -=1

user1 = Warehouse('Lee')
user2 = Warehouse('Jin')

print(Warehouse.stock_num) # 붕어빵 몇개구웠어! = 2개

print(user1.name)
print(user2.name)
print(user1.__dict__)
print(user2.__dict__)
print('before>>',Warehouse.__dict__) #stock_num:2

del user1
print('after>>',Warehouse.__dict__)

# 예제4

class dog2():
    specied = 'firstdog'

    def __init__(self,name, age):
        self.name = name
        self.age = age

    def info(self):
        return '{} is {} years old'.format(self.name, self.age)

    def speak(self, sound):
        return "{} says {}!".format(self.name, sound)

# 인스턴스 생성
d = dog2('july',4)
e = dog2('merry',10)

# 메서드 호출
print(d.info())
print(e.info())
print(d.speak('wal wal'))
print(e.speak('mung mung'))
# chapter05_02
# 파이선 사용자 입력
# Input 사용법
# 기본 타입(Str)

# 예제1

name = input("Enter Your Name : ")
grade = input("Enter Your Grade : ")
company = input("Enter Your Company : ")

print(name, grade, company)

# 예제2

number = input("enter number :")
name = input("enter name : ")
print("type : ", type(number), type(name)) #둘다 str로받는다.

# 예제3 (계산)
first_number = int(input("number 1 : "))
second_number = int(input("number 2 : "))

print("두수의 합 : " , first_number+second_number)

# 예제4
float_num = float(input("enter float number : "))
print("num : " float_num)
print("type : " type(float_num))

# 예제5
print("FirstName - {0}, LastName - {1}"
.format(input("enter first name : "),input("enter second name : ")))

'python_basic' 카테고리의 다른 글

[파이썬] 패키지 / init  (0) 2020.11.23
[파이썬] 모듈  (0) 2020.11.23
[파이썬] 클래스  (0) 2020.11.23
[파이썬] 함수 / 람다 (lambda)  (0) 2020.11.23
[파이썬] while문 / while-else  (0) 2020.11.21
[파이썬] for문 / for-else / reversed / range  (0) 2020.11.21
[파이썬] if문  (0) 2020.11.21
# Chapter05_01
# 파이썬 함수(Function)
# 파이썬 함수식 및 람다

# 함수 정의방법
# def function_name(parameter):
#   code

# 예제1)
def first_func(w):
    print("Hello,", w)

word = "Good boy"
first_func(word)



# 예제2
def return_func(w):
    result = "Hello," + str(w)
    return result

x = return_func('goodgirl')
print(x)


# 예제3 (다중반환)

def func_mul(x):
    y1 = x * 10
    y2 = x * 20
    y3 = x * 30
    return y1, y2, y3  # 이런 리턴도 가능!

x, y, z =  func_mul(10)
print(x, y ,z)


# 튜플리턴
def func_mul2(x):
    y1 = x * 10
    y2 = x * 20
    y3 = x * 30
    return (y1, y2, y3) #팩킹해서 튜플로!

q = func_mul2(20)
print(type(q), q)

# 리스트리턴
def func_mul2(x):
    y1 = x * 10
    y2 = x * 20
    y3 = x * 30
    return [y1, y2, y3]

p = func_mul2(30)
print(type(p), p)

def func_mul2(x):
    y1 = x * 10
    y2 = x * 20
    y3 = x * 30
    return {'v1' : y1 , 'v2' : y2 , 'v3' :y3}

d = func_mul2(40)
print(type(d), d, d.items(), d.keys())



# 증요
# *args, **kwargs

# *args(언팩킹)
# *뒤에 단어는 아무거나 가능, 여러개 받기 가능. 튜플에자주사용.

def args_func(*args) :
    for i, v in enumerate(args) :
        print('Result : {}'.format(i), v)
    print('--------')

args_func('Lee')
args_func('Lee','Park','Jin')

# **kwargs
# 딕셔너리로 이해.
def kwargs_func(**kwa) :
    for v in kwa.keys():
        print("{}".format(v), kwa[v])
    print('--------')

kwargs_func(name1='Lee')
kwargs_func(name1='Lee', name2='Park', name3='Jin')

# 전체 혼합
def example(args_1, args_2, *args, **kwargs):
    print(args_1, args_2, args, kwargs)
example(10, 20, 'Lee', 'Kim', 'Park', age1=20, age2=30, age3=40)


# 중첩함수
# 함수안의 함수는 바깥에서 사용 불가.
def nested_func(num):
    def func_in_func(num):
        print(num) #2
    print("In func") #1
    func_in_func(num+100) #2

nested_func(100)


# 람다식 예제
# 메모리 절약, 가독성 향상, 코드 간결
# 함수는 객체 생성 > 리소스(메모리) 할당
# 람다는 즉시 실행 함수 (heap초기화) > 메모리 heap초기화
# 남발 시 가독성이 오히려 감소.

def mul_func(x,y):
    return x*y

lambda x, y : x*y

a = lambda x, y : x*y
print(a(5,6))

def mul2_func(x,y):
    return x*y
###############################
# 일반적 함수 > 변수 할당.
q = mul2_func(10,50)
print(q)
print(mul2_func(10,50))
mul2_func_var = mul_func
print(mul2_func_var(20,50))

# 간단한 것은 람다식으로 사용하는 것이 편함.
lamdbd_mul2_func = lambda x,y:x*y
print(lamdbd_mul2_func(50,50))

def func_final(x, y, func):
    print('>>>>', x * y * func(100,100))

func_final(10,20, mul2_func_var)
func_final(10,20, lambda x,y:x*y) #이름이 없기에 즉시실행!

'python_basic' 카테고리의 다른 글

[파이썬] 모듈  (0) 2020.11.23
[파이썬] 클래스  (0) 2020.11.23
[파이썬] 사용자로부터 입력받기 / input  (0) 2020.11.23
[파이썬] while문 / while-else  (0) 2020.11.21
[파이썬] for문 / for-else / reversed / range  (0) 2020.11.21
[파이썬] if문  (0) 2020.11.21
[파이썬] 집합 ([]) {,}  (0) 2020.11.21
# chapter04_03
# 파이썬 반복문
# while 실습

# while <expr>:
#   <statement(s)>

# 예제1

n=50
while n > 0:
    n-=1
    print(n)


# 예제2
a = ['foo', 'bar','baz']

# while a: = while True :

while a:
    print(a.pop(0))



# 예제3
# break, continue

n = 5

while n>0 :
    n-=1
    if n==2:
        break
    print(n)
print('Loop Ended.') # 4, 3

# 예제4
m = 5

while m>0 :
    m-=1
    if m==2:
        continue
    print(m)
print('Loop Ended.') # 4, 3, 1, 0

# 예제5 - if 중첩

i = 1
while 1 <=10:
    print('i : ',i)
    if i == 6:
        break
    i += 1

# 예제6 while - else

n = 10
while n>0 :
    n-=1
    print(n)
    if n==5:
        break
else :
    print('else out.')


# 예제7
a = ['foo', 'bar', 'baz','qux']
s = 'qux'

i = 0

while i < len(a) : # i < 4
    if a[i] == s:
        print(s, 'found')
        break
    i+=1
else :
    print(s, 'not found in list')


#  무한반복
# while True :

# 예제8

a = ['foo','bar','baz']

while True :
    if not a :
        break
    print(a.pop())

'python_basic' 카테고리의 다른 글

[파이썬] 클래스  (0) 2020.11.23
[파이썬] 사용자로부터 입력받기 / input  (0) 2020.11.23
[파이썬] 함수 / 람다 (lambda)  (0) 2020.11.23
[파이썬] for문 / for-else / reversed / range  (0) 2020.11.21
[파이썬] if문  (0) 2020.11.21
[파이썬] 집합 ([]) {,}  (0) 2020.11.21
[파이썬] 딕셔너리 { : }  (0) 2020.11.21
# chapter04_02
# 파이썬 반복문
# for 실습

# 코딩의 핵심
# for in <collection>
#   <loop body>

import sys
import io

sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')
#한글깨짐 방지


for v1 in range(10) : # 0-9까지 10개.
    print('v1 is :', v1)

for v2 in range(1, 11) : # 1-10까지
    print('v2 is :', v2)

for v3 in range(1,11,2) : # 1-11까지 2개씩 점프
    print('v3 is :', v3)

# 1~1000합을 구하자

sum1 = 0

for v in range(1,1001):
    sum1 += v

print('1-1000까지의 합 :  ',sum1)

# range 함수
print('1-1000까지의 합 : ', sum(range(1,1001)))
print('1-1000까지 4의 배수의 합 : ', sum(range(4,1001,4)))
print(type(range(1,11)))


# iterables : 반복할 수 있는 객체
# iterables data 문자열, 리스트, 튜플, 집합, 딕셔너리
# iterable 리턴 함수 : range, reversed, enumerate, filter, map, zip


# 예제1
names = ['kim','pakr','cho','lee','choi','yoo']

for name in names :
    print ('You are : ', name)

# 예제2
lotto_number = [12, 19, 21, 28, 36, 37]

for n in lotto_number :
    print ("current number : ", n)

# 예제3
word = "beautiful"

for s in word :
    print('word : ', s)

# 예제4
my_info = {
    "name" : "lee",
    "age" : 33,
    "city" : "seoul"
}

for k in my_info:
    print('key :', k , my_info[k])

for v in my_info.values():
    print('value :', v)


# 예제5
# if와 for같이쓰기

name = 'FineAppLE'

#isupper 대문자인지 / islower 소문자인지
for n in name :
    if (n.isupper()):
        print(n)
    else:
        print(n.upper()) #대문자로 출력

# break
numbers = [14, 3, 4, 7, 10, 24, 17, 2, 33, 15, 34, 36, 38]

for num in numbers:
    if num == 34 :
        print ('Found 34!')
        break; #36, 38 은 실행되지 않도록.
    else :
        print('Not Found :', num)


# continue

lt = ["1", 2, 5, True, 4.2, complex(4)] #여러가지자료형
#boolean을 빼고 출력하기
for v in lt :
    if type(v) is bool:
        continue #들여쓰기 생각해놓자 JAVA와다름.
    print("current type :", v,"의 타입은 ", type(v))
    print("multiply by 2:", v*3) # 참고로 true*3=1

# for - else
numbers = [14, 3, 4, 7, 10, 24, 17, 2, 33, 15, 34, 36, 38]

for num in numbers :
    if num == 49 :
        print("Found : 49")
        break
else :
    print("Not Found: 49")
    # for문이 다돌고 break를 만나지 않으면(이 경우 49를 찾지못하면)
    # 마지막에 for-else가 실행된다.

# 구구단 출력 2~9단
for i in range(2,10):
    for j in range(1,10):
        #print(i,"*",j,"= ", i*j)
        print('{:4d}'.format(i*j), end='') #4자리 정수로 출력, end=''
    print()

# 변환 예제
name2 = 'Aceman'
print('reversed :', reversed(name2))
print('reversed :', list(reversed(name2)))
print('Tuple :', tuple(reversed(name2)))
print('set :', set(reversed(name2))) #순서X

'python_basic' 카테고리의 다른 글

[파이썬] 사용자로부터 입력받기 / input  (0) 2020.11.23
[파이썬] 함수 / 람다 (lambda)  (0) 2020.11.23
[파이썬] while문 / while-else  (0) 2020.11.21
[파이썬] if문  (0) 2020.11.21
[파이썬] 집합 ([]) {,}  (0) 2020.11.21
[파이썬] 딕셔너리 { : }  (0) 2020.11.21
[파이썬] 튜플 ()  (0) 2020.11.21
# chapter04_01
# if 실습

import sys
import io

sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')
#한글깨짐 방지

# 기본형식
print(type(True)) #0이 아닌 수, "abc", [1,2,3..] (1,2,3..)
print(type(False)) # 0, "", [], (), {} 비어있음.

# 예1

if True : # if 'a',
    print('good')

if False : # if '',
    print('bad')


# 예2) if-else
if False :
    print('Bad!')
else :
    print('good!')


# 예3) 연산자와 if문

# 관계연산자
# >, <=, <, >=, ==, !=

x=15
y=10

# 양변이 같은 경우
print(x == y)
# 양변이 다른 경우
print(x != y)
# 왼쪽이 클 경우
print(x>y)
#오른쪽이 크거나 같을 경우
print(x <= y)

city=""

if city:
    print("You are in:", city)
else :
    print("please enter your city")



city2="seoul"

if city2:
    print("You are in:", city2)
else :
    print("please enter your city")


# 논리 연산자
# and, or, not


a = 75
b = 40
c = 10


print('and : ', a > b and b > c)
print('or : ', a > b or b > c);
print('not : ', not a > b)
print('not : ', not b < c)


# 산술, 관계, 논리 우선순위
# 산술 > 관계 > 논리
print('e1 : ' , 3+12>7+3)
print('e2 : ', 5+ +10 *3 > 7+3*20)
print('e3 : ', 5+10 > 3 and  not 7+3==10)
# 1) 5+10, 7+3
# 2) 15>3 10==10
# 3) true and not True


sc1=90
sc2='A'

# 예4)
# 복수의 조건이 모두 참일 경우에 실행
# tap키 or 4번 space

if sc1 >=90 and sc2 =='A' :
    print('Paa')
else :
    print('Fail')

# 예5)
id1 = 'vip'
id2 = 'admin'
grade = 'platinum'

if id1 =='vip' or id2 =='admin' :
    print('관리자입장')

if id2 == 'admin' and grade == 'platinum' :
    print('최상위관리자')

# 예6)

num = 90

if num>=90 :
    print('Grade : A')
elif num >=80 :
    print('Grade : B')
else :
    print('과락')

# 예7)
# 중첩 조건문
Grade ='A'
total = 95

if Grade == 'A':
    if total >=90:
        print('장학금 100%')
    elif total >=80:
        print('장학금 80%')
    else :
        print('장학금 50%')
else :
    print('장학금 없음')


# in, not in.

q = [10,20,30]
w = {70,80,90,100}
e = {"name" : "Lee", "city" : "seoul", "grade" : "A"}
r = (10, 12,14)

print(15 in q)
print("seoul" in e.values())

'python_basic' 카테고리의 다른 글

[파이썬] 함수 / 람다 (lambda)  (0) 2020.11.23
[파이썬] while문 / while-else  (0) 2020.11.21
[파이썬] for문 / for-else / reversed / range  (0) 2020.11.21
[파이썬] 집합 ([]) {,}  (0) 2020.11.21
[파이썬] 딕셔너리 { : }  (0) 2020.11.21
[파이썬] 튜플 ()  (0) 2020.11.21
[파이썬] 리스트 []  (0) 2020.11.13
# chapter03_06
# 집합(set)
# 집합 (순서X, 중복X, 추가 및 삭제 O)


# 선언

a = set()
print(a)
b = set([1,2,3,4])
c = set([1,4,5,6])
d = set([1,2,'pen','cap','plate'])
e = {'foo','bar','baz','foo','qux'} #key가없이 원소만 나열한다면 SET
f = {42, 'foo', (1,2,3), 3.14159}

# 출력
print ('a-',type(a),a, 2 in a )
print ('b-',type(b),b, 2 in b )
print ('c-',type(c),c)
print ('d-',type(d),d)
print ('e-',type(e),e)
print ('f-',type(f),f, 2 in f )


# 튜플 변환 (Set>>tuple)
print()
t=tuple(b)
print('t-',t)
print(type(t))
print('t-', t[0], t[1:3])


# 리스트 변환
l = list(c)
l2 = list(e)
print('l-', l, type(l))
print('l2-', l2, type(l2))


# 길이
print(len(a))
print(len(b))
print(len(c))
print(len(d))
print(len(e))
print(len(f)) #갯수/ 중복xxx


# 집합 자료형 활용
# 교집합.
s1 = set([1,2,3,4,5,6])
s2 = set([4,5,6,7,8,9])
print('s1 & s2 :' ,s1 & s2)
print('s1 & s2 :' ,s1.intersection(s2))
# 합집합.
print('s1 | s2 : ', s1|s2)
print('s1 | s2 : ', s1.union(s2))
# 차집합
print('s1 - s2 : ', s1 - s2)
print('s1 - s2 : ', s1.difference(s2))
# 중복원소가 있는지 알려주는 함수
print('s1 & s2 ', s1.isdisjoint(s2)) #False 일떄 교집함이 있다는뜻!! (dis)
# 부분 집합 확인
print('subset : ', s1.issubset(s2))
print('superset : ',s1.issuperset(s2))


# 데이터 추가/삭제.
s1 = set([1,2,3,4])
s1.add(5)
print(s1)
s1.remove(2)
print(s1)
# remove로 없는 원소를 삭제하려고 하면 Key error 라는 에러가 나타난다
s1.discard(3)
print(s1)
s1.discard(7) # 없는 원소를 삭제하려고 해도 에러X (예외발생X)
s1.clear() #전부삭제(리스트도마찬가지임)
print(s1)
# 챕터03_5
# 파이썬 딕셔너리
# 범용적으로 가장 많이 사용
# 딕셔너리 자료형 (순서X, 키 중복X, 수정O, 삭제O)


# 선언 / a= (튜플), [리스트], {딕셔너리}
ex = {'key': 'value'}
a = {'name' : 'kim', 'phone' : '01011111111', 'birth' : '870514'}
b = {0 : 'hello python'}
c = {'arr' : [1,2,3,4,5]}
d = {
    'Name' : 'Niceman',
    'City' : 'Seoul',
    'Age'  : 20,
    'Grage': 'A',
    'status' : True
}

# 자주쓰이진 않지만 리스트안에 튜플 형태로 선언하기도 한다. (불편..)
e = dict([
    ('Name', 'Niceman'),
    ('City', 'Seoul'),
    ('Age', 20),
    ('Grage', 'A'),
    ('status', True)
])

f=dict(
    name='niceman',
    city='Seoul',
    age = 20,
    grade = 'A',
    status = True
)


# 타입
print('>>>>>>>')
print('a  - ', type(a), a)
print('b  - ', type(b), b)
print('c  - ', type(c), c)
print('d  - ', type(d), d)
print('e  - ', type(e), e)
print('f  - ', type(f), f)
print()

# 출력
print('>>>>>>>')
print('a  - ', a['name'])           # 키가 존재 X > 에러발생
print('a  - ', a.get('name'))       # 키가 존재 X > NONE으로 처리
print('b  - ', b[0])
print('b  - ', b.get(0))
print('f  - ', f.get('city'))
print('f  - ', f.get('age'))
print()

# 딕셔너리 추가
print('>>>>>>>')
a['address'] = 'seoul'
a['name'] = 'jin'  # 원래 있던 값(name)을 추가하면 수정해버린다 (kim>jin)
a['rank'] = [1,2,3]
print('a  - ', a)
print()

# 딕셔너리 길이 확인
print('>>>>>>>')
print('a  - ', len(a)) #키의 갯수
print('b  - ', len(b))
print('c  - ', len(c))
print('d  - ', len(d))
print('e  - ', len(e))
print('f  - ', len(f))
print()


# dict_keys, dict_values, dict_items  : 반복문(__iter__)에서 사용가능
print('>>>>>>>')
# .keys() 키값들만 가져온다.
print('a  - ',  a.keys())
print('c  - ',  c.keys())
print('d  - ',  d.keys())
print('e  - ',  e.keys())
print('e  - ',  list(e.keys()))
print('a  - ',  list(a.keys()))
#.values 밸류값만 가져온다.
print('c  - ',  c.values())
print('d  - ',  d.values())
print('e  - ',  e.values())
#.itmes 키와 밸류값을 가져온다.
print('c  - ',  c.items())
print('d  - ',  d.items())
print('e  - ',  e.items())
print('e  - ',  list(e.items()))
print('d  - ',  list(d.items()))
print()
print('>>>>>>>')
print('a  - ', a.pop('name'))
print('a  - ', a)
print('c  - ', c.pop('arr'))
print('c  - ', c)
print()
print('f  - ', f.popitem())
print('f  - ', f)
print('f  - ', f.popitem())
print('f  - ', f)
print('f  - ', f.popitem())
print('f  - ', f)
print('f  - ', f.popitem())
print('f  - ', f)
print('f  - ', f.popitem())
print('f  - ', f)
print()
print('a  - ', 'birth' in a ) # birth라는 키가 a에 있는가.
print('a  - ', 'city' in b)


#수정.
print('>>>>>>>')

a['test']='test_dict'
print('a  - ', a)

a['test']='test_dict2'
print('a  - ', a)

a.update(test='test_dict3')
print('a  - ', a)

temp = {'test' : 'test_dict4'}
a.update(temp)
print('a  - ', a)
#chapter03_04
# 파이썬 튜플
# 리스트와 튜플 비교
# 튜플 자료형( 순서와 중복은 가능하지만, 수정과 삭제가 불가능(del/remove)_리뮤테이블

# 선언

t1 = ()
t2 = (1, 2)
t3 =(1,)  # 1개는 끝이 , 로 끝나야 tuple로 인식한다 (1)=int
t4  = 1, 2, 3



a=()
b=(1,)
c=(11,12,13,14)
d=(100, 1000, 'Ace', 'Base', 'Captain')
e=(100, 1000, ('Ace', 'Base', 'Captain'))

# 인덱싱
print('>>>>>>>>>')
print('d - ' ,d[1])
print('d - ' ,d[0]+d[1]+d[1])
print('d - ', d[-1])
print('e - ', e[-1]) #튜플반환
print('e - ', e[-1][1])

print('chane list - ', list(e[-1][1]))


# 수정xxx
# d[0] = 1500

# 슬라이싱
print('>>>>>>>>>')
print('d - ', d[0:3])
print('d - ', d[2:])
print('e - ', e[2][1:3])

# 튜플 연산
print('>>>>>>>>>')
print('c+ d - ', c+d)
print('c * 3 - ', c*3)

# 튜플 함수
print('>>>>>>>>>')
a = ( 5, 2, 3, 1, 4)
print('a - ',a)
print('a - ', a.index(3)) #3의 위치
print ('a - ', a.count(2)) # 2의 갯수

# 팩킹 & 언팩킹

# 팩킹 ( 하나로 묶는다 )

t = ('foo','bar','baz','qux')
print(t)


# 언팩킹1
(x1, x2, x3, x4) = t #()없어도 가능, 하지만 언팩킹을 알려주기위해 ()를 쓰는편,
print(type(x1), type(x2), type(x3), type(x4) ) #str
print(x1, x2, x3, x4)


# 팩킹&언팩킹1

t2 = 1, 2, 3 #괄호가 없어도 튜플임
t3 = 4, 3
x1, x2, x3 = t2
x4, x5, x6 = 4, 5, 6

print(t2)
print(t3)
print(x1, x2, x3)
print(x4, x5, x6)

'python_basic' 카테고리의 다른 글

[파이썬] if문  (0) 2020.11.21
[파이썬] 집합 ([]) {,}  (0) 2020.11.21
[파이썬] 딕셔너리 { : }  (0) 2020.11.21
[파이썬] 리스트 []  (0) 2020.11.13
[파이썬] 문자형 자료의 연산과 함수, 슬라이싱  (0) 2020.11.11
[파이썬] 숫자형 자료와 연산  (0) 2020.11.08
[파이썬] 변수의 선언  (0) 2020.11.08
# Chapter03_03.py
# 리스트
# 자료구조에서 중요

# 리스트 자료형 (순서, 중복, 삭제 가능)



### 선언
a = []
b = list()
c = [ 70, 75, 80, 75] # print(len(c))=4
d = [1000, 10000, 'Ace', 'Base', 'Captine'] # 서로 다른 자료형도 가능
e = [1000, 10000, ['Ace', 'Base', 'Captine']] # 리스트 in 리스트
f = [21.42, 'foobar', 3, 4, False, 3.14159]



# 인덱싱
print('>>>>>>>>>')
print(' d - ', type(d), d)
print(' d - ', d[1])
print(' d - ', d[0] + d[1] + d[1])
print(' d - ', d[-1]) # 맨 오른쪽
print(' e - ', e[-1][1])
print(' e - ', list(e[-1][1])) # 문자열을 리스트 형태로 형변환 가능


# 슬라이싱
print('>>>>>>>>>')
print('d - ', d[0:3])
print('d - ', d[2:])
print('e - ', e[-1][1:3])


# 리스트 연산 (리스트+리스트=리스트)
print('>>>>>>>>>')
print('c + d =', c+d)
print('c * 3 =', c*3) #리스트*정수= 리스트, 리스트연산의 결과 = 리스트
# print("'Test' + c[0] = ", 'test'+c[0]) #type error
print("'Test' + c[0] = ", 'test'+str(c[0]))


# 값 비교
print('>>>>>>>>>')
print(c == c[:3] + c[3:])
print(c)
print(c[:3])
print(c[3:])

# 같은 identity(id)
print('>>>>>>>>>')
temp = c
print(temp, c)
print(id(temp))
print(id(c))    # 파이썬이 속도와 쾌적한 환경을 제공하기 위해 리스트도 같은값 = 같은id

# 리스트 수정, 삭제
print('>>>>>>>>>')
c[0] = 4
print('c - ', c)
print(c[1:2])  #c[1]
c[1:2] = ['a', 'b', 'c']
print('c - ', c)
c[1:2] = [['a', 'b', 'c']] # = c[1]=['a', 'b', 'c']
print('c - ', c)
c[1:3] = []
print('c - ', c)

# 제거/삭제
print('>>>>>>>>>')
del c[2]
print('c - ', c)


# 리스트 함수
print('>>>>>>>>>')
a = [5, 2, 3, 1, 4]
print('a - ', a)
#a[5] = 10 에러, 추가시엔 append 함수!
a.append(10)
print('a - ', a)
a.sort() # 파이썬 리스트 오름차순 정렬
print('a - ', a)
a.reverse()  #역순으로 정렬 (내림차순 X)
print('a - ', a)
print('a - ', a.index(4), a[4]) # 인덱스로 가져오기
a.insert(2,7) #0,1,2번째(숫자론세번째)  자리에 7을 넣고 나머지는 뒤로 민다 (삽입)
print('a - ', a)
a.remove(1) #del a[6]와 같다. 인덱스 제거가 아닌 값으로 제거.
print('a - ', a)
print('a - ', a.pop())
#기존의 리스트에서 마지막에 있던 값을 꺼내오고 그 값을 삭제
# LAST IN FIRST OUT
# 접시를 쌓아놓고 맨 위에 쌓인(마지막에 놓은) 것을 먼저 쓰는 것을 생각하면 이해가 쉽다.
# ex) 웹 브라우저에서 뒤로가기를 누르면 바로 전 페이지로 가는 것과 같다
print('a - ', a)
print('a - ', a.count(4)) # 리스트 안에 값 '4'가 몇개인지, 있는지 없는지 확인할때 (=값 0)


ex=[8,9]
a.extend(ex) #뒤에 다른 리스트를 붙여줌
print('a - ', a)

#### 삭제 : remove, del, pop

# 반복문을 이용한 pop

while  a:
    data =a.pop()
    print(data)
# chapter03_02
# 파이썬 문자형

# 문자열 생성
str1= "I am Python"
str2= 'python'
str3= """How are you?"""
str4= '''Thank you'''

print(type(str1), type(str2), type(str3), type(str4))
print(len(str1)) #문자열의 길이

# 빈문자열
str1_t1="" # or str_t1=''
str2_t2 = str()

print(type(str1_t1), len(str1_t1))
print(type(str2_t2), len(str2_t2)) # 둘다 STR, 길이는 0


# 이스케이프 문자 사용 # 탈출 문자
# I'm Boy >> '
print("I'm Boy")  #print('I'm Boy')
print('I\'m Boy')
print('\' , \\ , \t tap, \n enter')
#등등등, 자바와 같은 느낌, 이스케이프 문자 검색해보기
escape_str1="do you have a \"retro games?\""
print(escape_str1)
escape_str2='what\'s on TV?'
print(escape_str2)
# 탭, 줄바꿈
t_s1= "click \t start!"
t_s2="new Lint \n check!"
print(t_s1)
print(t_s2)
print()
# Raw String -  있는 그대로 표시해준다
raw_s1=r'd:\python\test'
print(raw_s1)
print()

# 멀티라인 입력
# 역슬래시를 사용하면 유용하다
multi_str= \
"""
String
multi Line
test
"""
multi_str2="""
string
multi Line
test2
"""

print(multi_str)
print(multi_str2)
print()


# 문자열 연산 (String에서 in 연산자를 쓸 수 있다는 점을 기억하자)
str_o1= "python"
str_o2= "Apple"
str_o3= "How are you doing"
str_o4= "Seoul Daejeon busan"

print(str_o1 * 3 ) #세번반복되서 출력
print(str_o1 + str_o2)
print('y' in str_o1) # str_o1안에 y가 있어? (True/False) > 시퀀스 형에 사용가능
print('P' not in str_o2) #대문자 소문자 구별함
print()

# 문자열 형변환
print(str(66), type(str(66))) # 문자66을 의미.
print(str(10.1), type(str(10.1)))
print(str(True), type(str(True)))
print()


# 문자열 함수 (upper, iaalnum, startswith, count, endswith, isalpha ... )
print("Capitalize : ", str_o1.capitalize()) #첫글자를 대문자로 바꿔준다.
print("endswith? : ", str_o2.endswith("e")) #마지막 문자가 무엇인지 체크 boolean (ex 마침표)
print("replace : ", str_o1.replace("py","PPYY")) #바꿔줌
print("sorted : ", sorted(str_o1)) # 리스트 형태로 반환
print("split : ", str_o4.split(" ")) # 기준을 정해서 그것을 기준으로 리스트로 반환
print()

# 반복(시퀀스)
im_str= "good boy!"

print(dir(im_str)) #__iter__(반복) #im_str에서 사용하는 모든 것 나열

#출력 (슬라이스 가능)
for i in im_str :  print(i)
print()


# 슬라이싱
str_s1 = "Nice Python"
print(len(str_s1))
# 슬라이싱 연습
print(str_s1[0:3]) # 0 1 2
print(str_s1[:3]) # 처음부터 세개. 위에거랑 같음
print(str_s1[5:11])
print(str_s1[5:]) # 5부터 끝까지, 위에거랑 같음
print(str_s1[:len(str_s1)]) #끝부분의 길이를 모를때는 len이용 #[:11]
print(str_s1[:len(str_s1)-1]) #[:10]
print(str_s1[1:9:2]) # 세번째 인수는 단위, 몇개단위로 출력
print(str_s1[-5:]) #뒤에서는 -1부터 시작한다
print(str_s1[1:-2])
print(str_s1[::2]) #처음부터 끝까지 2칸간격으로
print(str_s1[::-1]) #역으로 출력됨
print()

# 아스키코드(또는 아스키코드)
a ='z'

print(ord(a)) # 아스키코드로,
print(chr(122)) # 문자로,
# chapter03_1
# 숫자형

# 파이썬 지원 자료형
"""

int : 정수
float : 실수
complex : 복소수
bool : 불린
str : 문자열(시퀀스)
list : 리스트(시퀀스)
tuple : 튜플(시퀀스)
set : 집합
dict : 사전
:
:
"""

# 데이터타입

str1 = "Python"
bool = True
str2 = 'Anaconda'
float_v = 10.0 # 10 != 10.0
int_v = 7
dict = {
    "name" : "Machine Learning",
    "Version" : 2.0
    # key : value
}

# 괄호모양에 따라 타입이 달라지므로 주의
tuple = (7, 8, 9)
tuple = 7, 8, 9
set = {3,5,7}
list = [str1, str2]

# 데이터타입출력

print(type(str1))
print(type(bool))
print(type(str2))
print(type(float_v))
print(type(list))
print(type(int_v))
print(type(dict))
print(type(tuple))
print(type(set))



# 숫자형 연산자
"""

+
-
*
/
// : 몫만
% : 나머지
abs(x) : 절대값
pow(x,y) : x의 y제곱 , x**y 도 같은뜻

"""
print()

# 정수선언
i=77
i2 = -14
big_int = 7777777777777777777777777777777777777777777777777777777777777
# 자바와 달리 큰수도 값을 집어넣을 수 있다

# 정수출력
print(i)
print(i2)
print(big_int)
print()

# 실수 선언
f = 0.9999
f2 = 3.141592
f3 = -3.9
f4 = 3/9

# 실수출력
print(f)
print(f2)
print(f3)
print(f4)
print()




# 연산실습
i1=39
i2=939
big_int1 = 77777777777777777777777777777777777777777777777777777
big_int2 = 23948293482938492308490238490328490238490238490238492
f1 = 1.234
f2 = 3.23948293482938492308490238490328490238490238490238492

# +
print(">>>>>>>>>>> + ")
print("i1 + i2 : ", i1+i2 )
print("f1 + f2 : ", f1+f2)
print("big_int1 + big_int2 : ", big_int1+big_int2)

# *
print(">>>>>>>>>>> * ")
print("i1 * i2 : ", i1*i2 )
print("f1 * f2 : ", f1*f2)
print("big_int1 * big_int2 : ", big_int1*big_int2)
print()


# 형변환 실습
a = 3.
b = 6
c = .7
d = 12.7

# 데이터타입출력
print(type(a),type(b),type(c),type(d))

# 형변환
print(float(b))
print(int(c))
print(int(d))
print(int(True)) # True=1, False=0
print(float(False))
print(complex(3))
print(complex('3')) #문자형 > 숫자형으로 바꾼 다음에 실행됨 (똑똑)
print(complex(False))
print()

# 수치연산 함수
print(abs(-7))

x,y = divmod(100,8)
print(x,y) #몫과 나머지

print(pow(5,3))
print(5**3)
print()

# Math 외부 모듈

import math

print(math.pi)
print(math.ceil(5.1)) # x이상의 수 중에서 가장 작은 정수 
#chapter02-2
#파이썬 변수

#기본선언
n=700
print(n)
print(n*700)
print(type(n)) #타입함수 자료형 알려줌
print()
#동시선언
x = y = z = 700
print(x,y,z)
print()

#선언과재선언
ver=75
ver ='changer value'
print(ver)
print(type(ver)) #마지막에 선언한 것이 재선언되서 덮어쓰기됨
print()

# Object Reperences
# 변수의 값이 할당 상태일 때

# 예1)
print(300)
#변수로 할당되지 않은 수 300
# 1.타입에 맞는 오브젝트를 생성하고 > print(int(300)) 이라고 자동으로해줌
# 2.값을 생성하고
# 3.콘솔출력

n=777
print(n, type(n))
print()


# Id(identity)확인 : 객체의 고유값 확인

m=800
n=655

print(id(m)) #Object의 고유값/id값
print(id(n))
print(id(m)==id(n)) #false
print()

m=800
n=800
print(id(m))
print(id(n))
print(id(m)==id(n)) #true
# 파이썬엔진은 이름은 다르지만 값이 같다면 하나의 인스턴스로 취급한다
# 원활하고 빠른 프로젝트 흐름을 위해서
print()


# 다양한 변수선언

# 1. camelCase 처음에는 소문자 단어시작마다 대문자 = method
# studentGrade
# 2. PascalCase 첫글자도 대문자 단어시작마다 대문자 = class
# StudentGrade
# 3. snakeCase 띄어쓰기는 _로 표현, 파이썬에서 많이 사용한다
#student_grade

age =1
Age = 2
aGe = 3
AGE = 4
a_g_e = 5
_age =6
age_ =7
_AGE_ = 8

#특수문자나 숫자로 시작하는 변수는 X


#예약어는 변수명으로 불가능
# ex) for, as, class,
# python reserved words list

blog.naver.com/kiddwannabe/221962353074

#chapter02-1
#파이썬 완전 기초
#print 사용법

#기본출력
print('Python Start')
print("Python Start")
print()
print()
print('''Python Start''')
print("""Python Start""")
print()


#seperator 옵션
print('p','y','t','h','o','n',sep='')
print('010','1111','7777',sep='-')
print('python','google.com',sep='@')
print()


#end옵션
print('welcome to', end='      ')
print('IT News', end='')
print('Web Site')


#File 옵션
import sys

print('Learn Pythone', file=sys.stdout) #stdout=콘솔아웃
print()

#format 사용 (d=정수, s=문자열, f=실수, o, x)
print('%s %s' %('one', 'two')) # 정확하게 문자열만 와야한다
print('{} {}'.format('one','2')) #포맷함수가 내부적으로 String인지 숫자인지 구별해줌
print('{1} {0}'.format('one','two')) #INDEX

print()

# %s
print('%10s' % ('nice')) #숫자가오면 자릿수를 의미
print('{:>10}'.format('nice'))

print('%-10s' % ('nice')) #음수가 오면 오른쪽으로 채운다
print('{:10}'.format('nice')) #생략하면 오른쪽을 공백으로 채운다

print('{:*>10}'.format('nice')) # 공백이 *로 채워진다
print('{:^10}'.format('nice')) # 중앙정렬

print('%.5s' % ('nice'))
print('%.5s' % ('pythonstudy'))
print('{:10.5}'.format('pythonstudy'))
print()


# %d
print('%d %d' % (1,2))
print('{} {}'.format(1,2))
print('%4d' % (42))
print('{:4d}'.format(42))
print()


# %f

print('%f' % (12.123445677777)) #소수 여섯재 짜리까지 나온다.
print('%03.10f' % (10002.123445677777))
print('{:f}'.format(12.123445677777))
print('%06.3f' % (12.123445677777))
print('{:06.2f}'.format(12.123445677777))
print()

chapter01_02.txt
0.00MB

Mac OS 환경 1. 파이썬 설치 참고

- https://dejavuqa.tistory.com/60

- https://blockdmask.tistory.com/341

- https://eunguru.tistory.com/28

 

2. Atom Editor & 파이썬 연동 참고

- https://ddolbah.tistory.com/5

- https://github.com/TeamLab/Gachon_CS50_Python_KMOOC/blob/master/desc/atom_macos.md

 

(파이썬 선택 실행)

- https://stackoverflow.com/questions/35546627/how-to-configure-atom-to-run-python3-scripts

 

3. 터미널 등록

- https://stackoverflow.com/questions/22390709/how-to-open-atom-editor-from-command-line-in-os-x

 

4. 한글 깨짐

import sys import io

sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')

sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')


5. 콘솔 폰트 사이즈

.script-view .line {
font-size: 16px;
}

+ Recent posts