Я не уверен, что он повторяется через список или вызывается несколько раз ... в любом случае он не должен делать ни одну из этих вещей. Я довольно новичок в python и программировании в целом. Вот функция:Почему моя функция повторяется через список (Python)?
"""
Gets the mass that may have an isotope of +1 neutron for C,N or O (if there is one)
@param mass the mass
@return the mass +1
"""
def getMassPlus(mass):
if (mass)+1 in mass_old2:
return (mass)+1
elif (mass)+1.1 in mass_old2:
return (mass)+1.1
elif (mass)+1.2 in mass_old2:
return (mass)+1.2
elif (mass)+.9 in mass_old2:
return (mass)+.9
и здесь вызов функции:
if ((14.00674*multiplyByN)+(15.994915*multiplyByO)+(1.00794*multiplyByH)) == isotope_masses[i]+.5 or isotope_masses[i]-.5:
if isotope_masses[i]+1 or isotope_masses[i]+1.1 or isotope_masses[i]+1.2 or isotope_masses[i]+.9 in mass_old2:
nextMass = getMassPlus(isotope_masses[i])
Что происходит, что, когда я вызываю функцию, это как-то Перебирает список isotope_masses (который выглядит следующим образом: isotope_masses = [1,2,3,4, ...]) десять раз и присваивает nextMass десять значений. Это также может помочь вам узнать, что второй блок кода является частью более крупного цикла, который выполняет итерацию по длине isotope_masses. Я не совсем уверен, почему эта проблема происходит, любые идеи будут оценены. Заранее спасибо.
Loop:
for i in range(len(isotope_masses)):
if not noNitrogen(molecules[i]): #molecule has nitrogen and possibly hydrogen
if hasDoubleDig('N'):
multiplyByN = int(molecules[i][3:5])
multiplyByH = int(molecules[i][8:])
else:
multiplyByN = int(molecules[i][3])
multiplyByH = int(molecules[i][7:])
if ((14.00674*multiplyByN)+(1.00794*multiplyByH)) == isotope_masses[i]+.5 or isotope_masses[i]-.5:
if isotope_masses[i]+1 or isotope_masses[i]+1.1 or isotope_masses[i]+1.2 or isotope_masses[i]+.9 in mass_old2:
nextMass = getMassPlus(isotope_masses[i])
if float(intensities[mass_old2.index(nextMass)])/float(intensities[mass_old2.index(isotopes_masses[i])]) == multiplyByN * .00364:
file_isotopes.append("Isotope: is N-15")
else:
file_isotopes.append("Mix of isotopes")
elif not noCarbon(molecules[i]): #molecule has carbon and possibly hydrogen
if hasDoubleDig('C'):
multiplyByC = int(molecules[i][1:3])
multiplyByH = int(molecules[i][8:])
else:
multiplyByC = int(molecules[i][1])
multiplyByH = int(molecules[i][7:])
if ((12.0107*multiplyByC)+(1.00794*multiplyByH)) == isotope_masses[i]+.5 or isotope_masses[i]-.5:
if isotope_masses[i]+1 or isotope_masses[i]+1.1 or isotope_masses[i]+1.2 or isotope_masses[i]+.9 in mass_old2:
print isotope_masses[i]
nextMass = getMassPlus(isotope_masses[i])
if float(intensities[mass_old2.index(nextMass)])/float(intensities[mass_old2.index(isotope_masses[i])]) == multiplyByC * .0107:
file_isotopes.append("Isotope is: C-13")
else:
file_isotopes.append("Mix of isotopes")
Существует больше цикла, но его просто повторяющийся, так что я только дал два случая в петле для краткости.
Можете ли вы опубликовать остальную часть кода? В вашем коде нет никакого цикла, который случается в вашем коде, и довольно сложно ответить на вопрос о циклах, не зная структуры цикла. –
Хорошо, я добавил его на свой пост. Дайте мне знать, если вам нужно больше информации – Syd