디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[📚정보] 성적 조회 프로그램을 한 번 만들어봄

사밀(14.39) 2021.11.27 01:43:56
조회 246 추천 3 댓글 0
														

유동닉 '대학원생'의 글을 보고 아이디어를 얻어서 이것저것 만들어보다가

과거에 다른 거 경험했던 거 중에 개인적으로 한심하게 생각했던(?) 점도 갑자기 생각나서 이것저것 좀 바꿔보면서 재밌는 거 만들어봄.


일단 아이디어 자체는

 1. 닉이 대학원생????

 2. 근데 이름 학번으로 성적 조회하는 방법 강구한다고??

 3. 대학 수업 조교인건가???

 4. 학생이 중간기말이나 과제 점수 조회하겠다고 들이대면 저거 코드 띄워놓고 그 때마다 지 이름 및 학번 치라고 해서 조회하라고 시키려는건가????

이런 마인드에서 출발함.


그래서 처음에는 내가 파이썬 기초가 매우 약해서 그냥 쉽게 pandas로 성적 데이터 불러와서

그걸로 loc를 이용해서 먼저 이름 기준으로 필터링 하고, 그 다음에 학번 치면 거기에 해당되는 점수 print 하는 식으로 구현해보았음.

근데 사실 그러면 어차피 자기 손으로 데이터 조회해주는 건데 걍 엑셀파일에서 첨부터 조회해주는 거나 별 다른 거 없지 않나? 싶었음


그래서 엑셀파일이랑 코드로 만든 .exe 파일을 같이 던져주고

그 대신에 엑셀데이터 파일은 셀잠금 이런 걸로 안 보이도록 막고, 파이썬으로 읽어들이기만 해서 이름/학번을 알고 있을 때에만 해당 점수를 조회하게끔 구현해보았음.

근데 엑셀 파일로 무슨 수를 쓰든, 수식으로 물고 들어가면 정보 다 긁어올 수 있음.

셀잠금, 시트 보호 이런 거 다 해봤자

수식으로 다른 시트 / 다른 파일에서 물고 쭉 긁으면 데이터가 다 불러와짐


여기서 예전에 겪었던 한심한 일이 생각났던게,

성적 조회나 합불 조회 같은거,,,


viewimage.php?id=3da4c42eeadc&no=24b0d769e1d32ca73deb85fa1bd8233c97e79f71135318a7c9f45b6bf80631901134212fc610734438eeb07320800e2532d4af9ba34f7efc29e9e3faa82b690ebd308a

위처럼 이런 식으로 결과 시트에 데이터 다 집어넣어놓고, 그거 못 보게 시트보호 걸어놓은 다음에

첫번째 시트에서 아이디 입력 란에 아이디 입력하면

수료여부에 vlookup 함수 걸려서 결과시트에서 데이터 물고 오는 식으로 구현된 경우가 많은데


사실 이렇게 해놓으면 vlookup 함수 수식만 봐도 결과시트 데이터 범위 한눈에 보여서

그냥 그거 = 수식 물려서 쭉 긁으면 바로 데이터 다 불러올 수 있음. ㅋㅋ

첨에는 몰랐는데 이런 거 은근히 회사 같은데서도 수료 내역 같은 거 조회하는 방법으로 자주 쓰기도 하는데

사람들 사이에서 어떻게 수식 긁으면 다 보인다. 이런 게 소문으로 퍼지니까 그냥 너도나도 다 쓸 수 있는 방법이 됨. ㅋㅋ



이 정도면 엑셀 파일을 공유하는 건 거기서부터 이미 숨긴 의미가 없어진다.

데이터 자체를 아예 코드에 넣어버리자. 이런 생각을 하게 됨.



마침 예전에 뭐 하나 만들다가 찾아놓은 매우 좋은 코드가 있었는데,

그게 뭐냐면, 일반적으로 pandas를 이용할 때,

딕셔너리 함수를 통해서 데이터프레임을 만들어서 데이터 분석의 기초적인 걸 학습하는데,

그럼 역으로 데이터프레임을 딕셔너리 함수로 만들 수 있지 않나? 라는 발상에서 출발해서 갓갓 stackoverflow에서 구글링 하니까 바로 뭐하나 튀어나옴

