디시인사이드 갤러리

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

갤러리 본문 영역

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

사밀(14.39) 2021.11.27 01:43:56
조회 245 추천 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 - -
980 🔎질문 pyautogui.locateOnScreen() 질문(이미지중복) [4] KRK갤로그로 이동합니다. 21.12.02 830 0
979 🔎질문 형들 제발 도와주세요...프로그램 제작 추천좀 [7] ㅇㅇ(211.49) 21.12.01 195 0
978 🔎질문 파이썬 텍겜 [3] ㅇㅇ(118.45) 21.11.30 172 0
977 일반 애플이 파이썬 까는 거 보고 [2] ㅇㅇ(223.38) 21.11.30 163 0
975 🔎질문 리스트 중복값 제거 질문좀 [4] ㅇㅇ(121.139) 21.11.30 143 1
974 🔎질문 루아만든형이랑 파이썬만든형이랑 사이 안좋았음? [4] 키메라(112.148) 21.11.29 140 0
971 🔎질문 코린이에게 도움을 주세욥 [11] ㅇㅇ(220.76) 21.11.29 195 0
970 일반 드디어 파이썬갤 생겼나해서 와봤는데 [1] ㅇㅇ(121.140) 21.11.29 187 0
968 🔎질문 리스트 원소들을 한줄씩 띄워서 txt파일에 저장 하는거 어떻게 해야할까? [1] ㅇㅇ(175.125) 21.11.29 123 0
966 🔎질문 파이참 오픈 라이센스 아니였냐? [3] 라댜갤로그로 이동합니다. 21.11.29 201 0
963 일반 파이참 vs ㅇㅇ(223.38) 21.11.29 109 0
962 🔎질문 파이썬 순서도좀 도와주세요. [1] 보보보(59.16) 21.11.29 150 0
961 🔎질문 유튜브로 영상만보다가 직접 써보고 싶은데 아나콘다 주피터 파이참 vs코드 [8] ㅇㅇ(220.76) 21.11.29 174 0
959 🔎질문 좀전글 전체코드 [23] ㅇㅇ(211.203) 21.11.28 200 1
958 일반 백준 숏코딩 지리노 ㅋㅋ [4] 키메라(112.148) 21.11.28 233 0
957 🔎질문 뭐가 문제냐 씨발 [8] ㅇㅇ(211.203) 21.11.28 164 0
956 🔎질문 파이썬 패키지 부분 공부중인데요 [1] ㅇㅇ(1.229) 21.11.28 126 0
955 🔎질문 vscode이랑 파이참 둘 중 뭐를 더 많이 사용함?? [4] ㅇㅇ(14.37) 21.11.28 1402 0
954 일반 뭐 재밌는 질문 같은 거 안 올라오냐 [2] ㅇㅇ(223.38) 21.11.28 139 0
953 일반 프로그래밍 입문 한달차 느낀점 작성 [3] 키메라(112.148) 21.11.28 292 0
951 🔎질문 파이썬 두 원의 교점을 구할만한 아이디어 있을까요 ㅜㅜ [6] LLLeee(180.230) 21.11.28 163 0
950 🔎질문 거북이 질문.... 급함ㅠ [2] 글래시갤로그로 이동합니다. 21.11.28 155 0
949 🔎질문 님들 이거 머가 잘못된거임? [8] ㅇㅇ(121.188) 21.11.27 162 0
948 🔎질문 코딩중 질문이요 ㅠㅠㅠ [1] 글래시갤로그로 이동합니다. 21.11.27 128 0
947 🔎질문 call을 안했는데 왜 되는거죠?? [6] ㅇㅇ(14.6) 21.11.27 135 0
946 🔎질문 질문 좀 봐주세요ㅠㅠ [3] ㅇㅇ(110.15) 21.11.27 158 0
📚정보 성적 조회 프로그램을 한 번 만들어봄 사밀(14.39) 21.11.27 245 3
944 일반 일단 .exe 파일이 마소 디펜더에서는 안 걸리기 시작함. [8] 사밀(14.39) 21.11.26 183 0
943 일반 파이썬 뉴비 오류 질문 특 [4] ㅇㅇ(223.39) 21.11.26 160 4
942 🔎질문 넘파이 삼각함수 질문점 [4] ㅇㅇ(211.36) 21.11.26 150 0
941 🔎질문 파이썬 공부한지 12주 즈음 됐는데 질문좀 [7] ㅇㅇ(175.122) 21.11.26 234 0
939 🔎질문 파이썬 처음배우는데 간단한거 하나만 알려주세요 형님들 [8] 대학원생(211.244) 21.11.25 207 1
937 🔎질문 파이썬 질문 드립니다 제발 알려주세요 ㅠㅠ [5] 유띠(124.57) 21.11.25 173 0
936 일반 앗 카테고리 일반에 아이콘 없어졌네 [4] ㅇㅇ(223.38) 21.11.25 115 0
935 🔎질문 자료구조 공부할만한 책 추천해주실수 있을까요 ㅇㅇ(183.101) 21.11.25 378 0
934 일반 갤 쓸때 없이 이쁘네 ㅋㅋㅋㅋㅋ [9] ㅇㅇ(115.136) 21.11.24 191 0
933 🔎질문 모듈 설치 파일에서 부트로더를 컴파일한다는 게 [2] 사밀(223.38) 21.11.24 134 0
932 🔎질문 코린이 연산자 우선순위 질문 좀.... [2] ㅇㅇ(112.165) 21.11.24 130 0
931 일반 C언어 입문하고 나무위키읽는시간만 늘어나는데 이거맞노? [12] 키메라(223.38) 21.11.24 285 0
930 🔎질문 말머리에 이모티콘 추가해봤는데 으떰 [5] 주넹갤로그로 이동합니다. 21.11.24 143 0
929 일반 드디어 부트로더를 컴파일 해서 pyinstaller를 설치했음 [13] 사밀(223.62) 21.11.23 289 1
928 일반 GUI 추천좀 [11] ㅇㅇ(121.142) 21.11.23 467 0
926 💡답변 교양게이 봐줘 [9] 주넹갤로그로 이동합니다. 21.11.22 240 0
925 일반 와 나 드디어 성공했어 ㅠㅜ [5] ㅇㅇ(110.13) 21.11.22 196 0
924 🔎질문 나 코딩 교양 질문했는데 다시 봐줘 제발 [10] ㅇㅇ(110.13) 21.11.22 181 0
922 일반 .exe 만들어서 공유하는 방법은 정녕 없는 것인가... [5] 사밀(223.62) 21.11.22 211 0
921 🔎질문 윈도우 11 올리신분 있나요? ㅇㅇ(1.249) 21.11.22 104 0
920 일반 셀레늄으로 새로고침 반복하는것과 새로고침 손가락으로 갈기는거 [2] 사밀(223.62) 21.11.22 157 0
919 일반 셀레니움에서 화면에 보이는 것만 클릭할 수 있었나 [6] 사밀(14.39) 21.11.22 165 1
918 일반 아 이상한데서 말려서 뻘짓 하다가 이제 잠 [2] 사밀(223.62) 21.11.22 110 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2