Python/문제

파이썬 과제

jjangdoll 2025. 1. 7. 13:54

1번) 짝수 판별하기

내가 쓴 답 : 

n = 3
if n == 0:
  print('0입니다.')
elif n % 2 == 0:
  print('이 숫자는 짝수 입니다.')
else:
  print('이 숫자는 홀수 입니다.')

정답 : 

n = 1
if n == 0:
    print('0 입니다.')
elif n%2 == 0:
    print('짝수입니다.')
else:
    print('홀수입니다.')

2번) 제품 재고 관리

내가 쓴 답 :

inventory_list = [90,60,80]
value = 80
print('현재 기준 값은', value, '% 입니다.')

for index, i in enumerate(inventory_list): 
				# enumerate - 인덱스와 값 동시에 돌릴 때 사용 
    if i == value:
      answer = '적절합니다.'
      print(index+1, '번째 아이템 재고는', i, '%로', answer)
    elif i > value:
      answer = '과잉입니다.'
      print(index+1, '번째 아이템 재고는', i, '%로', answer)
    else:
      answer = '부족합니다.'
      print(index+1, '번째 아이템 재고는', i, '%로', answer)

정답 : 

inventory_list  = [90,60,80]
value = 80
print(f'현재 기준 값은 {value} 입니다.')
for i in range(len(inventory_list)): #리스트, 문자형, range(3)
    if inventory_list[i] == value:
        print(f'{i+1}번째 아이템 재고는 {inventory_list[i]}% 로 적절합니다.')
    elif inventory_list[i] <= value:
        print(f'{i+1}번째 아이템 재고는 {inventory_list[i]}% 로 부족합니다.')
    else:
        print(f'{i+1}번째 아이템 재고는 {inventory_list[i]}% 로 과잉입니다.')

- 프린트 방법

value = 80
print('현재 기준 값은', value ,'입니다.')

# f-string방법
print(f'현재 기준 값은 {value} 입니다.')

# 포매팅 방법
print('현재 기준 값은 {}입니다.'.format(value))

3번) 제품 재고 관리2

내가 쓴 답 : 

inventory_dict  = {'Apple': 90, 'Banana': 60, 'Orange': 80}

def maintain_inventory(data_dict, item, update):

  if item in data_dict:    # 아이템이 있는 경우 
    if data_dict[item] != update: # 아이템이 업데이트 값과 일치하지 않는 경우 
      data_dict[item] = update    # 업데이트 값 변경 
      print('기존 품목', item, '을 업데이트합니다.')
    else:   # 기존 값과 같은 경우 
      print('현재', item, '재고는', update, '% 있습니다.')

  else:     # 아이템이 없는 경우 
    data_dict[item] = update      # 새로운 아이템 추가 
    print('새로운 품목', item, '이 입고 되었습니다.')


  for item, update in inventory_dict.items(): 
    print('현재', item, '재고는', update, '% 있습니다.')


# 1. 기존 값 업데이트
maintain_inventory(inventory_dict, 'Apple', 50)

# 2. 새로운 품목이 들어옴
maintain_inventory(inventory_dict, 'Melon', 40)

정답 :

def maintain_inventory(inventory_dict, item, update):
    # item= 'Melon'
    # update = 40
    if  item in  inventory_dict.keys():
        print(f'기존 품목 {item} 을 업데이트합니다.')
    else:
        print(f'새로운 품목 {item} 을 입고되었습니다.')

    inventory_dict[item] = update
    for key,ratio in inventory_dict.items():
        # print(key,ratio)
        print(f'현재 {key} 재고는 {ratio}% 있습니다.')

- 나는 값 업데이트가 필요한 경우를 if 안에 또 if를 사용해서 집어넣었는데 튜터님은 밖으로 뺌 : 더 깔끔

4번) 이메일 유효성 검사

내가 쓴 답 :

email_list = [
    "example@example.com",  # 유효한 이메일
    "yangbujang@email.co.kr",  # 유효한 이메일
    "iamhungry.com",  # 틀린 이메일 -> @ 누락
    "@da.com",  # 틀린 이메일 -> ID 누락
    "daislove@isnit",  # 틀린 이메일 -> 도메인 잘못됨
]

def check_email(email_list):
  for email in email_list:
    domain = email.split('@')[-1]     # @ 기준 뒷부분 추출
    domainn = domain.split('.')       # . 기준 끊기

    if len(email.split('@')) == 1:    # @ 없으면 끊기지 않았으니까 개수 1
      print('유효하지 않은 이메일입니다:', email, '이유: @가 누락')
    elif (email.split('@'))[0] == '': # @ 기준 앞이 공백인 경우
      print('유효하지 않은 이메일입니다:', email, '이유: ID가 누락')
    elif len(domainn) < 2 or not domainn[1].startswith('c'): 
    # domainn . 기준 나눈 두번째 문자열 앞글자 c가 아닌 경우 
    # 개수 조건 추가 안 하면 인덱스 오류남
      print('유효하지 않은 이메일입니다:', email, '이유: 적절하지 않은 도메인')
    else:
      print('유효한 이메일입니다:', email)
check_email(email_list)

정답 : 

email_list = [
    "example@example.com",  # 유효한 이메일
    "yangbujang@email.co.kr",  # 유효한 이메일
    "iamhungry.com",  # 틀린 이메일 -> @ 누락
    "@da.com",  # 틀린 이메일 -> ID 누락
    "daislove@isnit",  # 틀린 이메일 -> 도메인 잘못됨
]
def check_emai(email_list):
    for email in email_list:
        if '@' not in email:
            print(f'유효하지 않은 이메일입니다. {email}, 이유: @가 누락')
            continue

        id_part, domain_part = email.split('@',1)
        # print(id_part, domain_part)
        #id누락
        if not id_part: # if True/False
            print(f'유효하지 않은 이메일입니다 {email} 이유: id 누락')
            continue


        # vaild_domain = ['.com','.co.kr']
        #도메인검사

        if domain_part.endswith('.com')   or  domain_part.endswith('.co.kr'):
            pass
        else:
            print(f'유효하지 않은 이메일입니다 {email} 이유: 적절하지 않은 도메인')
            continue

        print(f'유효한 이메일입니다: {email}')

 

'Python > 문제' 카테고리의 다른 글

파이썬 | 한 번만 등장한 문자, 인덱스 바꾸기  (0) 2025.01.09
파이썬 | 합성수 찾기, 문자열 정렬하기(1)  (0) 2025.01.08
파이썬 과제  (0) 2025.01.08
파이썬 과제  (0) 2025.01.06