简体   繁体   中英

Python “yield” keyword to calculate

A bar shop has a ten-day promotion. During this period, the price of an beer drops 10 percent each day. For example, a beer that costs 10$ on the first day costs $9 on the second day and $8.1 on the third day.

I want to write a python function that uses yield keyword to calculate beer price each day.

For instance if we give input 10, My expected output is:

Price is discounted to : 9

Price is discounted to : 8.1 

..etc

class DiscountCalc:
    def get_item_price(self):
        return input('Input a starting price (0 to quit): ')


    def discount(self, current_price, days):
        yield (current_price - (current_price*10)//100)



    def run(self):
        initial = self.get_item_price()
        for price in self.discount(initial, 10):
            print "Price is discounted to : " + str(price)

DiscountCalc().run()

it's due to the cycle, this should fix it:

def discount(self, current_price, days):
    for day in range(days):
        yield current_price
        current_price = current_price * 0.9


def run(self):
    initial = self.get_item_price()
    for price in self.discount(initial, 10):
        print(price)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM