230911_스터디노트

Sihyun Kim·2023년 9월 11일

[연습문제] 모듈(01)

def examResult(s1, s2, s3, s4, s5):

    passAvg = 60
    limitScore = 40

    total = s1 + s2 + s3 + s4 + s5
    avg = total /5


    print(f'{s1}: Pass') if s1 >= limitScore else print(f'{s1}: Fail')
    print(f'{s2}: Pass') if s2 >= limitScore else print(f'{s2}: Fail')
    print(f'{s3}: Pass') if s3 >= limitScore else print(f'{s3}: Fail')
    print(f'{s4}: Pass') if s4 >= limitScore else print(f'{s4}: Fail')
    print(f'{s5}: Pass') if s5 >= limitScore else print(f'{s5}: Fail')
    print(f'총합: {total}')
    print(f'평균: {avg}')

    if avg >= passAvg:
        if s1 >= limitScore and s2 >= limitScore and s3 >= limitScore and s4 >= limitScore and s5 >= limitScore:
            print('Final Pass!!')
        else:
            print('Final Fail')

위에서 만든 modu.py 호출해서 사용하기

import modu

if __name__ == '__main__':

    s1 = int(input('과목1 점수 입력: '))
    s2 = int(input('과목2 점수 입력: '))
    s3 = int(input('과목3 점수 입력: '))
    s4 = int(input('과목4 점수 입력: '))
    s5 = int(input('과목5 점수 입력: '))

    modu.examResult(s1,s2,s3,s4,s5)
  • 풀이에서는 def 안에 또 def를 넣어서 구조를 만들던데...
    그렇게 해야 할 필요가 있는지 의문
  • 모듈 호출하는 구문(?) 기억이 잘 안난다 ㅠㅠ 자주 써먹어야 할 듯

[연습문제] 모듈(02)

def CalTotalPrice(gs):

    if len(gs) <= 0:
        print('구매 상품이 없습니다')
        return

    rate = 25
    totalPrice = 0

    rates = {1:5, 2:10, 3:15, 4:20}         #딕셔너리가 "딕셔너리"인 이유!

    if len(gs) in rates:
        rate = rates[len(gs)]               #gs의 길이가 1,2,3,4 중에 있다면 rate 값을 rates에서 찾아서 쓰기, 아니면 그대로 25

    for g in gs:
        totalPrice += g * (1 - rate * 0.01)

    return [rate, int(totalPrice)]

def formatedNum(n):
    return format(n, ',')

위에서 만든 module.py 호출하기

import module as dc

if __name__ == '__main__':

    flag = True
    gs = []

    while flag:

        buyOrNot = int(input('상품을 구매 하시겠어요? 1. 구매 2. 종료 '))

        if buyOrNot == 1:
            goods_price = int(input('상품 가격 입력: '))
            gs.append(goods_price)

        elif buyOrNot == 2:
            result = dc.CalTotalPrice(gs)
            flag = False


    print(f'할인율: {result[0]}')
    print(f'합계: {dc.formatedNum(result[1])}원')
  • 몇 개인지 모를 값을 리스트로 받기
  • 딕셔너리에 찾아 쓸 수 있는 값을 나열해두고, 찾아서 쓰기
  • 몇 개인지 모를 값을 추상적으로 생각해서 for문을 돌려서 최종 합계를 구하기
  • 마지막에 리스트를 return하기
  • 모듈 호출 뒤에 가격을 입력 받아서, 리스트에 넣기 (리스트명.append(넣고싶은값))
  • result에 호출한 모듈에 정의된 CalTotalPrice를 리스트 형태로 넣고
    프린트 할 때는 인덱스 찾아서 따로 뽑아내기

[연습문제] 모듈(03)

  • 내가 푼 건 여기까지...
    사용자가 입력한 번호랑 랜덤 번호를 비교해야 하는데,
    그건 풀이 보면서 내일 다시 이해해보기

💀 그나저나 모듈 연습문제부터는 혼자 온전히 풀 수 있는게 없네 ㅎㅎㅎ

profile
문과이과예체능통합형인재

0개의 댓글