학습 로그/Python3

D+24 [Python3] Team Project(kiosk) 리뷰

goodjop79 님의 블로그 2026. 5. 11. 18:15

ㅇ 일자 : 2026년 5월 11일(월)
ㅇ 내용 : Python3-Team Project(kiosk) 리뷰

1. 디렉토리 구성 
   가. dict_.py 작성후 사전 배포하 각 팀원이 반복문 및 조건문을 반복하여 활용(2team)

     - 각 팀원별 작성한 .py 파일을 가상환경에서 패키지화 하여 실행
     - packages library 루트 활용 : __init__.py, main.py
     - 패키지 디렉토리에는 _ _init_ _.py 가 있으면 패키지로 인식된다.
     - 여러개의 각 .py파일들은 패키지화 하여 묶음으로서 메인로직(main.py)에서 실행

     [main.py]
         from  kioskPack import total
         if __name__ == "__main__":
         total.run()


    나. 모든 옵션 딕셔너리를 하나로 합쳐서 사용자가 선택한 카테고리 메뉴를 번호로 출력, 메뉴와 이름 가격을 돌려준다.(3team)
     - 나중에 메인로직과 연결시켜야 하므로 메뉴에서 카테고리를 찾는 변수를 설정해 둔다.
       def choose_menu(menu, category):
       items = menu[category]  



     - 모든 옵션 딕셔너리를 하나로 합침
     coffee_option_select = {}
     coffee_option_select.update(coffee_option)
     coffee_option_select.update(non_coffee_option)
     coffee_option_select.update(ice_cream_option)
     coffee_option_select.update(tea_option)
     return coffee_option_select


   다. list문을 활용하여 메뉴, 옵션 등 반복 및 조건문에 활용(공통)  
   라. __init__.py(패키지로 인식하는 파일)에는 import os를 사용하여 파이썬의 내장 라이브러리인 os를 불러온다.(1·3team)
     (1) 주로 프로그램 시작 전이나 메뉴를 새로 보여줄 때 화면을 깨끗이 정리정돈 할때 사용
     (2) 운영체제가 윈도우(nt)면 'cls', 그 외(posix 등)면 'clear' 실행  
     (3) 운영체제 (Windows, macOS, Linux 등)의 기능을 파이썬에서 제어할 수 있게 해주고, 파일경로 설정, 폴더 생성, 시스템 
          명령어 실행시 사용

    import os

    import sys

    from pathlib import Path

    from types import ModuleType

    # mypy: disable-error-code="name-defined"

 
※ 찾아보기 :
     Python 표준 라이브러리 모듈들을 import 하는 부분 : 파일처리, 시스템 제어, 테스트, 네트워크 등 다양한 기능 제공
     (파일 시스템 조작,  임시 파일 생성,  프로세스 실행,  네트워크 테스트, 유닛 테스트)

구   분 내  용 예  시
import os 운영체제(OS) 기능 사용 os.getcwd()      # 현재 작업 폴더
os.listdir()         # 파일 목록
os.remove()      # 파일 삭제
import sys  파이썬 인터프리터 관련 기능 sys.version      # Python 버전
sys.exit()         # 프로그램 종료
sys.path         # 모듈 검색 경로
import shutil 파일/폴더 복사, 이동 shutil.copy("a.txt", "b.txt")
shutil.rmtree("temp")
import stat 파일 권한 정보 처리 os.chmod("test.txt", stat.S_IRUSR)
import tempfile 임시 파일/폴더 생성 tempfile.TemporaryFile()
tempfile.mkdtemp()
입출력(I/O) 관련
import io 메모리 기반 파일 처리 f = io.StringIO()
문자열을 파일처럼 사용할 수 있음.
import socket 소켓 통신(네트워크 프로그래밍) socket.socket()
서버/클라이언트 제작 가능.
프로세스 실행 관련
import subprocess
외부 프로그램 실행 subprocess.run(["ls"])
터미널 명령 실행 가능.
시간 관련
import time
시간 처리 time.sleep(1)
time.time()
문자열 처리
import textwrap
긴 문자열 정리 / 들여쓰기 textwrap.dedent("""
    hello
""")
테스트 관련
import unittest
파이썬 테스트 프레임워크 class MyTest(unittest.TestCase):
    pass
