본문 바로가기
etc./Project

프린트기 프로그램

by k-mozzi 2022. 1. 24.
반응형
Preface

 

어제 친구와 프린트기에 관한 이야기를 하던 도중 문득 프린트기에 사용되는 코드는 제어문 몇 개만 사용하면 금방 만들 수 있을 것 같다는 생각이 들어 짧고 간단하게 코드를 작성해봤다.

 

프린터와 컴퓨터의 연결 상태, 흑백 및 컬러 색상의 구분, 작성한 내용 (반복 or 순차)출력 등의 사항은 고려하지 않고 단순히 남은 자원을 통해 input으로 들어온 개수만큼 output을 출력하도록 코드를 구성했다.

 

막상 코드를 완성하고 나니 파일 이름만 거창하게 프린터라고 지었을 뿐, 단순 입출력 코드를 클래스로 구현한 것과 다름이 없어 조금 머쓱하다.

 

시간이 조금 지난 뒤 제대로 된 코드 완성에 다시 한 번 도전해야겠다.


 

- 프린트기 코드

# 프린트기에 사용되는 코드

from typing import Any

default = 0


class Printer:
    def __init__(self, paper=default, ink=default, total=default):
        self.paper = paper
        self.ink = ink
        self.total = total

    def print_paper(self, num: int) -> None:
        if self.paper and self.ink >= num:
            print(f'인쇄물을 {num}장 출력했습니다.')
            self.paper -= num
            self.ink -= num
            self.total += num
            print(f'남은 종이: {self.paper}, 남은 잉크: {self.ink}', '\n')
        else:
            print('인쇄물을 출력할 수 없습니다.')
            print(f'남은 종이: {self.paper}, 남은 잉크: {self.ink}')
            print('종이와 잉크의 보충이 필요합니다.', '\n')

    def p_refill(self, p_num: int) -> None:
        print(f'종이를 {p_num}장 보충했습니다.', '\n')
        self.paper += p_num

    def i_refill(self, i_num: int) -> None:
        print(f'잉크를 {i_num}장 보충했습니다.', '\n')
        self.ink += i_num

    def dump(self) -> None:
        print(f'남은 종이: {self.paper}, 남은 잉크: {self.ink},'
              f' 총 출력한 인쇄물의 수: {self.total}', '\n')

 

 

- 프린터 프로그램

# 프린트기 코드로 구현한 프린터 프로그램

from enum import Enum
from printer import Printer

Menu = Enum('Menu', ['인쇄물출력', '재료보충', '스캔', '프린트종료'])


def select_menu() -> Menu:
    s = [f'({m.value}){m.name}' for m in Menu]
    while True:
        print(*s, sep='  ', end='')
        n = int(input(': '))
        if 1 <= n <= len(Menu):
            return Menu(n)


operation = Printer(10, 10)

while True:
    menu = select_menu()

    if menu == Menu.인쇄물출력:
        operation.print_paper(int(input('출력할 인쇄물의 수를 입력하세요.: ')))
    elif menu == Menu.재료보충:
        operation.p_refill(int(input('보충할 종이의 양을 입력하세요.: ')))
        operation.i_refill(int(input('보충할 잉크의 양을 입력하세요.: ')))
    elif menu == Menu.스캔:
        operation.dump()
    else:
        break

 

728x90
반응형

'etc. > Project' 카테고리의 다른 글

Chat-GPT를 이용한 가상 피아노  (0) 2023.03.07
php, MySQL을 사용한 게시판  (0) 2022.11.08
구글 클론 코딩  (2) 2022.08.19
제주 여행사 웹 사이트  (0) 2022.08.12
온도 측정 프로그램  (0) 2022.03.27

댓글