line shift? (baby steps 2)

Jeff Lindholm jeff_news at lindholm.org
Mon Aug 23 20:01:17 CEST 2004


> As a hint not pertaining to your actual problem: Use a dictionary to
> store the values, like this:
>
> currencies = { "EUDK" : 7.47, "DKEU" : 0.13, (...) }
>
> Then you do not have to do if statements like this
>
> if currency_str == "DKEU":
>    result= amount_int* dkeu_currency
>    print amount_int, "Danish Crowns correspond to", result, "Euro."
>
> (...)
>
> You can directly use the input string as index into the dictionary:
>
> result = amount_int * currencies[currency_str]
> print (...)
>
I was bored waiting on a compile so I hacked this up. It adds the \n and the 
Please enter conversion type line and uses the previous poster's comment on 
the using a dictionary.
I added the conversion output text by makeing the value a list that is the 
conversion and the text to display for the answer (I made them shorter 
because I was lazy to type all the information). I also made the conversion 
from US to EU more in line with the EUUS because I used those for testing 
and the results were not coming out the same (course I am sure there is some 
slack in there somewhere for the bank taking its share of the proceeds :) )
Not sure if there is a slicker way to do the conversion/message - I am 
relatively new to Python as well, so my code still ends up looking like C++ 
lots of the time.

import string

currency = {"EUDK":(7.47,"? to DKK"),
            "DKEU":(0.13,"DKK to ?"),
            "USDK":(5.93, "$ to DKK"),
            "DKUS":(0.16, "DKK to $"),
            "EUUS":(1.19, "? to $"),
            "USEU":(0.84, "$ to ?")}

while(1):
    currency_choice= raw_input("\nPlease enter conversion type  or 'Exit': 
")
    currency_str= str(currency_choice).upper()

    if currency_str == "EXIT":
        break
    if currency.has_key(currency_str):
        amount_int= input("Please type the amount you wish to convert: ")
        result = amount_int * currency[currency_str][0]
        print currency[currency_str][1], " ", amount_int, " = ", result
    else:
        print("Sorry. At the moment we only support DKK, Euro and Dollars." 
+ "\n" \
        "Type DKEU if you want convert from DKK to ?," + "\n" \
        "EUDK if you want to convert from DKK to ?," + "\n" \
        "DKUS if you want to convert from DKK to $," + "\n" \
        "USDK if you want to convert from $ to DKK," + "\n"
        "EUUS if you want to convert from ? to $," + "\n"\
        "and USEU if you want to convert from $ to ?")







More information about the Python-list mailing list