Python Forum
Help with calling list from user input - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/Forum-Python-Coding)
+--- Forum: General Coding Help (https://python-forum.io/Forum-General-Coding-Help)
+--- Thread: Help with calling list from user input (/Thread-Help-with-calling-list-from-user-input)



Help with calling list from user input - farispython - Nov-03-2019

I am new to python and need help. I tried to call the list using an input from the user but I got creating a new list instead of calling the existing one. Here is the previous code:

aa = input("please enter the 3 letter amino acid to view the codon: ")
print(list(aa))

Then I used multiple "if" statement to solve it but I think there is a better way to solve it. Please help me if you have better way or a suggestion for more efficient code, I really appreciate it. Here is the code I wrote:

phe = ["UUU", "UUC"]
leu = ["UUA", "UUG", "CUU", "CUC", "CUA", "CUG"]
ile = ["AUU", "AUC", "AUA"]
met = ["AUG"]
val = ["GUU", "GUC", "GUA", "GUG"]
ser = ["UCU", "UCC", "UCA", "UCG"]
pro = ["CCU", "CCC", "CCA", "CCG"]
thr = ["ACU", "ACC", "ACA", "ACG"]
ala = ["GCU", "GCC", "GCA", "GCG"]
tyr = ["UAU", "UAC"]
stop = ["UAA", "UAG", "UGA"]
his = ["CAU", "CAC"]
gln = ["CAA", "CAG"]
asn = ["AAU", "AAC"]
lys = ["AAA", "AAG"]
asp = ["GAU", "GAC"]
glu = ["GAA", "GAG"]
cys = ["UGU", "UGC"]
trp = ["UGG"]
arg = ["CGU", "CGC", "CGA", "CGG", "AGA", "AGG"]
ser = ["AGU", "AGC"]
gly = ["GGU", "GGC", "GGA", "GGG"]
print("Welcome to Amino Acid sequence Codon")
print()
while 1==1:
    aa = input("please enter the 3 letter amino acid to view the codon: ")
    if aa == "phe":
        print(list(phe))
    if aa == "leu":
        print(list(leu))
    if aa == "ile":
        print(list(ile))
    if aa == "met":
        print(list(met))
    if aa == "val":
        print(list(val))
    if aa == "ser":
        print(list(ser))
    if aa == "pro":
        print(list(pro))
    if aa == "thr":
        print(list(thr))
    if aa == "ala":
        print(list(ala))
    if aa == "tyr":
        print(list(tyr))
    if aa == "stop":
        print(list(stop))
    if aa == "his":
        print(list(his))
    if aa == "gln":
        print(list(gln))
    if aa == "asn":
        print(list(asn))
    if aa == "lys":
        print(list(lys))
    if aa == "asp":
        print(list(asp))
    if aa == "glu":
        print(list(glu))
    if aa == "cys":
        print(list(cys))
    if aa == "trp":
        print(list(trp))
    if aa == "arg":
        print(list(arg))
    if aa == "gly":
        print(list(gly))
    quit=input("Quit: y/n? ")
    if quit == "y":
        break
    if quit == "n":
        continue
    else:
        print("error")
        break



RE: Help with calling list from user input - Gribouillis - Nov-03-2019

A better way is to use a dictionary
database = {
    "phe": ["UUU", "UUC"],
    "leu": ["UUA", "UUG", "CUU", "CUC", "CUA", "CUG"],
    "ile": ["AUU", "AUC", "AUA"],
    ...
}
Then later in code
    aa = input(...).strip()
    print(database[aa])



RE: Help with calling list from user input - farispython - Nov-03-2019

(Nov-03-2019, 08:09 AM)Gribouillis Wrote: A better way is to use a dictionary
database = {
    "phe": ["UUU", "UUC"],
    "leu": ["UUA", "UUG", "CUU", "CUC", "CUA", "CUG"],
    "ile": ["AUU", "AUC", "AUA"],
    ...
}
Then later in code
    aa = input(...).strip()
    print(database[aa])
database = {
    "phe": ["UUU", "UUC"],
    "leu": ["UUA", "UUG", "CUU", "CUC", "CUA", "CUG"],
    "ile": ["AUU", "AUC", "AUA"],
    "met": ["AUG"],
    "val": ["GUU", "GUC", "GUA", "GUG"],
    "ser": ["UCU", "UCC", "UCA", "UCG"],
    "pro": ["CCU", "CCC", "CCA", "CCG"],
    "thr": ["ACU", "ACC", "ACA", "ACG"],
    "ala": ["GCU", "GCC", "GCA", "GCG"],
    "tyr": ["UAU", "UAC"],
    "stop": ["UAA", "UAG", "UGA"],
    "his": ["CAU", "CAC"],
    "gln": ["CAA", "CAG"],
    "asn": ["AAU", "AAC"],
    "lys": ["AAA", "AAG"],
    "asp": ["GAU", "GAC"],
    "glu": ["GAA", "GAG"],
    "cys": ["UGU", "UGC"],
    "trp": ["UGG"],
    "arg": ["CGU", "CGC", "CGA", "CGG", "AGA", "AGG"],
    "ser": ["AGU", "AGC"],
    "gly": ["GGU", "GGC", "GGA", "GGG"],
}
print("Welcome to Amino Acid sequence Codon")
print()
while 1==1:
    aa = input("please enter the 3 letter amino acid to view the codon: ").strip()
    print(database[aa])
    if aa not in database:
        continue
    quit = input("Quit: y/n? ")
    if quit == "y":
        break
    if quit == "n":
        continue
    else:
        print("error")
        break
I got error when I input the wrong value for example "sea". Here is the error:
Error:
Traceback (most recent call last): File "C:/Users/faris/PycharmProjects/Beginner projects/AA Codon dictionary.py", line 29, in <module> print(database[aa]) KeyError: 'sea'
Can I make it to repeat the input when the value is not in the dictionary, instead of being error?


RE: Help with calling list from user input - Gribouillis - Nov-03-2019

farispython Wrote:Can I make it to repeat the input when the value is not in the dictionary, instead of being error?
Yes, you only need to change 3 lines
    if aa not in database: # <--- this first
        print('Invalid value, try again')
        continue
    print(database[aa])



RE: Help with calling list from user input - farispython - Nov-03-2019

(Nov-03-2019, 09:55 AM)Gribouillis Wrote:
farispython Wrote:Can I make it to repeat the input when the value is not in the dictionary, instead of being error?
Yes, you only need to change 3 lines
    if aa not in database: # <--- this first
        print('Invalid value, try again')
        continue
    print(database[aa])
Thanks a lot Big Grin , I finished my code. I am actually a medical laboratory student and I try to learn coding during my free time. I love genetic subject and I find it is related with coding.
database = {
    "phe": ["UUU", "UUC"],
    "leu": ["UUA", "UUG", "CUU", "CUC", "CUA", "CUG"],
    "ile": ["AUU", "AUC", "AUA"],
    "met": ["AUG"],
    "val": ["GUU", "GUC", "GUA", "GUG"],
    "ser": ["UCU", "UCC", "UCA", "UCG"],
    "pro": ["CCU", "CCC", "CCA", "CCG"],
    "thr": ["ACU", "ACC", "ACA", "ACG"],
    "ala": ["GCU", "GCC", "GCA", "GCG"],
    "tyr": ["UAU", "UAC"],
    "stop": ["UAA", "UAG", "UGA"],
    "his": ["CAU", "CAC"],
    "gln": ["CAA", "CAG"],
    "asn": ["AAU", "AAC"],
    "lys": ["AAA", "AAG"],
    "asp": ["GAU", "GAC"],
    "glu": ["GAA", "GAG"],
    "cys": ["UGU", "UGC"],
    "trp": ["UGG"],
    "arg": ["CGU", "CGC", "CGA", "CGG", "AGA", "AGG"],
    "ser": ["AGU", "AGC"],
    "gly": ["GGU", "GGC", "GGA", "GGG"],
}
print("Welcome to Amino Acid sequence Codon")
print()
while 1==1:
    aa = input("please enter the 3 letter amino acid to view the codon: ").strip()
    if aa not in database:
        print("Wrong amino acid. Please input the correct amino acid and try again")
        continue
    print(database[aa])
    while 1 == 1:
        quit = input("Quit: y/n? ")
        if quit == "n":
            break
        if quit == "y":
            break
        else:
            print("Answer with y/n")
            continue
    if quit == "y":
        break
Output:
Welcome to Amino Acid sequence Codon please enter the 3 letter amino acid to view the codon: ser ['AGU', 'AGC'] Quit: y/n? a Answer with y/n Quit: y/n? n please enter the 3 letter amino acid to view the codon: sar Wrong amino acid. Please input the correct amino acid and try again please enter the 3 letter amino acid to view the codon: glu ['GAA', 'GAG'] Quit: y/n? y Process finished with exit code 0



RE: Help with calling list from user input - Gribouillis - Nov-03-2019

farispython Wrote:I am actually a medical laboratory student and I try to learn coding during my free time.
Good luck with your learning python. I find software applications for medicine and biology particularly impressive and python can do a lot in this field.