#python
Вопрос:
Я новичок в python. Я использую python 3.9.6 и у меня есть файл cti, в котором есть данные для нескольких химических реакций. Я прикрепил изображение файла. Я хочу иметь возможность перейти к строке под # Реакция 1, поэтому строка 2028 и измените 3.547000 e 15 в 2 раза больше этого значения(7.094000 e 15).:
#Reaction 1 reaction('h o2 lt;=gt; o oh', [3.547000e 15, -0.406, 16599.0]) #Reaction 1 reaction('h o2 lt;=gt; o oh', [7.094000e 15, -0.406, 16599.0])
Я написал код, который работает, но мне нужно вручную заменить 3.547000 E 15 на 7.094000 e 15, используя этот код. Причина, по которой я не хочу этого делать, заключается в том, что позже я хочу иметь возможность изменять первое значение между скобками [], точно так же, как 3.547000 E 15 для реакции 1, для нескольких реакций одновременно, и я не хочу вручную писать число, которое я хочу заменить, и чем его заменить. Есть ли для меня способ сделать это?
Я подумал, что, возможно, есть способ определить 3.547000 E 15 без необходимости вводить его. Я знаю его между скобками [] и его первую переменную там, поэтому можно ли определить его как «первое значение в скобках»? Я прикрепил фиктивный код с тем, что я хочу, чтобы мой код выполнял.
Любая помощь или советы будут высоко оценены, спасибо. Я прикрепил изображение своего кода и фиктивного кода.
Комментарии:
1. Эй, попробуйте переформулировать вопрос без использования каких-либо химических понятий, просто какой вопрос на Python под рукой, также, если у вас есть список, с которым вы имеете дело, напишите список, чтобы кто-то мог запустить этот код, например l = [1, 2, 3]
2. Это «cti» текстовый файл или двоичный файл? Однако, чтобы изменить одно значение в файле, вам придется временно сохранить все значения в списке и внести все необходимые изменения, а затем в конце программы записать все это в файл. Но из-за чисел с плавающей запятой и множественных реакций это заняло бы чертовски много времени.
3. Спасибо вам за ваши ответы. На самом деле у меня есть вопрос. Вы можете увидеть изображения, которые я прикрепил к своему сообщению? Там должны быть изображения, показывающие мой код и пример файла cti, но я не знаю, видите ли вы его.
4. @Фрэнк Пикколо: Я определенно могу переформулировать свой вопрос, я могу опубликовать новый пост и включить свой код в текст вместо изображения, если это проще.
5. @Programmin-in-Python: Извините, я действительно новичок в этом, поэтому я не уверен, что файл содержит текст, а также цифры. Но строка, которую я пытаюсь изменить, такова: реакция(‘h o2 lt;=gt; o oh’, [3.547000 e 15, -0.406, 16599.0]). Не уверен, что это ответ на ваш вопрос.
Ответ №1:
Я не уверен, что правильно понял ваш вопрос, но list[0]
хотел бы указать на первое место в списке списка… а затем вы можете list[0] *= 2
… что-то вроде этого:
manipout = [3.547000e 15, -0.406, 16599.0] #Reaction 1 reaction('h o2 lt;=gt; o oh', manipout) manipout[0] *= 2 #Reaction 1 reaction('h o2 lt;=gt; o oh', manipout)
Комментарии:
1. Большое вам спасибо за ваш ответ. Я на самом деле переформулировал и перепостил этот вопрос, как предложил Фрэнк Пикколо, и получил много ответов, которые сработали и решили мою проблему. Но еще раз спасибо вам за ваш ответ.