Difficulty with first code

Asked

Viewed 78 times

2

This is my first code that doesn’t involve my class. My goal is to assemble a code that asks you to insert any chemical symbol and this will tell your group. Pretty simple concept, but I’m having a hard time with it.

elemento = str((input("Insira um elemento químico: ")))
if len(elemento) !=2: #Verifica se o elemento está em símbolo.
    input("Insira somente a sigla do elemento: ")

else:
    alcalinos = str(('Li', 'Na', 'K', 'Rb', 'Cs', 'Fr'))
    alcalinos_terrosos = str(('Be', 'Mg', 'Ca', 'Sr', 'Ba', 'Ra'))
    metais_de_transicao = str(('Sc', 'Y', 'Ti', 'Zr', 'Hf', 'Rf', 'V', 'Nb', 'Ta', 'Db', 'Cr', 'Mo', 'W', 'Sg', 'Mn', 'Tc', 'Re', 'Bh', 'Fe', 'Ru', 'Os', 'Hs', 'Co', 'Rh', 'Ir', 'Mt', 'Ni', 'Pd', 'Pt', 'Ds', 'Cu', 'Ag', 'Au', 'Rg', 'Zn', 'Cd', 'Hg', 'Cn'))

    if elemento == (alcalinos):
        print("Esse elemento é um Alcalino.")
    if elemento == (alcalinos_terrosos):
        print("Esse elemento é um Alcalino Terroso.")
    if elemento == (metais_de_transicao):
        print("Esse elemento é um metal de Transição.")
    elif elemento != ('Ac', 'Am', 'Sb', 'Ar', 'As', 'At', 'Ba', 'Bk', 
        'Be', 'Bi', 'Bh', 'B', 'Br', 'Cd', 'Cs', 'Ca', 'Cf', 'C', 'Ce', 
        'Cl', 'Cr', 'Co', 'Cu', 'Cm', 'Ds', 'Db', 'Dy', 'Es', 'Er', 'Eu', 'Fm',
        'F', 'Fr', 'Gd', 'Ga', 'Ge', 'Au', 'Hf', 'Hs', 'He', 'Ho', 'H', 'In',
        'I', 'Ir', 'Fe', 'Kr', 'La', 'Lr', 'Pb', 'Li', 'Lu', 'Mg', 'Mn',
        'Mt', 'Md', 'Hg', 'Mo', 'Nd', 'Ne', 'Np', 'Ni', 'Nb', 'N', 'No',
        'Os', 'O', 'Pd', 'P', 'Pt', 'Pu', 'Po', 'K', 'Pr', 'Pm', 'Pa', 'Ra',
        'Rn', 'Re', 'Rh', 'Rg', 'Rb', 'Ru', 'Rf', 'Sm', 'Sc', 'Sg', 'Se',
        'Si', 'Ag', 'Na', 'Sr', 'S', 'Ta', 'Tc', 'Te', 'Tb', 'Tl', 'Th', 
        'Tm', 'Sn', 'Ti', 'W', 'Uub', 'Uuh', 'Uuo', 'Uup', 'Uuq', 'Uus', 
        'Uut', 'U', 'V', 'Xe', 'Yb', 'Y', 'Zn', 'Zr'): 
            #Verifica se o símbolo é um elemento.Minha dificuldade é aqui.
        print("Elemento não existe.")
  • Inserting Elif ... not in solved, but now I get no value in the output. I will work a little more on it.

  • @Marcellofabrizio you would have to exchange all checks for in and not in ... the == is only when you want to test for a specific value

3 answers

2


You should test using the operator in to know if an object is part of a sequence.

If you want to know if the object is not in the sequence, use not in.

For example:

if elemento in alcalinos:
    print("Esse elemento é um Alcalino.")
if elemento in alcalinos_terrosos:
    print("Esse elemento é um Alcalino Terroso.")
if elemento in metais_de_transicao:
    print("Esse elemento é um metal de Transição.")
elif elemento not in ('Ac', 'Am', 'Sb', 'Ar', ...):

Will check whether the elemento is or is not among these.

0

