Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def api_wallet_translate_gold(value):
- """Translate a value into string of money"""
- if value >= 10000: # Gold
- return ("{0} gold, {1} silver and {2} copper."
- .format(str(value)[:-4], str(value)[-4:-2], str(value)[-2:]))
- elif value >= 100: # Silver
- return "{0} silver and {1} copper.".format(str(value)[-4:-2], str(value)[-2:])
- else: # Copper
- return "{0} copper.".format(str(value)[-2:])
- coins = [
- ("gold", 100 * 100),
- ("silver", 100),
- ("copper", 1)
- ]
- def translate_coins(value, coins):
- res = {}
- for coin, v in coins:
- res[coin], value = divmod(value, v)
- return res
- translate_coins(1013323, coins)
- {'gold': 101, 'silver': 33, 'copper': 23}
- class Currency(object):
- COPPER_CONVERSION_MAP = {
- 'copper': 1,
- 'gold': 100 * 100,
- 'silver': 100
- }
- gold = 0
- silver = 0
- copper = 0
- def __init__(self, copper=0, silver=0, gold=0):
- # convert all inputs into copper
- self.copper = (
- copper +
- silver * self.COPPER_CONVERSION_MAP['silver'] +
- gold * self.COPPER_CONVERSION_MAP['gold']
- )
- self.break_currency()
- def break_currency(self):
- for coin_type in ['gold', 'silver']:
- coins, coppers = divmod(self.copper, self.COPPER_CONVERSION_MAP[coin_type])
- setattr(self, coin_type, coins)
- self.copper = coppers
- def __str__(self):
- return '{:,} gold, {:,} silver and {:,} copper'.format(self.gold, self.silver, self.copper)
- >>> c = Currency(copper=653751735176)
- >>> str(c)
- '65,375,173 gold, 51 silver and 76 copper'
- >>> c.copper
- 76
- >>> c.silver
- 51
- >>> c.gold
- 65375173
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement