파이썬->기본

파이썬->주식 기본

         -> 함수/클래스

         ->UI

파이썬->데이터처리

         ->분석

         ->시각화

 

파이썬->deep

         ->챗봇

Deep->python

       ->keras

       ->텐서플로우

 

1. 파이썬 소개

인스톨 나우 해준다.

https://www.python.org 

불러오는 중입니다...

https://docs.python.org/3.8/tutorial/index.html 

 

The Python Tutorial — Python 3.8.2 documentation

The Python Tutorial Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python’s elegant syntax and dynamic typing, together with its int

docs.python.org

https://docs.python.org/ko/3.8/tutorial/index.html 

불러오는 중입니다...

IDLE를 실행 해준다.

NEW File 실행

run-> F5

 

요즘은 플라스크로 웹개발을 한다.

 

 

터틀 그래픽

- 화면에서 거북이를 이용하여 그림을 그리는 기능. 거북이가 펜을 가지고 있고, 사용자가 화면에서 거북이를 움직이면 그림이 그려진다. 

 

import turtle
t=turtle.Turtle()

#커서 모양을 거북이 모양으로 바꿔달라.
t.shape("turtle")

t.forward(100)
t.left(90)
t.forward(100)

j

터틀 데모 코드를 확인 할 수 있다.

 

스크립트(script mode) 모드 

코드가 복잡해지면 인터프리터 모드는 번거롭다 

*인터프리터: 원시 언어의 명령을 번역 실행하는 프로그램

텍스트 에디터를 이용하여 명령어들을 파일에 저장한 후에  파일을 읽어서 명령어들을 하나씩 실행하는 방법이 있다.  명령어들이 저장된 파일을 소스 파일(source file) 

예)

소스파일을 만들 때 뒤에 _이니셜을 해준다.

 

 

다크모드로 바꿔주기

Options-> Settings->IDLE Dark 로 바꿔줌

 

함수 오류

 

1) 프로그램은 컴퓨터에 내리는 명령으로 이루어지는 작업지시서.  
2) 다양한 종류의 프로그래밍 언어가 있고 파이썬도 프로그래밍 언어의 일종.  
3) 파이썬은 http://www.python.org 웹사이트에서 다운로드받아서 설치할 수 있다.  
4) IDLE은 파이썬으로 프로그램을 작성하기 위한 개발 환경이다.  
5) 파이썬에서 산술 계산을 하는 연산자에는 +, -, *, /가 있다.  
6) print()는 화면에 문자열이나 계산 결과를 출력할 수 있다. 
7) 스크립트 모드를 사용하면 코드를 파일에 저장하였다가 한꺼번에 실행할 수 있다

 

 

import turtle
colors=["red","purple","blue","green","yellow","orange"]
t=turtle.Turtle()

turtle.bgcolor("black")
t.speed(0)# 숫자가 크면 느려진다.
t.width(3)
length=10

while length<500: # 500 보다 작을 때 까지 반복시켜라
    t.forward(length) # 조건이 만족 되면 앞으로 10 전진시킨다.
    t.pencolor(colors[length%6]) #선 색을 변경 시킨다(pencolor())
    t.right (89) # 시계 방향으로 89도 틀어라
    length += 5 # 이동거리를 5 더해라
    
    
#터틀 그래픽의 명령어 단축 가능  
forward( ) => fd( ) 
left( ) => lt( ) 
right( ) => rt( ) 

 

 

2. 변수소개

 

사용자로부터 정수 입력 받기(input())

파이썬에서 사용자로부터 무엇인가를 입력받을 경우 사용. 

사용자의 입력을 무조건 문자열 형태로 반환.                

연산을 위해 정수로 변환할 경우 int( ) 로 감싸야 한다.

 

3. 연산자

#몇 각형을 그리겠습니까?

import  turtle
t = turtle.Turtle()
t.shape("turtle")
n = int(input("몇각형을 그리시겠어요?: "))