경고 처리
import warnings
경고 메시지 제어 warnings.warn("주의!")
동적 모듈 로딩
import importlib
모듈을 동적으로 불러오기 importlib.import_module("math")
오류 번호 관련
import errno 운영체제 에러 코드 정의 errno.ENOENT   # 파일 없음 에러

 
2. 각종 로고 활용 
   가. print 로고 프린트를 활용한 메인화면 구성(공통) : "Dot Art"를 활용한 점묘법 및 특수기호 활용 이미지 구현
        ---> 파이참의 디자이너(Desingner) 기능을 활용할 수도 있다.
   나. 특수기호를 조합하여 임의 이미지를 구현할 경우 형태는 보이지만 웹 구현에서는 특수기호 깨짐현상으로 사용이 일부 제한
        될수도 있다.(공통)
  
3. for문을 활용한 카테고리별 주문 메뉴 선택(공통)

def print_menu(dict_data_r:{getitem}, catagory):
   for j in range(,,,):  
   for k in names:
   for i in menu_prices:
   print(f"{i:<20}, end="")


 4. continue (3t)  
   파이썬의 continue는 for나 while 반복문 내에서 특정 조건일 때 현재 반복의 남은 코드를 건너뛰고 다음 반복(루프)으로 시 넘어가는 제어 키워드루프를 완전히 종료하는 break와 달리, continue는 루프의 실행을 계속 유지한다.

예시1.)
# 0부터 9까지 짝수만 출력하고 싶을 때 (홀수일 때 continue)

for i in range(10):
    if i % 2 != 0:  # 홀수라면
        continue    # 아래 print(i)를 건너뛰고 다음 i로 이동
    print(i)
# 출력 결과: 0, 2, 4, 6, 8 (홀수는 건너뜀)


예시2.)
# 사용자가 주문취소 입력하면 반복 종료됨
#기존 함수의 break로 종료시 메인함수에서 프로그램이 종료되어버리므로 exit값을 반환

      if category == "주문취소":
            print("프로그램을 종료합니다.")
            return exit()


예시3.)
 # 존재하지 않는 카테고리를 입력한 경우, 맨처음 위에 if문으로 하고 else일경우 동작하도록 했는데 continue가 없을 경우 프로그램이 중단되어 continue문으로 조건을 준다

        if category not in menu:
            print ("없는 카테고리입니다. 다시 입력해주세요.")
            continue            
# choose_menu 함수를 보면, 선택하지 않았을경우 back을 반환하도록 설정되어 있다.
0을 입력할때 back이 자동으로 반환되어 menuname이 back일경우 다시 처음으로 돌아가서 반복한다.
        if menuname == "back":
            continue


5. 실습 후기 
    가. Python 표준 라이브러리 모듈들을 import 하는 부분에서  파일처리, 시스템 제어, 테스트, 네트워크 등 다양한 기능 제공한다.

 팀과제에서 개인별 임무분담에 따라 실습한 결과 파이썬 코드 모듈을 제대로 이해하지 못한 상태에서 팩키지화하여 실행하는 부분에서 애러가 다수 발생하였다.  이는 전공자를 주도로 비전공자에게도 설명해 가면서 수정해 나갔다.

    나. 전공 및 비전공자가 함께 개발하는 환경에서는 상호 이해도 측면에서 차이가 있으므로 서로 의견조율이 필요했고, 이해하기 어려운 부분은 전공자의 설명을 들으며 함께 해 나갔다. 

    다. 누구나 처음 접해보는 업무들이 어렵다고 생각하듯 모든일이 처음에는 생소하기도 하지만 애러코드를 수정해 가는 과정이 좋았다. 

   라. 단기간에 배워서 개발자 임무를 수행한다는 것은 제한되는 일이다. 그러나 프로그램 개발을 위한 기초지식부터 환경을 이해한다면 AI 활용능력과 결합했을때 이해도 향상 및 개발에 참여할 수도 있을 것이다. "도전은 계속된다"