이거 첨에 찾았던 이유는 회사컴에서 뭘 돌렸을 때 그 회사컴을 사용하는 사람의 이름을 출력하고 싶었는데, 개인에게 부여된 계정 id 같은 게 자꾸 출력되니까 그게 마음에 안 들어서 그럼 코드 안에 계정id와 이름을 매핑 시켜서 계정 id를 먼저 출력한 다음에 거기에 해당되는 사람이름을 출력하는 로직으로 구성하면 되지 않을까? 싶어서 찾았던 거임.. 물론 그 데이터를 다루는 건 큰 의미도 없고, 혹시나 보안상의 이슈도 있을까봐 싶어서 그냥 아이디어만 떠올리고 실행에 옮기지는 않는 바람에 써먹지는 못함



코드로 

print("df = pd.DataFrame( %s )" % (str(df.to_dict()).replace(" nan"," float('nan')")))


이거 치면 output에 df = ~~ 뜨는데 그거 그대로 코드로 쓰면 거기에 대한 output이 원 데이터프레임이 나오게 되는 거.. ㅇㅇ


그래서 조회에 쓰고자 하는 데이터가 엑셀파일 형태로 존재한다면,

그걸 먼저 위의 코드로 코드화 시킨다음에,


조회하는 코드에다가 코드화 시킨 걸 그대로 집어넣으면 .py 또는 .ipynb 하나가 데이터를 모두 담고 있으면서도 바로 조회까지 가능하게 되어버림..

그걸 .exe로 만들면

일반 사람들은 자기가 알고 있는 정보에 대한 데이터만 조회할 수 있고, 그 외의 정보는 접근을 하지 못하게 하는 효과가 있음.

(1000줄 정도 되는 데이터는 코드화하는데 별 시간도 안 걸리고, 마찬가지로 코드를 다시 데이터프레임으로 만드는데도 별 시간 안 걸림)


물론 .exe를 다시 .py로 만드는 게 되게 쉬운 작업으로 알고 있어서 실질적인 보안의 효과는 전혀 없다는 것 정도는 알고 있지만

애초에 엑셀에서 수식 긁으면 다 출력되던 정보들이라.. 그것보다는 나으니까;; 라는 안일한 마인드이긴 함.


코드를 다 만들고 나서 역시 Bootloader를 컴파일한 pyinstaller로 가상환경에서 .exe 파일을 생성하였음.

만들자마자 경고메시지 같은 거 떠서 또 실망할뻔 했는데, 그냥 검사필요하다는 메시지였고, trojan으로 식별하지는 않았던 거 같음. (다행)


켜자마자 모듈 불러오고 데이터 불러와서 데이터프레임으로 만드는데 시간이 좀 걸리기는 하는지

바로 input이 뜨지는 않고, 3~4초 가량 있다가 뜸

viewimage.php?id=3da4c42eeadc&no=24b0d769e1d32ca73deb85fa1bd8233c97e79f71135318a7c9f45b6bf80631901134212fc610734438eeb01e4d810a263f460a16dfc993c0c93cd0fe2f33f9023994



없는 아이디 입력하면 '아이디를 잘못 입력하였습니다.' 띄우고 다시 입력창 뜨게끔 while True: 코드로 구현해놓고

제대로 된 아이디를 입력한 경우, 그에 대한 결과값을 출력하고 break 함수로 loop에서 빠지게끔 해놓음.

근데 그렇게 하니까 결과값 보기도 전에 프롬프트 창이 꺼져서

os.[...]로 모든 명령어 수행이 끝나도 창이 안 닫히게끔 보완하였음.

그 결과,,,

viewimage.php?id=3da4c42eeadc&no=24b0d769e1d32ca73deb85fa1bd8233c97e79f71135318a7c9f45b6bf80631901134212fc610734438eeb01e4d810a263f460a16dfc9c6cdcc6d8ef02967f90291b5


별 거 아니고, 사실 내가 쓸 일도 없을 것 같은데 걍 삘 꽂힌 김에 만들어봄..

마침 exe 파일도 이것저것 다양하게 더 많이 만들어보고 싶기도 했고...

근데 진짜 별 거 아닌데 용량은 31MB나 잡아먹음

아마 pandas가 scipy 등등 같이 설치되는 라이브러리가 많아서

