Python

2023.04.21

연을 2023. 4. 21. 17:30
728x90

카페 메뉴 관리 코드만 완성(메모장에 저장하는 것까지 완료)

[코드]

lMenu=[]
f=open('D:/Cafe/menu.txt','r')
str=f.readline()
n=1
while str!='':
    menu=str.split(',')
    dMenu={'num':n,'name':menu[0],'price':int(menu[1])}
    lMenu.append(dMenu)
    str=f.readline()
    n +=1
work = input("작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, '':프로그램종료]")
while work!="":
    if work=='m':
        #menu list display
        for menu in lMenu:
            print('%-12s %4d' % (menu['name'], menu['price']))
        #메뉴작업 입력 (a:추가,d:삭제,u:수정,l:display , '':메뉴작업종료)
        menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
        while menuwork!='':
            if menuwork=='a':
                max_num = max([menu['num'] for meun in lMenu])
                #lMenu에 새 메뉴명, 가격 추가
                name=input('메뉴명을 입력하세요 ['':종료]')
                while name!='':
                    price=int(input('가격을 입력하세요'))
                    dMenu = {'num':max_num+1,'name': name, 'price': price}
                    lMenu.append(dMenu)
                    max_num +=1
                    name = input('메뉴명을 입력하세요 ['':종료]')

                menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
            elif menuwork=='d':
                #메뉴번호 읽어서 삭제
                for menu in lMenu:
                    print('%2d %-12s %4d' % (menu['num'],menu['name'], menu['price']))

                n=int(input("삭제할 메뉴 변호를 선택하세요.['0':종료]"))
                while n!=0:
                    if n>len(lMenu) or n<1:
                        print("잘못된 번호입니다. 다시 입력하세요")
                        n = int(input("삭제할 메뉴 변호를 선택하세요.['0':종료]"))
                        continue
                    del lMenu[n-1]
                    n = int(input("삭제할 메뉴 변호를 선택하세요.['0':종료]"))

                menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
            elif menuwork=='u':
                #메뉴번호, 메뉴명, 가격 읽어서 lmenu메뉴번호 수정
                for menu in lMenu:
                    print('%2d %-12s %4d' % (menu['num'], menu['name'], menu['price']))
                n=int(input("메뉴수정할 번호를 입력하세요 ['0':종료]"))
                while n!=0:
                    if n>len(lMenu) or n<1:
                        print("잘못된 번호입니다. 다시 입력하세요")
                        n = int(input("삭제할 메뉴 변호를 선택하세요.['0':종료]"))
                        continue
                    new_name = input('메뉴명을 입력하세요 ['':종료]')
                    if new_name=='':
                        break
                    new_price = int(input('가격을 입력하세요'))
                    lMenu[n - 1]['name'] = new_name
                    lMenu[n - 1]['price'] = new_price
                    print('%2d %-12s %4d' % (lMenu[n-1]['num'],lMenu[n-1]['name'],lMenu[n-1]['price'] ))
                    n = int(input("수정할 메뉴 번호를 입력하세요 ['0':종료]"))
                menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
            elif menuwork=='l':
                for menu in lMenu:
                    print('%2d %-12s %4d' % (menu['num'],menu['name'], menu['price']))
                menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
            else:
                print('잘못입력하셨습니다. 다시 선택해 주세요')
                menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
        #lMenu의 내용을 menu.txt.에 저장
        menu_str=[]
        for menu in lMenu:
            menu_str.append(f"{menu['name']}, {menu['price']}")
        with open('D:/Cafe/menu.txt','w') as f:
            f.write('\n'.join(menu_str))
            f.close()

        # f=open('D:/Cafe/menu.txt','w')
        # for menu in lMenu:
        #     line=menu['name']+','+str(menu['price'])+'\n'
        #     f.write(line)
        # f.close()
        print('메뉴작업을 종료하였습니다.')
        work = input("작업을 선택하세요 ['m':메뉴관리, 'o':주문관리,'s':매출관리, " ":프로그램종료]")
    elif work=='o':
        print('주문관리')
        work = input("작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, " ":프로그램종료]")
    elif work=='s':
        print('매출관리')
        work = input("작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, " ":프로그램종료]")
    else:
        print('잘못입력하셨습니다. 다시 선택해 주세요')
        work = input("작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, " ":프로그램종료]")