for i in range(n): #입력 수 만큼 반복한다.
    t.forward(100) # 반복되는 문장을 들여쓰기 하여 적는다.
    t.left(360//n)
# 커피 가게 매출계산

americano_price=2000
cafelatte_price=3000
capucinos_price=3500

americanos = int(input("아메리카노 판매 개수:"))
cafelattes=int(input("카페라떼 판매 개수:"))
capucinos=int(input("카푸치노  판매 개수:"))

sales=americanos *americano_price
sales=sales+cafelattes*cafelatte_price
sales=sales+capucinos*capucinos_price

print("총 매출은", sales,"입니다.")
weigth = float(input("몸무게를 kg단위로 입력하시오 :"))
heigth = float(input("키를 미터 단위로 입력하시오 :"))

bml=(weigth/(heigth**2)) # 파이썬은 제곱을 **로 입력한다.
print("당신의 BML=",bml)
#알고리즘의 가장 기초 단계
# 자동판매기 프로그램
money=int(input("투입된 돈 : "))
price=int(input("물건 값:"))

change=money-price
print("거스름돈:",change)
coin500s=change//500 #500으로 나누어서 몫이 500원짜리의 개수
change-change%500 # 500으로 나눈 나머지를 계산한다.
coin100s=change//100 #100으로 나누어서 몫이 100짜리의 개수

print("500원 동전의 개수:",coin500s)
print("100원 동전의 개수:",coin100s)

 

파이썬으로 무엇을 할 수 있는가?

 

시스템 유틸리티 제작 
파이썬은 운영체제(윈도우, 리눅스 등)의 시스템 명령어들을 이용할 수 있는 각종 도구를 갖추고 있기 때문에 이를 바탕으로 갖가지 시스템 유틸리티 1를 만드는 데 유리하다. 실제로 여러분은 시스템에서 사용 중인 서로 다른 유틸리티성 프로그램들을 하나로 뭉쳐서 큰 힘을 발휘하게 하는 프로그램들을 무수히 만들어낼 수 있다. 

 

GUI 프로그래밍 
GUI(Graphic User Interface) 프로그래밍이란 쉽게 말해 윈도우 창처럼 화면을 보며 마우스나 키보드로 조작할 수 있는 프로그램을 만드는 것이다. 파이썬으로 GUI 프로그램을 만드는 것은 다른 언어를 이용해 만드는 것보다 훨씬 쉽다. 대표적인 예로 파이썬 프로그램을 설치할때 함께 설치되는 기본 모듈인 Tkinter(티케이인터)를 이용해 만드는 GUI 프로그램을 들 수 있다. 실제로 Tkinter를 이용한 파이썬 GUI 프로그램의 소스 코드는 매우 간단하다. Tkinter를 이용하면 단 5줄의 소스 코드만으로도 윈도우 창을 띄울 수 있다. 놀랍지 않은가! 
※ 파이썬에는 wxPython, PyQT, PyGTK 등과 같이 Tkinter보다 빠른 속도와 보기 좋은 인터페이스를 자랑하는 것들도 있다. 


C/C++와의 결합 
파이썬은 접착(glue) 언어라고도 부르는데, 그 이유는 다른 언어들과 잘 어울려 다른 언어와 결합해서 사용할 수 있기 때문이다. C나 C++로 만든 프로그램을 파이썬에서 사용할 수 있으며, 파이썬으로 만든 프로그램 역시 C나 C++에서 사용할 수 있다. 

 

웹 프로그래밍 
일반적으로 익스플로러나 크롬, 파이어폭스와 같은 브라우저를 이용해 인터넷을 사용하는데, 누구나 한 번쯤 웹 서핑을 하면서 게시판이나 방명록에 글을 남겨 본 적이 있을 것이다. 그러한 게시판이나 방명록을 바로 웹 프로그램이라고 한다. 파이썬은 웹 프로그램을 만들기에 매우 적합한 도구이며 실제로 파이썬으로 제작된 웹사이트는 셀 수 없을 정도로 많다. 


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


데이터베이스 프로그래밍 
파이썬은 사이베이스(Sybase), 인포믹스(Infomix), 오라클(Oracle), 마이에스큐엘(MySQL), 포스트그레스큐엘(PostgreSQL) 등의 데이터베이스에 접근할 수 있게 해주는 도구들을 제공한다. 
또한 이런 굵직한 데이터베이스를 직접 이용하는 것 외에도 파이썬에는 재미있는 모듈이 하나 더 있다. 바로 피클(pickle)이라는 모듈이다. 피클은 파이썬에서 사용되는 자료들을 변형없이 그대로 파일에 저장하고 불러오는 일들을 맡아 한다. 이 책에서는 외장 함수에서 피클을 어떻게 사용하고 활용하는지에 대해서 알아본다. 


데이터 분석, 사물 인터넷 
파이썬으로 만들어진 판다스(Pandas)라는 모듈을 이용하면 데이터 분석을 더 쉽고 효과적으로 할 수 있다. 데이터 분석을 할 때 아직까지는 데이터 분석에 특화된 "R"이라는 언어를 많이 사용하고 있지만, 판다스가 등장한 이후로 파이썬을 이용하는 경우가 점점 증가하고 있다. 사물 인터넷 분야에서도 파이썬은 활용도가 높다. 한 예로 라즈베리파이(Raspberry Pi)는 리눅스 기반의 아주 작은 컴퓨터이다. 라즈베리파이를 이용하면 홈시어터나 아주 작은 게임기 등 여러 가지 재미있는 것들을 만들 수 있는데 파이썬은 이 라즈베리파이를 제어하는 도구로 사용된다. 예를 들어 라즈베리파이에 연결된 모터를 작동시키거나 램프에 불이 들어오게 하는 일들을 파이썬으로 할 수 있다.

 

파이썬으로 할 수 없는 일 

시스템과 밀접한 프로그래밍 영역 
파이썬으로 도스나 리눅스 같은 운영체제, 엄청난 횟수의 반복과 연산을 필요로 하는 프로그램 또는 데이터 압축 알고리즘 개발 프로그램 등을 만드는 것은 어렵다. 즉, 대단히 빠른 속도를 요구하거나 하드웨어를 직접 건드려야 하는 프로그램에는 어울리지 않는다. 

 

모바일 프로그래밍 
파이썬은 구글이 가장 많이 애용하는 언어이지만 파이썬으로 안드로이드 앱(App)을 개발하는 것은 아직 어렵다. 안드로이드에서 파이썬으로 만든 프로그램들이 실행되도록 지원하긴 하지만 이것만으로 앱을 만들기에는 아직 역부족이다. 아이폰 앱을 개발하는 것 역시 파이썬으로는 할 수 없다. 

 

조건문 if

반복문 for

반복문 while

 

파이썬의 함수

 

 

파이썬

1)리스트

interest = ["삼성전자", "LG전자", "네이버"] 
interest[0]
#삼성전자
interest[1]
#LG전자
interest[2]
#네이버

daishin = [9130, 9150, 9150, 9300, 9400] # 정수
daishin = [9130.0, 9150.0, 9150.0, 9300.0, 9400.0] # 실수
mystock = ['Naver', 5000] # 문자와 숫자 리스트 가능
mystock = [] # 빈 리스트를 만든다.

 

인덱싱

daishin = [9130, 9150, 9150, 9300, 9400] 
daishin[-1] # 리스트의 뒤 쪽부터 마지막 번째
#9400

리스트 슬라이싱

 kospi_top10 = ['삼성전자', 'SK하이닉스', '현대차', '한국전력', '아모레퍼시픽', '제일모직', 
'삼성전자우', '삼성생명', 'NAVER', '현대모비스']
 kospi_top5 = kospi_top10[0:5] # 0번째부터 4번째까지
 kospi_top5 
 
 kospi_top10[5:] #5번부터 마지막까지
 #['제일모직', '삼성전자우', '삼성생명', 'NAVER', '현대모비스']

 kospi_top10[5:-1] 

데이터 삽입하기(append)

 kospi_top10 = ['삼성전자', 'SK하이닉스', '현대차', '한국전력', '아모레퍼시픽', '제일모직', 
'삼성전자우', '삼성생명', 'NAVER', '현대모비스'] 
kospi_top10.append('SK텔레콤')
kospi_top10 

#['삼성전자', 'SK하이닉스', '현대차', '한국전력', '아모레퍼시픽', '제일모직', '삼성전자우', '삼성생
명', 'NAVER', '현대모비스', 'SK텔레콤'] 

데이터 삽입하기(insert)

원하는 곳에 삽입 할 수 있다.

 kospi_top10 = ['삼성전자', 'SK하이닉스', '현대차', '한국전력', '아모레퍼시픽', '제일모직', 
'삼성전자우', '삼성생명', 'NAVER', '현대모비스']
 kospi_top10.insert(3, 'SK 텔레콤') 
 kospi_top10 
 
 #['삼성전자', 'SK하이닉스', '현대차', 'SK 텔레콤', '한국전력', '아모레퍼시픽', '제일모직', '삼성전
자우', '삼성생명', 'NAVER', '현대모비스'] 

데이터 개수를 확인하기(len)

kospi_top10 = ['삼성전자', 'SK하이닉스', '현대차', 'SK 텔레콤', '한국전력', '아모레퍼시픽', '제일모직', '삼성전
자우', '삼성생명', 'NAVER', '현대모비스'] 
 len(kospi_top10) # 리스트의 개수를 확인하기
 #11

 

데이터 삭제하기(del)

 kospi_top10[-1] 
 #현대모비스
 del kospi_top10[-1] 
 kospi_top10
 #['삼성전자', 'SK하이닉스', '현대차', 'SK 텔레콤', '한국전력', '아모레퍼시픽', '제일모직', '삼성전
자우', '삼성생명', 'NAVER'
 len(kospi_top10)
 #10

2)튜플

1) 리스트는 '[' 와 ']'를 사용하는 반면 튜플은 '('와 ')'를 사용한다.

2) 리스트는 리스트 내의 원소를 변경할 수 있지만 튜플은 변경할 수 없다. 

 

튜플 슬라이싱

 t 
('Samsung', 'LG', 'SK')
 t[0:2] 
 #('Samsung', 'LG')

3)딕셔너리

딕셔너리는 순서가 존재 하지 않는다.

인덱스 번호가 자동 부여 된다.

키(key)와 값(value)이라는 쌍으로 데이터를 구성해서 저장

 cur_price = {} #빈 딕셔너리 만들기
 type(cur_price) # 타입 알아보기
 #<class 'dict'> #딕셔너리 타입
 
 cur_price['daeshin'] = 30000 #키:deashin 값:30,000을 추가 합니다.
 cur_price 
 #{'daeshin': 30000} 
 
 cur_price['Daum KAKAO'] = 80000 
 cur_price
 # {'Daum KAKAO': 80000, 'daeshin': 30000} 
 len(cur_price)
 #2
 
 #추가한 데이터를 얻으려면 키 값을 사용
 cur_price['daeshin'] 
 #30000

딕셔너리 데이터 삽입

cur_price['naver'] = 800000 
cur_price 
#{'Daum KAKAO': 80000, 'naver': 800000, 'daeshin': 30000} 