elementos = ('ac', 'am', 'sb', 'ar', 'as', 'at', 'ba', 'bk',
    'be', 'bi', 'bh', 'b', 'br', 'cd', 'cs', 'ca', 'cf', 'c', 'ce',
    'cl', 'cr', 'co', 'cu', 'cm', 'ds', 'db', 'dy', 'es', 'er', 'eu', 'fm',
    'f', 'fr', 'gd', 'ga', 'ge', 'au', 'hf', 'hs', 'he', 'ho', 'h', 'in',
    'i', 'ir', 'fe', 'kr', 'la', 'lr', 'pb', 'li', 'lu', 'mg', 'mn',
    'mt', 'md', 'hg', 'mo', 'nd', 'ne', 'np', 'ni', 'nb', 'n', 'no',
    'os', 'o', 'pd', 'p', 'pt', 'pu', 'po', 'k', 'pr', 'pm', 'pa', 'ra',
    'rn', 're', 'rh', 'rg', 'rb', 'ru', 'rf', 'sm', 'sc', 'sg', 'se',
    'si', 'ag', 'na', 'sr', 's', 'ta', 'tc', 'te', 'tb', 'tl', 'th',
    'tm', 'sn', 'ti', 'w', 'uub', 'uuh', 'uuo', 'uup', 'uuq', 'uus',
    'uut', 'u', 'v', 'xe', 'yb', 'y', 'zn', 'zr')

alcalinos = ('li', 'na', 'k', 'rb', 'cs', 'fr')
alcalinos_terrosos = ('be', 'mg', 'ca', 'sr', 'ba', 'ra')
metais_de_transicao = ('sc', 'y', 'ti', 'zr', 'hf', 'rf', 'v', 'nb', 'ta', 'db', 'cr', 'mo', 'w', 'sg', 'mn', 'tc',
                       're', 'bh', 'fe', 'ru', 'os', 'hs', 'co', 'rh', 'ir', 'mt', 'ni', 'pd', 'pt', 'ds', 'cu',
                       'ag', 'au', 'rg', 'zn', 'cd', 'hg', 'cn')

while True:
    elemento = str((input("Insira um elemento químico: ")))

    if len(elemento) !=2: #Verifica se o elemento está em símbolo.
       print("Insira somente a sigla do elemento!")
       continue
    else:
       break

if elemento.lower() in alcalinos:
    print("Esse elemento é um Alcalino.")
elif elemento.lower() in alcalinos_terrosos:
    print("Esse elemento é um Alcalino Terroso.")
elif elemento.lower() in metais_de_transicao:
    print("Esse elemento é um metal de Transição.")

elif elemento.lower() not in elementos:
    print("Elemento não existe!")

0

elemento = str((input("Insira um elemento químico: ")))
alcalinos = ('Li', 'Na', 'K', 'Rb', 'Cs', 'Fr')
alcalinos_terrosos = ('Be', 'Mg', 'Ca', 'Sr', 'Ba', 'Ra')
metais_de_transicao = ('Sc', 'Y', 'Ti', 'Zr', 'Hf', 'Rf', 'V', 'Nb', 'Ta', 'Db', 'Cr', 'Mo', 'W', 'Sg', 'Mn', 'Tc', 'Re', 'Bh', 'Fe', 'Ru', 'Os', 'Hs', 'Co', 'Rh', 'Ir', 'Mt', 'Ni', 'Pd', 'Pt', 'Ds', 'Cu', 'Ag', 'Au', 'Rg', 'Zn', 'Cd', 'Hg', 'Cn')

if len(elemento) !=2:
        input("Insira somente a sigla do elemento: ")

elif elemento not in('Sc', 'Y', 'Ti', 'Zr', 'Hf', 'Rf', 'V', 'Nb', 'Ta', 'Db', 'Cr', 'Mo', 'W', 'Sg', 'Mn', 'Tc', 'Re', 'Bh', 'Fe', 'Ru', 'Os', 'Be', 'Mg', 'Ca', 'Sr', 'Ba', 'Ra', 'Li', 'Na', 'K', 'Rb', 'Cs', 'Fr'):
            print("Elemento não existe.")

else:
        if elemento in alcalinos:
                print("Esse elemento é um Alcalino.")
        if elemento in alcalinos_terrosos:
                print("Esse elemento é um Alcalino Terroso.")
        if elemento in metais_de_transicao:
                print("Esse elemento é um metal de Transição.")

So it works the way I thought it would.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.