Python

2023.04.20

연을 2023. 4. 20. 17:29
728x90
  List Tuple Set Dictionary
표기 [ ] ( ) { } {키:값}
변환함수 x=list() x=tuple() x=set() x=dict()
생성 x=[v1,...,vN] x=v1,...,vN x={ } x= {k1:v1,...,kN:vN}
값의순서 있다 있다 없다 없다
인덱스 사용 Yes Yes No No
추가/수정/삭제 Yes No Yes Yes
for i in List : for i in tuple : for i in Set :  for x,y in Dict.items() :

[list]

  • list[i] = value → list 수정하는 법
  • list = String : 인덱스를 사용
  • list[strat:end+1]
  • lValue[3,'hello',3.14,true,3-5i] : 데이터를 섞어쓸 수 있다.
  • lValue[]
  • ArrayList alName = new ArrayList();
  • let alName = [];

[for]+[list]

둘 다 같은 코드라 할 수 있다. lName=['고조선','고구려','백제','신라','통일신라','발해','고려','조선']
for name in LName:
    print(name)
for name in ['고조선','고구려','백제','신라','통일신라','발해','고려','조선']:
    print(name)
얕은복사(swallow copy) name2=name1
깊은복사(import copy) name1→['톰','존'](101)
name2→['톰','존'](120)
name2 = copy.deepcopy(name)

[tuple]

  • tuple값은 수정이 되지 않는다.
  • 원래 값을 서로 바꾸려면 변수명을 하나 선언해서 서로 바꿔 줘야 했지만 tuple이 변수를 선언하지 않아도 서로 바꿀 수 있게 해준다. ex) i,j = j,i → 이렇게 한 줄로 가능
  • 새로 생기기만 할 뿐 기존의 건 날아감

[set]

  • 중복값을 제거할 때 쓰인다.
.intersection : 교집합
.union : 합집합
.difference : 차집합
.update & .add : 추가(수정)
.remove & .discard : 삭제

[DICTionary]

  • dictionary = javascript : object
  • 4개의 복합자료구조 안에는 다른 자료구조가 포함될 수 있다.

javascript obj = {name:'john',age:25,moblie:'01044445555',city:'cheonan'};
obj.name & obj['name'] & str='name' & obj[str]
python
obj = {'name':'john','math':100,'eng':90,'kor':96}

코드

d1={'name':'John','math':100,'eng':87,'kor':95}
for x in d1:
    print(x)
print()
for x in d1:
    print(d1[x])
print()
for x,y in d1.items():
    print(x,y)

결과

name
math
eng
kor

John
100
87
95

name John
math 100
eng 87
kor 95

[국영수 점수 입력/출력/총점/평균]

코드

stdict={}
sumk=0
sume=0
summ=0
avgk=0
avge=0
avgm=0
name=input('학생 이름을 입력하세요 ['':종료]:')
while name!="":
    stdict[name] = {}
    stdict[name]['국어'] = []
    stdict[name]['영어'] = []
    stdict[name]['수학'] = []
    kor = float(input('국어 점수를 입력하시오 :'))
    stdict[name]['국어'].append(kor)
    sumk += kor
    eng = float(input('영어 점수를 입력하시오 :'))
    stdict[name]['영어'].append(eng)
    sume += eng
    math = float(input('수학 점수를 입력하시오 :'))
    stdict[name]['수학'].append(math)
    summ += math
    name = input('학생 이름을 입력하세요 ['':종료]:')

print()
for name, subjects in stdict.items():
    print(name, subjects)

num_students = len(stdict)
avgk = sumk / num_students
avge = sume / num_students
avgm = summ / num_students
print()
print('국어 총점 :',sumk)
print('영어 총점 :',sume)
print('수학 총점 :',summ)
print()
print('국어 평균 :',avgk)
print('영어 평균 :',avge)
print('수학 평균 :',avgm)

결과

학생 이름을 입력하세요 ['':종료]:john
국어 점수를 입력하시오 :90
영어 점수를 입력하시오 :78
수학 점수를 입력하시오 :97
학생 이름을 입력하세요 ['':종료]:lisa
국어 점수를 입력하시오 :87
영어 점수를 입력하시오 :79
수학 점수를 입력하시오 :48
학생 이름을 입력하세요 ['':종료]:

john {'국어': [90.0], '영어': [78.0], '수학': [97.0]}
lisa {'국어': [87.0], '영어': [79.0], '수학': [48.0]}

국어 총점 : 177.0
영어 총점 : 157.0
수학 총점 : 145.0

국어 평균 : 88.5
영어 평균 : 78.5
수학 평균 : 72.5

[메뉴명,가격을 입력받아 출력]

코드

lcafe=[]
dcafe={}
menu=input('메뉴명을 입력하세요 ['':종료] : ')
while menu!="":
    price=int(input('가격을 입력하세요:'))
    dcafe={'name':menu,'price':price}
    lcafe.append(dcafe)
    menu = input('메뉴명을 입력하세요 ['':종료] : ')

print()
for dcafe in lcafe:
    print('%-12s %4d'%(dcafe['name'],dcafe['price']))

결과

메뉴명을 입력하세요 [:종료] : 아메리카노
가격을 입력하세요:2500
메뉴명을 입력하세요 [:종료] : 라떼
가격을 입력하세요:3000
메뉴명을 입력하세요 [:종료] : 

아메리카노        2500
라떼           3000

[파일 입출력]

  • f=open(파일명('/'),'r/w/a/b')
  • f.read() 파일전체를 읽어서 문자열로 저장
  • f.readline() 한줄을 읽어서 문자열로 저장
  • f.readlines() 파일전체를 읽어서 라인단위로 리스트에 저장
  1. menu.txt를 읽어서 lMenu리스트 구성
  2. 작업을 선택하시오['m':메뉴관리,'o':주문관리,'s':매출관리, " ":프로그램종료]
  3. 작업이 "프로그램종료"가 아닌동안
    1. if 'm'
    2. elif 'o'
    3. elif 's'
    4. 작업을 선택하시오['m':메뉴관리,'o':주문관리,'s':매출관리, " ":프로그램종료]
  4. 프로그램 종료 출력

코드

lMenu=[]
f=open('D:/Cafe/menu.txt','r')
str=f.readline()
while str!='':
    menu=str.split(',')
    dMenu={'name':menu[0],'price':int(menu[1])}
    lMenu.append(dMenu)
    str=f.readline()
work = input("작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, '':프로그램종료]")
while work!="":
    if work=='m':
        for menu in lMenu:
            print('%-12s %4d' % (menu['name'], menu['price']))
        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("프로그램종료")

결과

작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, '':프로그램종료]m
Latte        3000
Moca         3500
Espresso     2500
Americano    2700
Cappuccino   3600
ErlGrey      2800
GreenTea     2300
IceAmericano 2800
작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, :프로그램종료]o
주문관리
작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, :프로그램종료]s
매출관리
작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, :프로그램종료]a
잘못입력하셨습니다. 다시 선택해 주세요
작업을 선택하시오 ['m':메뉴관리, 'o':주문관리,'s':매출관리, :프로그램종료]
프로그램종료

Process finished with exit code 0
728x90