본문 바로가기

Data/Python

Machine Learning #2 python

1.

여러분이 10일 작업에 대한 두 가지 급여 옵션을 제의 받았다고 가정하자


옵션1: 하루에 $100 지급

옵셥2: 첫째 날에 $1, 둘째 날에 $2, 셋째 날에 $4등 매일 전일 급여의 두 배를 받음


두 가지 옵션 중에 어떤 경우가 좀 더 유리한 옵션인지 결정하라.

이 때 Option1과 Option2라는 함수를 각각 생성하여 계산하여라.


def main():

## Compare salary options

    opt1 = option1()

    opt2 = option2()


    print("Option 1 = ${0:,.2f}.".format(opt1))

    print("Option 2 = ${0:,.2f}.".format(opt2))


    if opt1 > opt2:

        print("Option 1 pays better.")

    elif opt1 == opt2:

        print("Options pay the same.")

    else:

        print("Option 2 is better.")


def option1():

## Compute the total salary for 10 days,

## with a flat salary of $100/day.

    sum = 0

    for i in range(10):

        sum += 100

    return sum


def option2():

## Compute the total salary for 10 days,

## starting at $1 and doubling each day.

    sum = 0

    daySalary = 1

    for i in range(10):

        sum += daySalary

        daySalary *= 2

    return sum


main()



2.

신용카드 계약 조건에 대한 잔고와 최소 지불 금액을 계산하는 프로그램을 작성하라.

금융 수수료는 기존 잔고의 1.5%이다.

신규 잔고가 $20 이하이면 최소 지불 금액은 전체 신규 잔고가 되어야 한다.

그렇지 않은 경우, 최소 지불 금액은  $20와 이를 초과하는 신규 잔고액의 10%가 된다.

main 함수는 다음 3개의 함수를 호출해야 한다.


1)다중값 입력 함수

2)신규 잔고와 최소 지불 금액을 계산하는 함수

3)출력 함수


ex>

Enter old balance:200

Enter charge for month:150

Enter credits:100

New balance: $253.00

Minimum payment: $43.00


def main():

## Calculate new balance and minimum payment for a credit card.

    (oldBalance, charges, credits) = inputData()

    (newBalance, minimumPayment) = calculateNewValues(oldBalance,charges, credits)

    displayNewData(newBalance, minimumPayment)

    

def inputData():

    oldBalance = float(input("Enter old balance: "))

    charges = float(input("Enter charges for month: "))

    credits = float(input("Enter credits: "))

    return (oldBalance, charges, credits)


def calculateNewValues(oldBalance, charges, credits):

    newBalance = (1.015) * oldBalance + charges - credits

    if newBalance <= 20:

        minimumPayment = newBalance

    else:

        minimumPayment = 20 + 0.1 * (newBalance - 20)

    return (newBalance, minimumPayment)


def displayNewData(newBalance, minimumPayment):

    print("New balance: ${0:0,.2f}".format(newBalance))

    print("Minimum payment: ${0:0,.2f}".format(minimumPayment))

    

main()


3.

40시간 초과 근무를 하면, 1.5배의 금액을 지불하는 어떤 사람의 주급을 계산하는 프로그램을 작성하라. 

main 함수는 다음 3개의 함수를 호출해야 한다.


1)입력 함수

2)값 계산 함수

3)출력 함수


ex> 

Enter hours worked : 42

Enter hourly pay: 10.00

Week's pay:$430.00


def main():
## Determine a person's earnings for a week.
    (wage, hours) = getWageAndHours()
    payForWeek = pay(wage, hours)
    displayEarnings(payForWeek)
    
    
def getWageAndHours():
    hoursworked = eval(input("Enter hours worked: "))
    hourlyWage = eval(input("Enter hourly pay: "))
    return(hourlyWage, hoursworked)


def pay(wage, hours):
## Calculate weekly pay with time-and-a-half for overtime.
    if hours <= 40:
        amount = wage * hours
    else:
        amount = (wage * 40) + ((1.5) * wage * (hours - 40))
    return amount

def displayEarnings(payForWeek):
    print("Week’s pay: ${0:,.2f}".format(payForWeek))
    
main()


4.

작업자의 이름, 작업시간, 시간당 급료를 입력받아 주급을 계산하는 프로그램을 작성하라.

