23.02.03 Day 05

오윤범·2023년 2월 2일
0

Python

  • 인터넷이 무엇인가?

    네트워크를 통한 request와 response

Module

  • Random

import random
numbers=[i for i in range(1,46)]
lotto=[]
for i in range(6):
    lotto.append(random.choice(numbers))
print(lotto)
-----------------구분---------------------
import random
numbers=list(range(1,46))
lotto=[]
random.shuffle(numbers)
lotto=random.choices(numbers,k=6)
print(lotto)
-----------------출력---------------------
-----------------출력---------------------
[30, 30, 27, 27, 45, 32]
[40, 32, 45, 38, 31, 40]

--> random 모듈을 import하여 로또 프로그램 생성

  • urllib Module 사용

from urllib.request import Request, urlopen
req=Request('https://www.naver.com')#생성자
res=urlopen(req)
print(res.status)#200출력시 url 제대로 들어감 / 404출력시 잘못된 url
-----------------출력---------------------
-----------------출력---------------------
200

200 -> 정상적으로 응답 받았다는 말
200 확인 후 터미널에 pip install requests - 동일폴더에 code00_requests.py파일 생성
아래 소스코드 - code27_requests.py에 작성

import requests
res=requests.get('https://www.naver.com')
print(res.status_code)
print('===============')
print(res.content)
-----------------출력---------------------
-----------------출력---------------------
naver 메인화면 html코드 불러옴
  • 모듈 만들어서 사용해보기

    같은 폴더에 모듈을 생성 한 후 from / import 통해서 사용
from code00_calculator import *
calc('add',1,2,3,4,5)
calc('sub',1,2,3,4,5)
calc('mul',1,2,3,4,5)
calc('div',1,2,3,4,5)
-----------------출력---------------------
-----------------출력---------------------
15
-13
120
0.008333333333333333

--> code00_calculator 에서 작성한 calc 함수의 add/sub/mul/div 기능 불러와서 사용가능

  • __name

import code29_module_name
print(f'code30_module_main : {__name__}')
# C 에서의 int main(void) 와 동일
if __name__=='__main__':
    print('main 실행')
-----------------출력---------------------
-----------------출력---------------------
code30_module_main : __main__
main 실행

--> __name은 실행되는 Main을 확인하기 위함

print(f'code29_module_name : {__name__}')
if __name__=='__main__':
    print('main 실행행행')
-----------------출력---------------------
-----------------출력---------------------
code29_module_name : __main__
main 실행행행

--> 실행되는 main에 따라 그에 맞게 설정해둔 print문의 내용이 출력

io (input/output)

  • 간단 입출력

number=int(input('숫자 입력>>'))
print('입력된 숫자 : {0}  '.format(number*5))
-----------------구분---------------------
list1=[]
for i in range(5):
    list1.append(int(input('숫자 5개>>')))
print(list1)
-----------------출력---------------------
-----------------출력---------------------
숫자 입력>>50
입력된 숫자 : 250  
숫자 5>>10
숫자 5>>20
숫자 5>>30
숫자 5>>40
숫자 5>>50
[10, 20, 30, 40, 50]
  • 다중 입출력

inputs=list(map(int,input('정수 입력> ').split()))
print(inputs)
-----------------출력---------------------
-----------------출력---------------------
정수 입력> 10 20 30
[10, 20, 30]

--> 다음과 같은 형태로 다중 입출력 가능

  • 파일 입력(생성)

#file = open('C:\DEV\Temp\Bank\sample01.txt', 'w',encoding='utf-8') # 절대경로
#utf-8:모든 나라 언어 표현 가능
#open(경로\파일이름,저장방식,변환) 
file = open('./Day05/sample02.txt', 'w',encoding='utf-8')
# 현재 위치에서 Day05에다가 
# ./Day05/../Day04/sample02.txt라고 지정하면 Day04 폴더에 파일생성
#../sample03.txt 라고 작성하면 Source라는 폴더에 만들어짐(Python2023폴더 제일 밖)
file.write('동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세\n')
file.write('지정한 절대경로에 파일 생성\n')
file.close()
print('파일 생성')
-----------------출력---------------------
-----------------출력---------------------
지정한 위치에 sample.txt가 만들어지고 내부 텍스트 : 
동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세
지정한 절대경로에 파일 생성
  • 파일 출력(읽어오기)

file=open('./Day05/sample02.txt','r',encoding='utf-8')
while True:
    text=file.read()
    if not text: break#더이상 text가 없으면 그만읽어라
    print(text)
file.close()#file open 사용시에 반드시 close 필수
-----------------출력---------------------
-----------------출력---------------------
동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세
지정한 절대경로에 파일 생성

if not text : break --> 더이상 읽어올 text가 없으면 그만읽는다

  • csv 파일 읽어오기

    https://www.data.go.kr/index.do
    공공데이터센터 들어가서 가져오고 싶은 자료의 csv 파일 다운 받은 후
    PYTHON2023 폴더에 삽입 및 notePad 이용한 인코딩 변환(utf-8)
    vsc extension에서 excel viewr 다운받아 조금 더 가독성 좋게 볼 수 있음(csv 파일 우클릭 후 open preview)
# 공공데이터포털 csv 파일 읽어오기
# 부산광역시 시내버스, 마을버스 현황 
import csv
file_name = 'busanbus.csv'
dir_name='C:/Source/Python2023/'
full_path=dir_name+file_name
file=open(full_path,'r',encoding='utf-8')
reader = csv.reader(file,delimiter=',') # delimiter은 구분자, 해당 파일에서는 ,
next(reader)
for line in reader:
    print(line)
file.close() # 열었으면 닫자 꼭
-----------------출력---------------------
-----------------출력---------------------
-> csv 파일 데이터 list 형태로 출력

Exception Handling

def add(a,b):
    return a+b
def mul(a,b):
    return a*b
def div(a,b):
    return a/b
try:#예외처리 - try / except 
    x,y=list(map(int,input('정수 두개 입력>').split()))
except Exception as e:
    print(e)
    exit()
finally:
    print('exit()있어도 finally 먹음') 
print('test>')
try:#예외처리
    print(f'div:{div(x,y)}')
# except ZeroDivisionError as e:
#     print('0으로 나눌 수 없음')
#     exit()
except Exception as e:
    print(e)
finally:
    print('continue...')
print(f'add:{add(x,y)}')
print(f'mul:{mul(x,y)}')
-----------------출력---------------------
-----------------출력---------------------
수 두개 입력>10 2 
exit()있어도 finally 먹음   
test>
div:5.0
continue...
add:12
mul:20

--> try, except, finally 돌아가는 순서 확인 필요함
--> try,except / if 둘중 어떤걸로 잡아도 괜찮으니 오류나 잘 잡자!!
C#에서 try catch처럼 생각하면될듯

  • 일주일 교육 후기

  • Format 이나 f' 같은 기본적으로 사용해야 하는 문법들이 익숙하지 않음.
    Python을 거의 처음 써보기도 하고 다른 언어들이랑은 좀 달라서 안달라붙는듯
  • Class / def 도 수업 들을 땐 어려움 없이 들었는데 막상 혼자 쓰려고 하니까 아직
    문법적으로 헷갈리는 부분이 있음. 이것도 숙련도 문제인듯
  • 정처기 시험이랑 교육 복습이랑 같이 병행하는건 도당최 하기가 싫고
    필기는 어째저째 붙어야 하니 필기시험까지는 정처기 위주로 보고 시험 결과 보고
    실기랑 복습은 시간분배 잘해서 해야할듯

0개의 댓글