인터넷이 무엇인가?
네트워크를 통한 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처럼 생각하면될듯