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