딕셔너리 데이터 삭제

 del cur_price['daeshin'] 
 cur_price 
 #{'naver': 800000, 'Daum KAKAO': 80000} 

딕셔너리 키값만 불러오기

cur_price = {'Daum KAKAO': 80000, 'naver':800000, 'daeshin':30000} 
cur_price.keys() 
#dict_keys(['naver', 'Daum KAKAO', 'daeshin']) 

#리스트로 만들어서 반환
 list(cur_price.keys()) 
 #['naver', 'Daum KAKAO', 'daeshin'] 
 
#바인딩(묶기)
price_list = list(cur_price.values()) 
price_list
#[800000, 80000, 30000]

#들어있는지 확인하기
'Samsung' in cur_price.keys() 
#False

 

연습문제

 

#"환영합니다.","파이썬의 세계에 오신 것을 환영합니다","파이썬은 강력합니다."를 출력하세요
print("환영합니다")
print("파이썬의 세계에 오신 것을 환영합니다")
print("파이썬은 강력합니다")

print("반갑습니다. 파이썬!!")
print(2*3/10)
print("Hello","World","!!!")
#반갑습니다. 파이썬
#0.6
#Hello World !!!

#파이썬 쉘을 사용하여 한 주가 몇시간에 해당하는 지를 계산하시오
oneweek = 7
hours=24
result=oneweek*hours
print(oneweek*hours)
print( "한 주는 "+oneweek+"이고"+ "시간은"+hours+"입니다."+"따라서 결과는"+result)

#터틀 그래픽에서 거북이를 이동시켜서 다음과 같은 그림을 완성하시오,
#단, forward(), rigth(), left() 만을 이용.
import turtle
T=turtle.Turtle()
t.shape("turtle")
t.forward(100)
t.rigth(100)
t.forward(100)
t.left(100)
t.forward(100)

#터틀 그래픽에서 width( ) 함수를 호출하면 거북이가 그리는 선의 두께를 변경할 수 있다.
#거북이를 이동하여 다음과 같이 두께가 10인 선을 완성
import turtle
T=turtle.Turtle()
t.shape("turtle")
t. width(3)
t.forward(100)
t.rigth(100)

#터틀 그래픽에서 color( ) 함수를 호출하면 거북이가 그리는 선의 색상을 변경할 수 있다.
#색상을 파랑색으로 변경하여 다음과 같이 길이가 100 pixel 인 선을 완성.
import turtle
T=turtle.Turtle()
t.shape("turtle")
t. color("blue")
t.forward(100)

#터틀 그래픽에서 shape( )함수를 사용하면 거북이의 모양을 삼각형, 원, 사각형으로 변경할 수 있다.
#사각형으로 변경하고 100 pixel 길이의 직선완성.

import turtle
T=turtle.Turtle()
t.shape("square")
t.forward(100)

#터틀 그래픽에서 거북이가 이동할 때 선이 그려지지 않게 하려면
#t.up( ) 함수를 이용하여 펜을 들 수 있다.
#반대로 t.down( ) 함수는 펜을 내려놓는 함수.
#거북이를 화면 좌표(100, 200)으로 이동 시키려면 t.goto(100, 200) 와 같이 호출.
#이들 명령어를 조합하여 다음과 같은 그림을 완성.
import turtle
t=turtle.Turtle()
t.shape("turtle")

t.forward(100)
t.up()
t.goto(0,100)
t.down()
t.forward(100)

#터틀 그래픽에서 t.circle(100) 이라고 입력 후, 실행하면 화면에 반지름이 100인 원이 그려진다.
#이들 명령어를 조합하여 화면에 오륜기를 그리는 프로그램 작성
import turtle
t=turtle.Turtle()
t.shape("turtle")
t.speed(100)
t.circle(100)
t.up()
t.goto(100,0)
t.down()
t.circle(100)
t.up()
t.goto(200,0)
t.down()
t.circle(100)
t.up()
t.goto(80,-90)
t.down()
t.circle(100)
t.up()
t.goto(160,-90)
t.down()
t.circle(100)

#사용자한테 이름과 나이를 입력받고, 사용자의 나이가 100살이 되는 연도를
#화면에 출력하는 프로그램작성

name = input("이름을 입력하시오:")
age=int(intput("나이를 입력하시오:"))
year=2020 - age + 100
print(name"씨는" +year+"년에 100살이시네요!")

#사용자로부터 3개의 숫자를 받아서 평균을 계산하고, 결과를 출력하는 프로그램 완성
one=int(intput("첫번째 숫자를  입력하시오:"))
two=int(intput("두번째 숫자를 입력하시오:"))
three=int(intput("세번째 숫자를  입력하시오:"))

result=one+two+three/3

print(one,two,three+"의 평균은 "+result+"입니다.")

#사용자로부터 원의 반지름을 입력 받아서 원의 면적을 구하는 프로그램 완성.
circle=int(intput("원의 반지름을  입력하시오:"))
result=3.141592 * (circle**2)
print("반지름이"+circle+"인 원의 넓이 = "+result)

'''원의 반지름을 변수 radius에 저장. radius의 초기값은 50.
radius 변수를 20씩 증가시키면서 (0, 0) (100, 0) (200, 0) 좌표에 각각 원을 3개 완성.
단, 터틀 그래픽을 이용하고, 반복문은 사용하지 않는다'''

import turtle
t=turtle.Turtle()
t.shape("turtle")
t.speed(100)

radius=50
t.goto(0,0)
t.down()
t.circle(radius)
t.up()

radius=50+20
t.goto(100,0)
t.down()
t.circle(radius)
t.up()

radius=50+20+20
t.goto(200,0)
t.down()
t.circle(radius)


#삼각형의 한 변의 길이를 side 변수로 나타낸다.
#side 변수의 초기값은 100. side 변수를 이용하여 화면에 삼각형을 완성.
mport turtle
t=turtle.Turtle()
t.shape("turtle")

side=100
t.speed(100)
t.forward(side)
t.left(120)
t.forward(side)
t.left(120)
t.forward(side)
t.left(120)
#5번 문제에서 삼각형의 한 변의 길이를 side 변수로 표시.
#만약 삼각형 한변의 길이를 200으로 변경한다면 5번 코드에서 어디만 수정하면 되는가?
side=200

#다음과 같은 그림을 그리는 프로그램을 작성.
#이 때 작은 사각형의 한 변의 길이는 side 변수에 저장하고, 거북이가 회전하는 각도는 angle 변수에 저장.
import turtle
side = 100
ang = 90 #회전 각도
t=turtle.Turtle()
t.shape("turtle")

t.fd(side)
t.rt(ang)
t.fd(side)
t.rt(ang)
t.fd(side)
t.rt(ang)
t.fd(side)

t.fd(side)
t.rt(ang)
t.fd(side)
t.rt(ang)
t.fd(side)

t.fd(side)
t.lt(ang)
t.fd(side)
t.lt(ang)
t.fd(side)

t.fd(side)
t.lt(ang)
t.fd(side)
t.lt(ang)
t.fd(side)
t.lt(ang)
t.fd(side)

#사용자로부터 두 개의 정수를 입력 받아서 정수의 합, 차, 곱, 평균, 큰 수, 작은 수를 계산하여
#화면에 출력하는 프로그램을 작성
#파이썬이 제공하는 max(x, y) / min(x, y) 함수를 사용
x=int(intput("첫번째 숫자를  입력하시오:"))
y=int(intput("두번째 숫자를 입력하시오:"))

a=x+y
b=x-y
c=x*y
d=x+y/2

e=max(x, y)
f=min(x, y)

ptint(a,b,c,d,e,f)


#원기둥의 부피를 계산하는 프로그램을 작성.
#원기둥의 부피 공식 : V=원주율*반지름의 제곱*높이
radius=int(intput("반지름을 입력하시오:"))
heigth=int(intput("높이를 입력하시오:"))
cylinder=3.14**radius*heigth

#사용자로부터 정수를 입력 받아서 정수의 자리수의 합을 계산하는 프로그램 작성.
#예) 1234를 입력하였다면 1+2+3+4를 계산.
# 나머지 연산자와 나눗셈 연산자를 사용.

x=int(intput("첫번째 숫자를  입력하시오:"))

sum = 0
sum += num % 10
num //= 10
sum += num % 10
num //= 10
sum += num % 10
num //= 10
sum += num % 10
num //= 10

print("자리수의 합:", sum)

 

파이썬 제어문

day1 = 10000  
day2 = 13000 
(day2- day1) == (day1 * 0.3) 
#True

cur_price = 9980 
cur_price >= 5000 and cur_price < 10000 
#True
((day2- day1) == (day1 * 0.3)) or ((day2-day1) > (day1 * 0.292)) 
#True

파이썬 if문

#"위키북스의 현재가가 10,000원 이상이면 10주 매수
wikibooks_cur_price = 11000 
if wikibooks_cur_price >= 10000: 
print("Buy 10") 
#Buy 10 

#파이썬에서는 들여쓰기를 통해 코드 블록을 표현합니다
if wikibooks_cur_price >= 10000: 
   			print("Buy 5") 
    		 print("Buy 5") 
      		 print("Buy 5") 
#Buy 5 
#Buy 5 
#Buy 5 

파이썬 if~else

wikibooks_cur_price = 11000 
 if wikibooks_cur_price >= 10000: 
   print("Buy 10") 
   else: 
    print("Holding") 
#Buy 10

파이썬 if~elif~else 문

현재가가 1,000원 미만이면 호가 가격은 1원, 
그렇지 않고 현재가가 1,000원 이상이고 5,000원 미만이면 호가 가격단위는 5원, 
그렇지 않고 현재가가 5,000원 이상이고 10,000원 미만이면 호가 가격단위는 10원, 
그렇지 않고 현재가가 500,000원 이상이면 호가 가격단위는 1,000원 
price = 7000 
if price < 1000:
 	  bid = 1 
elif price >= 1000 and price < 5000: 
 		bid = 5 
elif price >= 5000 and price < 10000: 
 		bid = 10       
elif price >= 500000: 
  		bid=1000
 
 bid
 #10

 