print("프로그램종료")

[함수]

def 함수명(매개변수1,...,매개변수N):

    실행문

    return 값

  • 함수는 항상 위에서 선언해야 한다. java처럼 밑에서 선언하면 함수를 찾지 못함

<전역변수 코드> : global은 잘 쓰지 않는다. 피치못할 때만 쓴다고 한다.

[코드]

player='전국대표' #전역변수

def funcsoccer():
    #global player
    name='홍길동'
    player='지역대표' #지역변수(in 함수)
    print(name,player)

print(player)
funcsoccer()
print(player)

[결과]

전국대표
홍길동 지역대표
전국대표

 

[코드]

player='전국대표' #전역변수

def funcsoccer():
    global player
    name='홍길동'
    player='지역대표' #지역변수(in 함수)
    print(name,player)

print(player)
funcsoccer()
print(player)

[코드]

전국대표
홍길동 지역대표
지역대표

[카페 함수로 바꾼 코드]

def buildMenu():
    MenuList = []
    f = open('D:/Cafe/menu.txt', 'r')
    str = f.readline()
    n = 1
    while str != '':
        menu = str.split(',')
        dMenu = {'num': n, 'name': menu[0], 'price': int(menu[1])}
        MenuList.append(dMenu)
        str = f.readline()
        n += 1
    return MenuList

def saveMenu(menulist):
    menu_str = []
    for menu in menulist:
        menu_str.append(f"{menu['name']}, {menu['price']}")
    with open('D:/Cafe/menu.txt', 'w') as f:
        f.write('\n'.join(menu_str))
        f.close()

def addMenu(menulist):
    max_num = max([menu['num'] for meun in menulist])
    # lMenu에 새 메뉴명, 가격 추가
    name = input('메뉴명을 입력하세요 ['':종료]')
    while name != '':
        price = int(input('가격을 입력하세요'))
        dMenu = {'num': max_num + 1, 'name': name, 'price': price}
        menulist.append(dMenu)
        max_num += 1
        name = input('메뉴명을 입력하세요 ['':종료]')

def delMenu(menulist):
    # 메뉴번호 읽어서 삭제
    for menu in menulist:
        print('%2d %-12s %4d' % (menu['num'], menu['name'], menu['price']))

    n = int(input("삭제할 메뉴 변호를 선택하세요.['0':종료]"))
    while n != 0:
        if n > len(menulist) or n < 1:
            print("잘못된 번호입니다. 다시 입력하세요")
            n = int(input("삭제할 메뉴 변호를 선택하세요.['0':종료]"))
            continue
        del menulist[n - 1]
        n = int(input("삭제할 메뉴 변호를 선택하세요.['0':종료]"))


def updateMenu(menulist):
    # 메뉴번호, 메뉴명, 가격 읽어서 lmenu메뉴번호 수정
    for menu in menulist:
        print('%2d %-12s %4d' % (menu['num'], menu['name'], menu['price']))
    n = int(input("메뉴수정할 번호를 입력하세요 ['0':종료]"))
    while n != 0:
        if n > len(menulist) or n < 1:
            print("잘못된 번호입니다. 다시 입력하세요")
            n = int(input("삭제할 메뉴 변호를 선택하세요.['0':종료]"))
            continue
        new_name = input('메뉴명을 입력하세요 ['':종료]')
        if new_name == '':
            break
        new_price = int(input('가격을 입력하세요'))
        lMenu[n - 1]['name'] = new_name
        lMenu[n - 1]['price'] = new_price
        print('%2d %-12s %4d' % (menulist[n - 1]['num'], menulist[n - 1]['name'], menulist[n - 1]['price']))
        n = int(input("수정할 메뉴 번호를 입력하세요 ['0':종료]"))


def displayMenu(menulist):
    for menu in menulist:
        print('%2d %-12s %4d' % (menu['num'], menu['name'], menu['price']))

