문제 1. 짝수 판별하기
- 출제의도
- 조건문을 사용하고 출력함수를 사용할 수 있다.
- 배경
- 당신은 간단한 조건문을 이용해서 숫자를 분별하려고합니다.
- 요구사항
- 무작위 정수 n 이 주어집니다.
- 변수 n 을 가지고 짝수인지 홀수인지 0인지 출력하는 파이썬 코드를 만드세요. 함수형이 아니여도 괜찮습니다.
- 짝수는 2로 나누었을때 나누어 떨어지는 숫자입니다.
- 홀수는 2로 나누었을때 나머지가 1이 남는 숫자 입니다.
- n = 3, n= 2, n= 0 인 케이스 모두 3가지를 채점할 예정입니다.
- Skeleton Code
n = 3 ''' 여기에 코드를 작성하세요 '''
5. 출력 예시
''' 이 숫자는 홀수 입니다. '''
💡 문제 풀이
n = 3 if n == 0: print('이 숫자는 0입니다.') elif n % 2 == 0: print('이 숫자는 짝수입니다.') elif n % 2 == 1: print('이 숫자는 홀수입니다.')
오답노트
- if문에서 첫 순서로 n % 2 == 0이 오면 뒤에 0에 대한 조건을 걸어도 짝수로 처리되기 때문에 맨 위에 0 조건을 씀
문제 2. 제품 재고 관리1
- 출제의도
- 리스트의 인덱스를 이해하고 원소에 접근할 수 있다.
- 반복문과 리스트 자료형을 이용하여 기능을 구현할 수 있다.
- print 내장함수에 변수를 포함시켜 출력할 수 있다.
- 배경
- 당신은 소매점에서 근무하며 제품의 재고 관리를 담당하고 있습니다. 재고가 부족하거나 과잉인 제품을 식별하는 것이 중요합니다. 주어진 제품의 재고 데이터를 확인하여, 재고의 상태를 나타내는 파이썬 코드를 만드세요.
- 요구사항
- inventory_list 리스트의 각 요소는 현재 재고비율 형식의 리스트입니다.
- 예: [90, 60, 80]
- 해석: 1번째 아이템은 90%, 2번째 아이템은 60%, 3번째 아이템은 80%의 재고가 남아있습니다.
- 기준치 value를 받습니다. 기준치 이하면 재고가 부족한 것으로, 기준치 이상이면 재고가 과잉인 것으로 기준치와 같다면 적절한 것으로 간주합니다
- 각 제품의 재고량이 주어진 기준치보다 많은지 적은지를 적절한지 판단합니다.
- ex) 기준치를 80로 설정한다면 첫 번째 아이템은 과잉, 두 번째 아이템은 부족입니다, 세번째 아이템은 적절으로 출력하는 기능을 만듭니다.
- inventory_list 리스트의 각 요소는 현재 재고비율 형식의 리스트입니다.
- Skeleton Code
inventory_list = [90,60,80] value = 80 ''' 여기에 들어갈 코드를 작성하세요 '''
5. 출력 예시
''' 현재 기준 값은 80% 입니다. 1 번째 아이템 재고는 90% 로 과잉입니다. 2 번째 아이템 재고는 60% 로 부족합니다. 3 번째 아이템 재고는 80% 로 적절합니다. '''
💡 문제 풀이
처음 풀이
inventory_list = [90,60,80] value = 80 print('현재 기준 값은',value,'%입니다.') for index, i in enumerate(inventory_list,start=1): if i > value: print(index,'번째 아이템 재고는',i,'%로 과잉입니다.') if i == value: print(index,'번째 아이템 재고는',i,'%로 적절합니다.') if i < value: print(index,'번째 아이템 재고는',i,'%로 부족합니다.')
[복습] 더 나은 풀이
- f string 사용
- if문 3개 사용 -> if, elif, else
- 출력될 문장이 비슷한 구조이니 만큼 새로운 변수 status를 생성하여 간단하게 관리
inventory_list = [90, 60, 80] value = 80 print(f'현재 기준 값은 {value}%입니다.') for index, stock in enumerate(inventory_list, start=1): if stock > value: status = "과잉" elif stock < value: status = "부족" else: status = "적절" print(f'{index}번째 아이템 재고는 {stock}%로 {status}입니다.')
오답노트
- 처음에 for 문에서 in 뒤에 [inventory_list]로 대괄호 안에 써서 에러남 → for i in inventory_list
- 그 다음엔 순서를 나타내려고 for j in range(1,n+1): 를 추가했다가 모든 경우의 수가 나옴
- for문의 순서와 요소 값을 동시에 출력할 수 있는 enumerate 내장 함수가 있음!
참고) enumerate 내장 함수
enumerate(iterable, start=0)
파이썬 코딩 도장: 22.3 반복문으로 리스트의 요소를 모두 출력하기
리스트에 인덱스를 지정하여 요소를 한 개씩 출력하기는 상당히 귀찮죠? 이번에는 리스트와 반복문을 사용하여 간단하게 모든 요소를 출력해보겠습니다. 22.3.1 for 반복문으로 요소 출력하기
dojang.io
문제 3. 제품 재고 관리2
- 출제의도
- 함수를 만들 수 있다.
- 딕셔너리 자료형 접근방법을 이해하며 메소드를 사용할 수 있다.
- 배경설명
- 리스트 형태로 재고를 관리하다보니 재고품목 이름을 기록하지 못하는 문제가 있습니다. 이를 보완하기 위하여 딕셔너리 자료형을 이용해 관리하려고 합니다. 또한 함수형으로 만들어 재사용성을 보완하고자 합니다.
- 데이터 설명
- inventory_dict 딕셔너리의 각 요소는 아이템이름과 수량비율로 표기합니다.
- ex) {'Apple':90, 'Banana': 60, 'Orange': 80}
- 해석: Apple은 90% 재고비율, Banna 는 60% 재고비율, Oragne는 80%의 재고비율을 가지고 있습니다.
- maintain_inventory 는 재고품목과 재고비율을 전달하여 재고 관리를 도와주는 함수입니다.
- 기능1) inventory_dict 딕셔너리는 재고품목, 재고비율을 전달하면 재고 비율을 업데이트합니다.
- 기능 1-1) 존재하는 재고 품목이면 재고비율을 갱신합니다. 기존 품목을 업데이트했다고 알립니다.
- 기능 1-2) 존재하지 않는 재고품목이면 새롭게 만들고 재고비율을 할당합니다. 새로운 재고가 들어왔다고 알립니다.
- 기능2) 모든 재고품목과 재고비율을 출력합니다.
4. Skeleton Code
inventory_dict = {'Apple':90, 'Banana': 60, 'Orange': 80} def maintain_inventory(data_dict, item, update): ''' 여기에 들어갈 코드를 작성하세요 ''' # 1. 기존 값 업데이트 maintain_inventory(inventory_dict, 'Apple', 50) # 2. 새로운 품목이 들어옴 maintain_inventory(inventory_dict, 'Melon', 40)
5. 출력 예시
# 1. 기존 값 업데이트 maintain_inventory(inventory_dict, 'Apple', 50) ''' 기존 품목 Apple을 업데이트합니다. 현재 Apple 재고는 50% 있습니다. 현재 Banana 재고는 60% 있습니다. 현재 Orange 재고는 80% 있습니다. ''' # 2. 새로운 품목이 들어옴 maintain_inventory(inventory_dict, 'Melon', 40) ''' 새로운 품목 Melon이 입고 되었습니다. 현재 Apple 재고는 50% 있습니다. 현재 Banana 재고는 60% 있습니다. 현재 Orange 재고는 80% 있습니다. 현재 Melon 재고는 40% 있습니다. '''
💡 문제 풀이
처음 풀이
inventory_dict = {'Apple':90, 'Banana': 60, 'Orange': 80} def maintain_inventory(data_dict, item, update): if inventory_dict.get(item) == None : # get으로 딕셔너리에 키있는지 체크, 없으면 None으로 출력됨 print('새로운 품목',item,'이 입고되었습니다.') inventory_dict[item] = update # 딕셔너리에 요소 추가: dict[key]=value for key, value in inventory_dict.items(): # 딕셔너리에서 키,값 쌍으로 출력하려면 .items() 활용 print('현재 ',key,'재고는 ',value,'% 있습니다.') else: print('기존 품목',item,'을 업데이트합니다.') inventory_dict[item] = update for key, value in inventory_dict.items(): print('현재 ',key,'재고는 ',value,'% 있습니다.') # 1. 기존 값 업데이트 maintain_inventory(inventory_dict, 'Apple', 50) # 2. 새로운 품목이 들어옴 maintain_inventory(inventory_dict, 'Melon', 40)
[복습] 더 간단한 풀이
- f string과 in을 활용
- def에서 inventory_dict를 직접 지정하지 않고 data_dict로 정의해서 디버깅하기 좋게 변경
inventory_dict = {'Apple':90, 'Banana': 60, 'Orange': 80} def maintain_inventory(data_dict, item, update): if item in data_dict : print(f'기존 품목 {item}을 업데이트합니다.') else: print(f'새로운 품목 {item}이 입고되었습니다.') # 기존에 있든 없든 요소 추가/수정 data_dict[item]=update for key, value in data_dict.items(): print(f'현재 {key} 재고는 {value}% 있습니다.') # 1. 기존 값 업데이트 maintain_inventory(inventory_dict, 'Apple', 50) # 2. 새로운 품목이 들어옴 maintain_inventory(inventory_dict, 'Melon', 40)
오답노트
- 딕셔너리에 요소 추가:
dict[key]=value
- 딕셔너리에서 키,값 쌍으로 출력하려면
dict.items()
활용
파이썬 코딩 도장: 25.2 반복문으로 딕셔너리의 키-값 쌍을 모두 출력하기
이번에는 딕셔너리와 for 반복문을 사용하여 간단하게 모든 키-값 쌍을 출력해보겠습니다. >>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40} >>> for i in x: ... print(i, end=' ') ... a b c d for i in x:처럼 for 반복문
dojang.io
- 처음에 in으로 풀었다가 key값이 기존 딕셔너리에 없었던 melon에 대해 계속 '기존 품목'이라고 출력해서 get함수를 써서 key가 있는지 없는지( key 없을 시 None으로 출력됨) 체크했음. 근데~ 알고보니 in이 문제가 아니고 update를 if문 위에 써버려서 순서 상 먼저 추가되어서 그랬던 것이었다~ 는 반전
참고) def함수
def 함수이름(매개변수): 함수의 내용
파이썬 함수 (def)
파이썬 함수는 특정 작업을 수행하는 코드 블록을 하나로 묶어주는 기능을 제공합니다. 함수를 사용하면 코드의 재사용성이 증가하고, 코드의 구조가 단순해지며, 유지 보수가 용이해집니다.
workauto.tistory.com