이 프로그램은 작업자의 이름, 작업 시간, 시간당 급여, Wages 클래스 안에 payForWeek 매서드를 포함시킨다.

(법규에 의해 40시간 이상 초과 급무시 1,5배의 급여를 지불해야한다.)


ex>

Enter person's name : kim

Enter number of hours worked: 45

Enter hourly wage: 20

Pay for Kim : $950.00


def main():


    salary = Wages()

    name = input("Enter person's name: ")

    salary.setName(name)

    hours = float(input("Enter number of hours worked: "))

    salary.setHours(hours)

    wage = float(input("Enter hourly wage: "))

    salary.setWage(wage)

    print("Pay for", salary.getName() + ':', salary.payForWeek())


    

class Wages:

    def __init__(self, name="", hours=0.0, wage=0.0):

        self._name = name

        self._hours = hours # Number of hours worked during week

        self._wage = wage # Hourly wage

    def setName(self, name):

        self._name = name

    def getName(self):

        return self._name

    def setHours(self, hours):

        self._hours = hours

    def getHours(self):

        return self._hours

    def setWage(self, wage):

        self._wage = wage

    def getHours(self):

        return self._hours

    def payForWeek(self):

        amount = self._hours * self._wage

        if self._hours > 40:

            amount = 40 * self._wage + ((self._hours - 40) * (1.5 * self._wage))

            return "${0:,.2f}".format(amount)


main()



5.

쇼핑 웹사이트에서 사용자가 카트에 담은 항목을 확인하는 프로그램을 작성하여라.

이 프로그램은 구매한 단일 품목의 정보를 유지하기 위해 Purchase 클래스를 사용하고 

Purchase 클래스의 객체 목록을 유지하기 위해 Cart클래스를 사용해야한다.


ex>

Enter description of article : shirt

Enter price of article:35

Enter quantity of article:3

Do you want to enter more articles (Y/N)? Y

Enter description of article : tie

Enter price of article:15

Enter quantity of article:2

Do you want to enter more articles (Y/N)? N


ARTICLE      PRICE     QUANTITY

shirt     $35.00    3

tie     $15.00   2


TOTAL COST: $135.00


def main():
    myPurchases = Cart()
    carryOn = 'Y'
    
    while carryOn.upper() == 'Y':
        description = input("Enter description of article: ")
        price = float(input("Enter price of article: "))
        quantity = int(input("Enter quantity of article: "))
        article = Purchase(description, price, quantity)
        myPurchases.addItemToCart(article)
        carryOn = input("Do you want to enter more articles (Y/N)? ")
        
    printReceipt(myPurchases)
    
def printReceipt(myPurchases):
    print("\n{0:12} {1:<s} {2:<12}".format("ARTICLE","PRICE", "QUANTITY"))
    
    for purchase in myPurchases.getItems():
        print("{0:12s} ${1:,.2f} {2:5}".format(purchase.getDescription(),
        purchase.getPrice(), purchase.getQuantity()))
        
    print("\nTOTAL COST: ${0:,.2f}".format(myPurchases.calculateTotal()))



class Purchase:
    def __init__(self, description="", price=0, quantity=0):
        self._description = description
        self._price = price
        self._quantity = quantity
        
    def setDescription(self, description):
        self._description = description
        
    def getDescription(self):
        return self._description
    
    def setPrice(self, price):
        self._price = price
        
    def getPrice(self):
        return self._price
    
    def setQuantity(self, quantity):
        self._quantity = quantity
        
    def getQuantity(self):
        return self._quantity


class Cart:
    def __init__(self, items=[]):
        self._items = items
        
    def addItemToCart(self, item):
        self._items.append(item)
        
    def getItems(self):
        return self._items
    
    def calculateTotal(self):
        amount = 0
        for item in self._items:
            amount += item.getPrice() * item.getQuantity()
        return amount

main()


반응형

'Data > Python' 카테고리의 다른 글

Machine Learning #4 Pandas  (0) 2018.09.19
Machine Learning #3 numpy  (0) 2018.09.19
Machine Learning #1 python  (0) 2018.09.18
파이썬 선(禪)(Zen of Python)  (0) 2016.09.22
Python 강좌(5)  (0) 2016.07.22