파이썬 for

#1부터 10까지 출력하기
for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: 
print(i) 
#1
#2
#3
...

list(range(1,10))
#[1, 2, 3, 4, 5, 6, 7, 8, 9] 

for i in range(0, 11): 
		  print(i) 
#1
#2
#3
...
for와 리스트
interest_stocks = ["Naver", "Samsung", "SK Hynix"] 
for company in interest_stocks
  	print("%s: Buy 10" % company)
    
#Naver: Buy 10 
#Samsung: Buy 10 
#SK Hynix: Buy 10 

#문자열이 출력될 위치에 %s로 나타내고 실제로 출력될 문자열은 % 기호 뒤에 변수명을 쓴다
#for와 딕셔너리
interest_stocks = {"Naver":10, "Samsung":5, "SK Hynix":30} 

for company, stock_num in interest_stocks.items(): 
		 print("%s: Buy %s" % (company, stock_num)) 
#SK Hynix: Buy 30 
#Naver: Buy 10 
#Samsung: Buy 5

for company in interest_stocks.keys(): 
			 print("%s: Buy %s" % (company, interest_stocks[company])) 
#SK Hynix: Buy 30 
#Naver: Buy 10 
#Samsung: Buy 5            
#이중 for문 작성
apart2 =[[101,102,103,104],[201,202,203,204],[301,302,303,304],[401,402,403,404]]
for i in range(len(apart2)):
    for j in range(len(apart2)):
        if apart2[i][j] == 203:
            continue
        else:
            print("Newspaper delivery :", apart2[i][j])

 

연습문제

#문제 2-1 다음(Daum)의 주가가 89,000원이고 네이버(Naver)의 주가가 751,000이라고 가정하고,
#어떤 사람이 다음 주식 100주와 네이버 주식 20주를 가지고 있을 때  그 사람이 가지고 있는 주식의 총액을 계산하는 프로그램을 작성하세요.
 daum = 89000
 naver = 751000
 total = daum * 100 + naver * 20
 print(total)

#문제 2-2 문제 2-1에서 구한 주식 총액에서 다음(89000)과 네이버(751000)의 주가가  각각 5%, 10% 하락한 경우에 손실액을 구하는 프로그램을 작성하세요.
daum = 89000
naver = 751000
loss = (daum * 0.05 * 100) + (naver * 0.1 * 20)
print(loss)

#문제 2-3 우리나라는 섭씨 온도를 사용하는 반면 미국과 유럽은 화씨 온도를 주로 사용합니다.
#화씨 온도(F)를 섭씨 온도(C)로 변환할 때는 다음과 같은 공식을 사용합니다.
#이 공식을 사용해 화씨 온도가 50일 때의 섭씨 온도를 계산해 보세요.  C = (F-32)/1.8
f = 50
c = (f-32) / 1.8
print(c)

#화면에 "pizza"를 10번 출력하는 프로그램을 작성하세요.
for pizza in range(10):
    print("pizza")

#문제 2-5 월요일에 네이버의 주가가 100만 원으로 시작해  3일 연속으로 하한가(-30%)를 기록했을 때 수요일의 종가를 계산해 보세요.
mon_start_price = 1000000
mon_end_price = mon_start_price * 0.7
tue_start_price = mon_end_price
tue_end_price = tue_start_price * 0.7
wed_start_price = tue_end_price
wed_end_price = wed_start_price * 0.7
print(wed_end_price+"원") 

#문제 2-6 다음 형식과 같이 이름, 생년월일, 주민등록번호를 출력하는 프로그램을 작성해 보세요.
#이름: 파이썬 생년월일: 2014년 12월 12일 주민등록번호: 20141212-1623210
name = input("이름입력: ")
birth = input("생년월일 입력: ")
idnum = input("주민번호입력: ")

print("이름 :",name)
print("생년월일 :",birth)
print("주민번호 :",idnum)

#문제 2-7 s라는 변수에 'Daum KaKao'라는 문자열이 바인딩돼 있다고 했을 때
#문자열의 슬라이싱 기능과 연결하기를 이용해 s의 값을 'KaKao Daum'으로 변경해 보세요.
s = 'Daum KaKao'
s = s[5:] + ' ' + s[0:4]
print(s)

#문제 2-8 a라는 변수에 'hello world'라는 문자열이 바인딩돼 있다고 했을 때  a의 값을 'hi world'로 변경해 보세요.   
a = 'hi ' + a[6:]
print(a)

#문제 2-9 x 라는 변수에 'abcdef'라는 문자열이 바인딩돼 있다고 했을 때  x 의 값을 'bcdefa'로 변경해 보세요.  
 x = 'abcdef'
 x = x[1:]+x[0]
 print(x)
'''문제 3-1 2015년 9월 초의 네이버 종가는 표 3.2와 같습니다.
09/07 의 종가를 리스트의 첫 번째 항목으로 입력해서
naver_closing_price라는 이름의 리스트를 만들어보세요.

표 3.2 네이버 종가  
날짜 요일 종가
09/11 금 488,500
09/10 목 500,500
09/09 수 501,000
09/08 화 461,500
09/07 월 474,500 '''
 
