본문 바로가기
Python

2/2 - Python; 개인과제 피드백

by PETRA_94 2024. 2. 2.

[피드백]

* 오답문제만 오답이라고 채점


문제1) 오답
[잘하신 부분] map을 활용한 for 문 출력
[보완해야할 점]
1. 기준치값(n)을 함수의 두번째 전달인자로 받아 설계할 것2. if구문에서 20넘는 것은 과잉으로 잘 구현 했으나 else: 구문에서는 20보다 같거나 작은 것이 과잉으로 판단되었음. 이부분 오류

문제2)
[잘하신 부분] 정규표현식 모듈 re와 함수 return 부분을 잘 적용함
[보완해야할 점] map과 print 를 함수 내에 작성하여 완성된 함수로 작성했으면 best


문제3)
[잘하신 부분] 좀더 general 한 문제 ex 동명이인이 없는 참여자의 경우 해당 코드가 작성하지 않을 것이나 아이디어는 좋은 방법이라고 여겨짐. 문제를 조금 단순하게 설계한 것의 한계이며 정답은 맞음
[보완해야할 점] 좀 더 제너럴한 풀이방법도 고려해보면 좋겠습니다.


문제4)
[잘하신 부분] x,y,z 를 명확하게 명시한 것은 파라미터를 외부에서 받아 내부 클래스 속성에 전달하는 것을 이해했기때문에 가능한 것이라고 생각됨 이해도 good
[보완해야할 점] 다만, 클래스, 함수를선언할 때 변수명은 직관적인게 좋습니다.
(미래의 나 그리고 동료가 헷갈리지 않도록)

 

[복습할 코드 내용]

문제1) 오답

  • 내가 쓴 코드: 
inventory_data = [
    {'name': 'Apple', 'quantity': 30},
    {'name': 'Banana', 'quantity': 20},
    {'name': 'Orange', 'quantity': 50}
]

def check_quantity(inventory_data):
    if inventory_data['quantity'] > 25:
        return inventory_data['name'], '과잉'
    else:
        return inventory_data['name'], '부족'

for d, n in map(check_quantity, inventory_data):
    print(d, n)

 

  • 정답 코드: 
def check_inventory(inventory_data, threshold):
    low_stock = []
    high_stock = []
    # threshold = 30
    inven_len = len(inventory_data)
    for i in range(inven_len):
        product = inventory_data[i][0]
        quantity = inventory_data[i][1]
        if quantity > threshold:
            # print(f'{product}는 과잉입니다.')
            high_stock.append(product)
        elif quantity < threshold:
            # print(f'{product}는 부족입니다.')
            low_stock.append(product)
        else: # 동률인경우
            pass
    return high_stock, low_stock
    # print(low_stock, high_stock)
low, high = check_inventory(inventory_data, 30)
print(low, high)
for product, quantity in inventory_data:
    print(product, quantity)

문제3)

  • 내가 쓴 코드: 
# 예시 데이터
participant = ["mike", "lisa", "tom", "lisa"]
completion = ["tom", "mike", "lisa"]

find_non_completer = participant + completion #중복 원소를 추출해야 하니 2개 리스트 합침

person = max(find_non_completer, key=find_non_completer.count) #제일 등장한 횟수가 많은 사람 추출
print(person)
  • 정답 코드:
    1) dictionary 이용한 방법
# dictionary 형으로 만들기 
def find_non_completer(participant, completion):
    my_dict = {}
    for name in participant:
        # name이 없으면 values값 0으로 설정
        my_dict[name] = my_dict.get(name,0) + 1

    for name2 in completion:
        my_dict[name2] = my_dict[name2] -1

    for name3 in my_dict:
        if my_dict[name3] == 1:
            return name3
  • 정답 코드:
    2) 모듈을 이용한 방법
from collections import Counter

# Counter(participant)

result = Counter(participant) - Counter(completion)
answer = list(result.keys())
print(answer[0])

 

[배운 점]

  • 문제 1번은 정답 코드를 봐도 무슨 말인지 1도 모르겠다. 기준치가 25가 아니면 뭐란 말임..? 매우 납득 안됨.

  • 개인과제가 이번주는 나오지 바라질 않았건만 나왔다. 이번엔 머신 모델링이라는데 강의만 들으면 간단히 구현할 수 있을 정도라고 한다. 지난 월요일에 상을 당해서 주중에 강의를 1개도 듣질 못했다. 주말에 빡세게 해야 한다.
  • 차주부터 심화 프로젝트가 시작되니 바짝 벼락치기를 해야 한다. 나는 머리가 좋으니까 할 수 있다!!!