lMenu = buildMenu()

work = input("작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, '':프로그램종료]")
while work!="":
    if work=='m':
        #menu list display
        for menu in lMenu:
            print('%-12s %4d' % (menu['name'], menu['price']))
        #메뉴작업 입력 (a:추가,d:삭제,u:수정,l:display , '':메뉴작업종료)
        menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
        while menuwork!='':
            if menuwork=='a':
                addMenu(lMenu)
                menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
            elif menuwork=='d':
                delMenu(lMenu)
                menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
            elif menuwork=='u':
                updateMenu(lMenu)
                menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
            elif menuwork=='l':
                displayMenu(lMenu)
                menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
            else:
                print('잘못입력하셨습니다. 다시 선택해 주세요')
                menuwork = input("메뉴작업을 선택하세요 [a:추가, d:삭제, u:수정, l:display, '':메뉴작업종료]")
        #lMenu의 내용을 menu.txt.에 저장
        saveMenu(lMenu)

        # f=open('D:/Cafe/menu.txt','w')
        # for menu in lMenu:
        #     line=menu['name']+','+str(menu['price'])+'\n'
        #     f.write(line)
        # f.close()
        print('메뉴작업을 종료하였습니다.')
        work = input("작업을 선택하세요 ['m':메뉴관리, 'o':주문관리,'s':매출관리, " ":프로그램종료]")
    elif work=='o':
        print('주문관리')
        work = input("작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, " ":프로그램종료]")
    elif work=='s':
        print('매출관리')
        work = input("작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, " ":프로그램종료]")
    else:
        print('잘못입력하셨습니다. 다시 선택해 주세요')
        work = input("작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, " ":프로그램종료]")
print("프로그램종료")

[결과]

위에 결과랑 같다.

 

[코드]: 이 코드는 사용할수 없는 코드 뒤부터 무조건 채워야 한다.

def showplus(i,j=1,k,l=3):
    print(i+j+k+l)

showplus(2,3,5)

[코드]

#defalt있는 값은 굳이 안넣어도 사용가능
def showplus(i,j,k,l=3):
    print(i+j+k+l)

showplus(2,3,5)

[결과]

13

[코드]

def func1(*ar):
    print(ar)

func1('Hello','World','Beautiful','Soup')

[결과]

('Hello', 'World', 'Beautiful', 'Soup')

[코드] : tuple로 처리하는 *ar

def func1(*ar):
    for x in ar:
        print(x)

func1('Hello','World','Beautiful','Soup')

[결과]

Hello
World
Beautiful
Soup

[코드] : 딕셔너리로 처리하는 **other

def func(w,h,**other):
    print('몸무게 {}, 키 {}'.format(w,h))
    print(other)

func(65,178,irum='지구인',nai=23)

[결과]

몸무게 65, 키 178
{'irum': '지구인', 'nai': 23}

[코드]

def functotal(a,b,*v1,**v2):
    print(a,b)
    print(v1)
    print(v2)

functotal(1,2,3,4,5,m=6,n=7)

[결과]

1 2
(3, 4, 5)
{'m': 6, 'n': 7}

[사용자 정의 모듈 작성 및 읽어오기]

from 패키지명 import 파이썬파일명

 

ex) form pack1 import mymode1

BeautifulSoup → download > install > import

 

[코드]

import pygame
import sys

pygame.init()
windowSurface = pygame.display.set_mode((400,300))
pygame.display.set_caption('안녕 파이게임')

windowSurface.fill(color=(255,255,255))

pygame.draw.line(surface=windowSurface,color=(255,0,0),start_pos=(50,30),end_pos=(100,30),width=1)
pygame.draw.line(surface=windowSurface,color=(0,0,255),start_pos=(50,50),end_pos=(200,50),width=3)

pygame.draw.circle(surface=windowSurface, color=(255,0,0), center=(100,150), radius=30)

pygame.draw.polygon(surface=windowSurface, color=(0,255,0),points=((250,100),(200,150),(300,150)))

pygame.display.update()

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

[결과]

 

728x90