naver_closing_price = [474500, 461500, 501000, 500500, 488500]

#문제 3-2 문제 3-1 에서 만든 naver_closing_price 를 이용해  해당 주에 종가를 기준으로
#가장 높았던 가격을 출력하세요.
#(힌트: 리스트에서 최댓값을 찾는 함수는 max()이고, 화면에 출력하는 함수는 print()입니다.)
findmax=max(naver_closing_price)
print(findmax)

#문제 3-3 문제 3-1 에서 만든 naver_closing_price 를 이용해
#해당 주에 종가를 기준으로 가장 낮았던 가격을 출력하세요.
#(힌트: 리스트에서 최솟값을 찾는 함수는 min()이고, 화면에 출력하는 함수는 print()입니다.)
findmin=min(naver_closing_price)
print(findmin)

#문제 3-4 문제 3-1 에서 만든 naver_closing_price 를 이용해  해당 주에서 가장 종가가
#높았던 요일과 가장 종가가 낮았던 요일의 가격 차를 화면에 출력하세요.
result=findmax-findmin
 print(result)

 #문제 3-5 문제 3-1 에서 만든 naver_closing_price 를 이용해
 #수요일의 종가를 화면에 출력하세요.
print("수요일 종가: ", naver_closing_price[2])

#문제 3-6 문제 3-1 의 표 3.2를 이용해 날짜를 딕셔너리의 키 값으로,
#종가를 딕셔너리의 값으로 사용해 naver_closing_price2 라는 딕셔너리를 만드세요.
naver_closing_price2={'09/07':474500, '09/08':461500, '09/09':501000, '09/10': 500500, '09/11':488500}

 

#문제 4-1 아래와 같은 패턴의 별(*)을 출력하는 프로그램을 작성해 보세요.
#참고로 print('*', end='')와 같이 print 함수를 사용하면 줄바꿈 없이 화면에 출력할 수 있습니다.
for i in range(5):
    print('*', end='')

'''문제 4-2 아래와 같은 패턴의 별(*)을 출력하는 프로그램을 작성해보세요.
(힌트: 중첩 루프 사용)  
*****
*****
*****
***** '''

for j in range(4):
    print("")
    for i in range(5):
        print('*', end='')

#문제 4-3 아래와 같은 패턴의 별(*)을 출력하는 프로그램을 작성해보세요.
*
**
***
****
*****

for j in range(5):
    print("") 
    for i in range(j+1):
        print('*', end='')

#문제 4-4 아래와 같은 패턴의 별(*)을 출력하는 프로그램을 작성해 보세요.
        *****
        ****
        ***
        **

#문제 4-5 아래와 같은 패턴의 별(*)을 출력하는 프로그램을 작성해 보세요.
x=5
for i in range(1,x+1):
    for j in range(x+1-i):
        print(" " , end="")
    for j in range(2*i-1):
        print("*",end="")
    print()

#문제 4-7 아래와 같은 패턴의 별(*)을 출력하는 프로그램을 작성해 보세요.  
for j in range(5):
    for i in range(j):
        print(' ', end='')
    for i in range(2*(5-j)-1):
        print('*', end='')
    print("")

#문제 4-9 중첩 루프를 이용해 신문 배달을 하는 프로그램을 작성하세요.
#단, 아래에서 arrears 리스트는  신문 구독료가 미납된 세대에 대한 정보를 포함하고 있는데,
#해당 세대에는 신문을 배달하지 않아야 합니다.  
apart = [[101, 102, 103, 104],[201, 202, 203, 204],[301, 302, 303, 304], [401, 402, 403, 404]]
arrears = [101, 203, 301, 404]
for i in apart:
    for j in i:
        if j in arrears:
            continue
        else:
            print("Newspaper delivery :", j)
class Stock:
    market = "kospi"

print(dir())

"""
2개의 언더바로 시작하는 것은 파이썬에서 이미 사용 중인 특별한 것들

이를 제외하고 보면 조금 전에 정의했던 Stock 클래스의 이름이 포함된 것을 확인할 수 있다.

파이썬에서는 클래스가 정의되면 하나의 독립적인 네임스페이스가 생성된다.
그리고 클래스 내에 정의된 변수가 메서드는
그 네임스페이스 안에 파이썬 딕셔너리 타입으로 저장된다.

Stock 클래스는
Stock 이라는 네임스페이스 안에 'market':'kospi'라는 값을 가진 딕셔너리를 포함한다.
"""

# 파이썬 클래스 네임스페이스

"""
Stock 클래스의 네임스페이스를 파이썬 코드로 확인하려면
클래스의 __dict__ 속성을 확인.
"""

print("Stock.__dict__ => ", Stock.__dict__)

"""클래스가 독립적인 네임스페이스를 가지고
클래스 내의 변수나 메서드를 네임스페이스에 저장하고 있으므로
다음과 같이 클래스 내의 변수에 접근할 수 있는 것이다.
"""

print("Stock.market =>", Stock.market)


s1 = Stock() 
s2 = Stock()

