dimanche 29 janvier 2017

More efficient code (Seemingly too many if statements)

I've looked into this but I couldn't find anything that helped me (Apologies if the answer to something similar is out there that could have helped me). I'm writing a currency converter that suffers from tons of if's that just doesn't seem efficient nor can I imagine very nicely readable, so I'd like to know how I can write more efficient code in this case:

prompt = input("Input") #For currency, inputs should be written like "C(NUMBER)(CURRENCY TO CONVERT FROM)(CURRENCY TO CONVERT TO)" example "C1CPSP"

if prompt[0] == "C": #Looks at first letter and sees if it's "C". C = Currency Conversion
    #CP = Copper Piece, SP = Silver Piece, EP = Electrum Piece, GP = Gold Piece, PP = Platinum Piece
    ccint = int(''.join(list(filter(str.isdigit, prompt)))) # Converts Prompt to integer(Return string joined by str.(Filters out parameter(Gets digits (?), from prompt))))
    ccalpha = str(''.join(list(filter(str.isalpha, prompt)))) #Does the same thing as above expect with letters

    if ccalpha[1] == "C": #C as in start of CP
        acp = [ccint, ccint/10, ccint/50, ccint/100, ccint/1000] #Array of conversions. CP, SP, EP, GP, PP
        if ccalpha[3] == "C": #C as in start of CP
            print(acp[0]) #Prints out corresponding array conversion
        if ccalpha[3] == "S": #S as in start of SP, ETC. ETC.
            print(acp[1])
        if ccalpha[3] == "E":
            print(acp[2])
        if ccalpha[3] == "G":
            print(acp[3])
        if ccalpha[3] == "P":
            print(acp[4])
    if ccalpha[1] == "S":
        asp = [ccint*10, ccint, ccint/10, ccint/10, ccint/100]
        if ccalpha[3] == "C":
            print(asp[0])
        if ccalpha[3] == "S":
            print(asp[1])
        if ccalpha[3] == "E":
            print(asp[2])
        if ccalpha[3] == "G":
            print(asp[3])
        if ccalpha[3] == "P":
            print(asp[4])
    if ccalpha[1] == "E":
        aep = [ccint*50, ccint*5 ,ccint , ccint/2, ccint/20]
        if ccalpha[3] == "C":
            print(aep[0])
        if ccalpha[3] == "S":
            print(aep[1])
        if ccalpha[3] == "E":
            print(aep[2])
        if ccalpha[3] == "G":
            print(aep[3])
        if ccalpha[3] == "P":
            print(aep[4])
    if ccalpha[1] == "G":
        agp = [ccint*100, ccint*10, ccint*2, ccint, ccint/10]
        if ccalpha[3] == "C":
            print(agp[0])
        if ccalpha[3] == "S":
            print(agp[1])
        if ccalpha[3] == "E":
            print(agp[2])
        if ccalpha[3] == "G":
            print(agp[3])
        if ccalpha[3] == "P":
            print(agp[4])
    if ccalpha[1] == "P":
        app = [ccint*1000, ccint*100, ccint*20, ccint*10, ccint]
        if ccalpha[3] == "C":
            print(app[0])
        if ccalpha[3] == "S":
            print(app[1])
        if ccalpha[3] == "E":
            print(app[2])
        if ccalpha[3] == "G":
            print(app[3])
        if ccalpha[3] == "P":
            print(app[4])

Aucun commentaire:

Enregistrer un commentaire