Пропуск элемента при его нахождении в списке

Я делаю код, который считает энергетический выход ядерной реакции, и мне нужно сделать так, чтобы, если какие-то элементы, введённые пользователем повторялись, то их обходила бы определённая функция. В указанном на фото прямоугольнике показано, где делается проверка на совпадения элементов. Но как мне сделать так, чтобы, если элемент находился в списке, то из него не вычитали бы электроны и пропускали, а из других, если они не имеют совпадений со списком вычитали бы. введите сюда описание изображения

from data import elements_dict
import scipy
import math
elem_part = ['N', 'P']
electron_mass = scipy.constants.physical_constants['electron mass in u']

a = map(str, input("Enter your element: ").upper())
b = map(str, input("Enter your element: ").upper())
c = map(str, input("Enter your element: ").upper())
d = map(str, input("Enter your element: ").upper())
if [a, b, c, d] in elements_dict:
    if [a, b, c, d] in elem_part:


    else:
        element1 = elements_dict[a]
        r1 = element1 - round(element1) * round(electron_mass[0], 5)
        element2 = elements_dict[b]
        r2 = element2 - round(element2) * round(electron_mass[0], 5)
        element3 = elements_dict[c]
        r3 = element3 - round(element3) * round(electron_mass[0], 5)
        element4 = elements_dict[d]
        r4 = element4 - round(element4) * round(electron_mass[0], 5)
        e = ((r1 + r2) - (r3 + r4)) * 931.5
        t = abs(e)*(1+a/b)
        print(e, t)
else:
    print('Element does not exist')

Ответы (1 шт):

Автор решения: MBo

Если я правильно понял логику

electron_mass = 5.4858e-4
em = round(electron_mass, 5)
elem_part = {'N':1.00867, 'P': 1.00728}

elements_dict = {'H-1': [1, 1.008], 'H-2': [1, 2.014], 'H-3': [1, 3.016],
                 'HE-2': [2, 2.016],'HE-3': [2, 3.016], 'HE-4': [2, 4.003],
                 'LI-6': [3, 6.015], 'LI-7': [3, 7.016], 'BE-9': [4, 9.012],
                 'B-11': [5, 10.811], 'C-12': [6, 12.011], 'N-14': [7, 14.007],
                 'O': [8, 15.999], 'O-17': [8, 16.999]}
a = input("Enter your element: ").upper()  # ни к чему строку к строке приводить
b = input("Enter your element: ").upper()
c = input("Enter your element: ").upper()
d = input("Enter your element: ").upper()

if {a,b,c,d} <= set(elem_part.keys()) | set(elements_dict.keys()):
    if a in set(elem_part.keys()):
        r1 = elem_part[a]
    else:
        element1 = elements_dict[a]
        r1 = element1[1] - element1[0] * em
    if b in set(elem_part.keys()):
        r2 = elem_part[b]
    else:
        element2 = elements_dict[b]
        r2 = element2[1] - element2[0] * em
    if c in set(elem_part.keys()):
        r3 = elem_part[c]
    else:
        element3 = elements_dict[c]
        r3 = element3[1] - element3[0] * em
    if d in set(elem_part.keys()):
        r4 = elem_part[d]
    else:
        element4 = elements_dict[d]
        r4 = element4[1] - element4[0] * em
    e = ((r1 + r2) - (r3 + r4)) * 931.5
    print(e)

Только почему отнимаете количество электронов, умноженное на округлённую массу элемента ? Я добавил атомные номера, что соответствует количеству электронов

→ Ссылка