python - module : 데이터 취업 스쿨 스터디 노트 11/10

slocat·2023년 11월 10일
0

start-data

목록 보기
9/75

return❓ break❓

return : "함수"의 실행을 중단하고 return값 반환
break : break가 들어있는 가장 가까운 "반복문"의 실행을 중단

모듈 문제 2번

할인율을 설정할 때 if-elif-esle문을 사용했더니 중복된 코드가 많아서 한참을 고민했는데, 선생님처럼 할인율을 딕셔너리에 담아서 사용하니 간결해졌다.
자료구조를 이렇게 써먹는구나...😂

함수를 여러 개로 나눠서 다시 코드를 작성해보았다.

def checkGoods():
    goods = []

    while True:
        inputNumber = int(input('1. 구매  2.종료 : '))

        if inputNumber == 1:
            price = int(input('가격 입력: '))
            goods.append(price)

        elif inputNumber == 2:
            return goods


def totalPrice(goods):
    totalPrice = 0

    for price in goods:
        totalPrice += price

    return totalPrice


def discountRate(goods):
    discountRate = 25
    rates = {1: 5, 2: 10, 3: 15, 4: 20}

    # 할인율 기본값 = 최대값으로 설정
    if len(goods) in rates:
        discountRate = rates[len(goods)]

    return discountRate


def discountPrice(goods):

    if len(goods) == 0:
        print('장바구니에 상품이 없습니다.')
        return

    discountPrice = totalPrice(goods) * (1 - discountRate(goods) * 0.01)
    return round(discountPrice)


goods = checkGoods()
print(f'개별 상품 가격: {goods}')
print(f'총액: {totalPrice(goods)}원')
print(f'할인율: {discountRate(goods)}%')
print(f'할인된 금액: {discountPrice(goods)}원')

모듈 문제 3번 - set, get

import random

userNums = []
lottoNums = []
bonusNum = 0
matchedNums = []

# set: 값을 넣어줌
def setUserNums(inputNum):
    global userNums
    userNums = inputNum

# get: 값을 가져옴
def getUserNums():
    return userNums

def setLottoNums():
    global lottoNums
    lottoNums = random.sample(range(1, 46), 6)

def getLottoNums():
    return lottoNums

def setBonusNum():
    global bonusNum

    while True:
        bonusNum = random.randint(1, 46)
        if bonusNum not in lottoNums:
            break

def getBonusNum():
    return bonusNum

def lottoResult():
    global userNums
    global lottoNums
    global matchedNums

    # matchedNums = []

    for num in userNums:
        if num in lottoNums:
            matchedNums.append(num)

    if len(matchedNums) == 6:
        print('1등 당첨')
        print(f'{matchedNums}')

    elif len(matchedNums) == 5 and (bonusNum in userNums):
        print('2등 당첨')
        print(f'{matchedNums}')

    elif len(matchedNums) == 5:
        print('3등 당첨')
        print(f'{matchedNums}')

    else:
        print('당첨되지 않았습니다.')

    print(f'나의 번호: {userNums}')
    print(f'로또 번호: {lottoNums} + {bonusNum}')
    print(f'일치한 번호: {matchedNums}')

def startLotto():
    inputNums = []
    for i in range(6):
        inputNums.append(int(input('번호(1~45) 입력: ')))

    setUserNums(inputNums)
    setLottoNums()
    setBonusNum()
    lottoResult()

🚗 오늘은 모듈 문제풀이 강의만 수강했다.
수학 관련 문제는 기초수학 파트를 학습한 후 다시 풀어볼 것이다.

🚕 내일은 토요일이다.
평일에 수강하지 못한 파이썬 중급 문제풀이와 기초수학 강의를 들어야겠다.

0개의 댓글