가상환경에 pandas 하나 설치하는 순간, 가상환경을 따로 만든 이유가 많이 퇴색되어서 그런 거 같음.


좀 더 가볍게 하고 싶으면 지금 당장 생각나는 방법은

일반 환경에서는 pandas로 데이터프레임 만든 다음에

그 데이터를 이름값 따로 .tolist()로 리스트 만들고

결과값 따로 .tolist()로 리스트 만들어서


리스트들을 코드화 시켜서

이름값 넣으면 이름값 리스트에서의 위치 반환해서 그 위치를 이용해서 결과값을 index 하는 식으로 구현하면

가상환경에서는 pandas가 필요없어서 훨씬 가볍게 만들 수는 있긴 할 듯.


추천 비추천

3

고정닉 1

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
- 설문 해외에서 겪는 불합리한 대우에 대응 잘 할 것 같은 스타는? 운영자 25/11/03 - -
- AD 저녁 뭐먹지? 오늘의 메뉴 추천! 운영자 25/10/31 - -
635 공지 가독성 좋은 f-string 을 쓰자 [9] 주넹갤로그로 이동합니다. 21.10.02 3611 10
1056 공지 (공지 요청)[질문지 양식] 복붙해 쓰시오. [4] 203.121.116.11갤로그로 이동합니다. 21.12.14 2523 5
634 공지 질문 올릴때 [2] 주넹갤로그로 이동합니다. 21.10.02 2676 5
178 공지 파이썬 공부할 때 참고할만한 것들 [7] 주넹갤로그로 이동합니다. 21.04.21 8326 7
1 공지 파이썬 미니 갤러리입니다. [9] 주넹갤로그로 이동합니다. 20.12.14 3424 7
2627 일반 진짜 코딩 과제 감을 못잡겠음 [4] ㅇㅇ(118.235) 10.31 33 0
2626 일반 ㄴㄷㅋㄷ 이거 5년전거 아님? 5년 전거로 공부해도되는거야? ㅇㅇ(118.37) 10.25 22 0
2625 일반 맥OS로 공부하는거 별로일까요? [1] ㅇㅇ(118.37) 10.25 33 0
2624 일반 입문 파이썬 공부하려는데요 인강좀 추천해주세요! ㅇㅇ(118.37) 10.25 44 0
2623 일반 코딩 1도 모르는데 [5] ㅇㅇ(119.199) 10.13 84 0
2622 🔎질문 셀레니움 값이 입력이 안되는 현상이 있습니다 ㅇㅇ(39.124) 10.09 49 0
2621 일반 혼자공부하는파이썬 점프투파이썬 [1] ㅇㅇ(211.246) 09.18 154 0
2620 일반 님들이 싫어하는거 사용자 이름 없음(182.228) 08.05 88 0
2619 🔎질문 고등학생인데 질문 있어요. [3] ㅇㅇ(118.221) 07.30 164 0
2618 🔎질문 셀레니움으로 이미지 직접 다운로드 하는 방법 [1] ㅇㅇ(39.7) 07.14 97 0
2617 일반 ㄴㄷㅋㄷ 6시간짜리 5년전꺼라 버전이 달라서 어려움 [1] 빨간망토갤로그로 이동합니다. 05.30 182 0
2616 일반 파이썬 아다 떼려면 책 필요없고 ㄴㄷㅋㄷ 보면됨? [2] 빨간망토갤로그로 이동합니다. 05.23 330 0
2615 일반 7월부터 C언어 파이썬 동시에 해야하는데 [3] ㅇㅇ(118.235) 05.19 170 0
2614 🔎질문 라즈베리파이 프로그램 관련 질문 [2] ㅇㅇ(59.25) 05.04 129 0
2613 일반 에라토스테네스-신촌우왕 체식 신촌우왕갤로그로 이동합니다. 04.22 369 0
2612 일반 카메라 영상을 파이썬 flet으로 실시간 출력 작성 해보신분 [2] ㅇㅇ(218.150) 04.03 196 0
2611 🔎질문 혼자 공부하기 파이썬 책 추천좀 해주세요 [2] 토리짜갤로그로 이동합니다. 03.31 326 0
2610 일반 루트 k의 근사값 [1] 신촌우왕갤로그로 이동합니다. 03.28 184 0
2609 일반 루트 2의 근사값 [1] 신촌우왕갤로그로 이동합니다. 03.28 645 0
2608 일반 짝수 완전수 신촌우왕갤로그로 이동합니다. 03.28 113 0
2606 일반 유클리드 호제법 신촌우왕갤로그로 이동합니다. 03.22 148 0
2605 일반 비전공자 생초보 입문자 점프 투 파이썬으로 하면 되나여? [1] ㅇㅇ(223.39) 03.18 493 0
2604 일반 Int로 변환했는데 이구 왜이럴까요 [3] ㅇㅇ(210.126) 03.15 227 0
2603 일반 이거 어떻게 쳐요,,? [2] ㅇㅇ(221.154) 03.13 231 1
2602 🔎질문 고수님들 대학 파이썬 수업듣는데 질문 있어서 왔습니다 ㅠㅠ [2] ㅇㅇ(39.124) 03.11 258 0
2601 일반 파이썬으로 데이터 변형 하고 있는데 [3] ㅇㅇ(221.152) 03.08 197 1
2600 일반 게임에서 마우스 좌표는 다 잘 찍히는데 키보드가 안됨 ㅇㅇ(59.20) 03.04 154 0
2598 🔎질문 누가 좀 도와줘... [2] ㅇㅇ(115.138) 02.07 260 0
2596 🔎질문 점프투파이썬 굳이 책 사야 하나요? [2] 애개뤼를쮀에에엑갤로그로 이동합니다. 24.12.23 698 0
2595 일반 파이썬 윈도우앱에 광고달아보신분..? ㅇㅇ(222.236) 24.12.18 219 0
2594 일반 파이썬 모바일 추천 좀 ㅇㅇ(110.11) 24.12.08 244 0
2593 일반 r스튜디오 도와주십쇼 형님들.. [2] ㅇㅇ(121.154) 24.12.05 296 0
2591 일반 조졌다 [1] delegen(121.181) 24.11.18 273 0
2590 🔎질문 대학 입학전에 파이썬 공부해볼라고 하는데 [2] ㅇㅇ(110.10) 24.11.17 508 0
2589 일반 파이썬 이래 배우면 되나요?? [1] ㅇㅇ(119.195) 24.11.12 464 0
2588 🔎질문 가상환경 라이브러리 글로벌 문제 ㅇㅇ(123.214) 24.11.05 225 0
2587 일반 도와주세요 고수님들 [2] ㅇㅇ(118.217) 24.11.03 351 0
2586 일반 챗GPT 개같네 [2] 초보 파갤러(119.203) 24.10.27 495 0
2585 일반 파이썬 뭐 부터 건드려야함? 정처기 보유 [1] ㅇㅇ(118.216) 24.10.24 357 0
2582 일반 점프투파이썬이랑 나도코딩 입문강의중에 뭐 봐야함? [2] ㅇㅇ(118.235) 24.10.09 553 0
2581 일반 아이패드로 파이썬 [1] 쪼물갤로그로 이동합니다. 24.10.05 295 0
2580 일반 욜로yolo 객체학습 이후에 질문이 있습니다. [1] ㅇㅇ(117.52) 24.10.05 302 0
2579 일반 파이썬 초보 책추천 [20] 쪼물갤로그로 이동합니다. 24.10.05 5531 0
2577 일반 파린이 도와주세요 ㅠㅠ [2] ㅇㅇ(106.102) 24.10.03 287 0
2576 일반 ai로 댓글 다는거 [2] ㅇㅇ(220.95) 24.09.30 300 0
2575 일반 형님들 파이선 입문을 어떻게해야 좋을까요? [4] ㅇㅇ(106.101) 24.09.26 383 0
2574 일반 질문)본인:쌩초보, 나도코딩 따라 중, 목표는 객체인식, 적용은 시골축사 [12] ㅇㅇ(211.117) 24.09.25 482 0
2572 일반 fastapi 만든사람 콜롬비아 출신 고졸임 [1] ㅇㅇ갤로그로 이동합니다. 24.09.15 335 1
2570 🔎질문 도와주세요 파이참 실행이 아예 안되요 ㅠㅠ... [2] ㅇㅇ(211.252) 24.09.02 301 0
2569 일반 pygbag 아시는 분 ㅇㅇ(183.109) 24.08.20 226 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2