print("s1 = Stock() =>", id(s1))
print("s2 = Stock() =>", id(s2))

"""
생성된 s1, s2 인스턴스가 네임스페이스에 있는지 코드를 통해 확인.
dir() 내장함수의 반환값을 확인하면
s1, s2가 Stock과 마찬가지로 존재하는 것을 확인할 수 있다.
"""

print(dir())



"""
s1과 s2인스턴스의 네임스페이스는 현재 비어있는 것을 확인할 수 있다.
"""

print("s1.__dict__ =>", s1.__dict__)
print("s2.__dict__ =>", s2.__dict__)

"""
s1 인스턴스에 market 이라는 변수를 추가한 후, 다시 __dict__ 속성을 확인해보면
'market':'kosdaq' 이라는 키:값 쌍이 추가된 것을 볼 수 있다.
"""

s1.market='kosdaq'
print("s1.__dict__ =>", s1.__dict__)
print("s2.__dict__ =>", s2.__dict__)




# 파이썬 클래스 네임스페이스

"""
Stock 클래스의 네임스페이스를 파이썬 코드로 확인하려면
클래스의 __dict__ 속성을 확인.
"""

print("Stock.__dict__ => ", Stock.__dict__)

"""
클래스가 독립적인 네임스페이스를 가지고
클래스 내의 변수나 메서드를 네임스페이스에 저장하고 있으므로
다음과 같이 클래스 내의 변수에 접근할 수 있는 것이다.
"""

print("Stock.market =>", Stock.market)


s1 = Stock() 
s2 = Stock()

print("s1 = Stock() =>", id(s1))
print("s2 = Stock() =>", id(s2))

"""
생성된 s1, s2 인스턴스가 네임스페이스에 있는지 코드를 통해 확인.
dir() 내장함수의 반환값을 확인하면
s1, s2가 Stock과 마찬가지로 존재하는 것을 확인할 수 있다.
"""

#print(dir())



"""
s1과 s2인스턴스의 네임스페이스는 현재 비어있는 것을 확인할 수 있다.
"""

#print("s1.__dict__ =>", s1.__dict__)
#print("s2.__dict__ =>", s2.__dict__)

"""
s1 인스턴스에 market 이라는 변수를 추가한 후, 다시 __dict__ 속성을 확인해보면
'market':'kosdaq' 이라는 키:값 쌍이 추가된 것을 볼 수 있다.
"""

#s1.market='kosdaq'

#print("s1.__dict__ =>", s1.__dict__)
#print("s2.__dict__ =>", s2.__dict__)

###############

"""
만약 s1.market, s2.market과 같이 인스턴스를 통해 market이라는 값에 접근하면?
"""
#print("s1.market =>", s1.market)
#print("s2.market =>", s2.market)

"""
s2 인스턴스를 통해 변수에 접근하면
파이썬은 먼저 s2 인스턴스의 네임 스페이스에서 해당 변수가 존재하는지 찾는다.


만약 s2의 네임스페이스에 해당 변수가 존재하지 않으면
s2 인스턴스의 클래스 네임스페이스로 가서 다시 변수를 찾게 된다.
"""

"""
 
즉,
    
s2.market 이라는 문장이 실행되면
Stock 클래스의 네임스페이스에 있는
'market':kospi''
키:값 쌀에서 'kospi'라는 문자열을 출력하게 된다.

"""

  
# 클래스 변수와 인스턴스 변수


"""
은행 계좌를 클래스로 표현

Account 클래스
생성자(__init__) : 클래스의 인스턴스가 생성될 때 자동으로 호출되는 함수
소멸자(__del__) : 클래스의 인스턴스가 소멸될 때 자동으로 호출되는 함수

"""
#클래스 상속#
class Parent:
    def can_sing(self):
        print("Sing a song")

father = Parent()
father.can_sing()

class LuckyChild(Parent):
    pass

child1 = LuckyChild()
child1.can_sing()

class UnLuckyChild:
    pass

child2=luckyChild2()
child2.can_sing()
child2.can_sing()

#### 파일 읽기 #####

"""
open('파일경로/파일명.확장자','모드')

경로: '\\' 또는 '/'
파일을 읽기 모드로 열려명 r 을
텍스트 파일인 경우에는 t
"""

f = open("C:\\rStudy\\20200410\\list.TXT","rt", encoding='UTF8')

lines = f.readlines()

print("lines => ", lines)

"""
출력된 후 빈 줄이 하나씩 존재
print()는 문자열을 출력할 때 자동으로 줄바꿈을 하는데
기존에 lines라는 리스트에 있는 문자열에도
줄 바꿈을 의미하는 값인 '\n'가 들어 있기 때문.
"""

for line in lines:
    print(line)

"""
lines 리스트에 있는 원소에서 \n 기호를 제거함으로써 중복으로 줄바꿈되지 않도록
코드를 작성
"""

for line in lines:
    print(line, end="")


################ 파일 쓰기 #############
f = open('sel_list.TXT', 'wt')

f.write('삼전\n')
f.write('하이닉스\n')
f.close()

 

파이참 설치

+ Recent posts