Tim Rowe wrote:
Since we all seem to be having a go, here's my take. By pulling the
rates and thresholds into a dictionary I feel I'm getting a step
closer to the real world, where these would presumably be pulled in
from a database and the number of interest bands might vary. But is
there a tidier way to get 'thresholds'? I was a bit surprised that
rates.keys() didn't give me a list directly, so although the 3.0
tutorial says "The keys() method of a dictionary object returns a list
of all the keys used in the dictionary, in arbitrary order (if you
want it sorted, just apply the sort() method to )" that's not /quite/
such a given, because "the list of keys" doesn't seem to be there for
the sorting any more.

Is there a tidy way of making rates and thresholds local to get_rate,
without recalculating each time? I suppose going object oriented is
the proper way.

#Py3k,UTF-8

rates = {0: 0.006, 10000: 0.0085, 25000: 0.0124, 50000: 0.0149, 100000: 0.0173}
thresholds = list(rates.keys())
thresholds.sort()
thresholds.reverse()

Why are you putting them into a dict at all? Surely a list of tuples is better?

# I could've just written the list in descending order here!
rates = [(0, 0.006), (10000, 0.0085), (25000, 0.0124), (50000, 0.0149), (100000, 0.0173)]
thresholds.sort(reversed=True)

def get_rate(balance):
    for threshold in thresholds:
        if balance >= threshold:
            return rates[threshold]
    else:
        return 0.0


def get_rate(balance):
    for threshold, rate in thresholds:
        if balance >= threshold:
            return rate
    return 0.0

balance = int(input("How much money is in your account?\n>>"))
target = int(input("How much money would you like to earn each year?\n>>"))

if balance <= 0:
    print("You'll never make your fortune that way!\n")
else:
    interest = 0
    year = 0
    while interest < target:
        rate = get_rate(balance)
        interest = balance * rate
        balance += interest
        year += 1
        print("Year %s, at %s rate: %s paid, %s in bank." % (year,
rate, interest, balance))

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to