総じて、テキストの中で、patternにマッチングする行を探し、それから得た値をずっと加工するようなプログラミングを書きたいと考えます。
やりたい事
・sub1()でK_infiniteをreturnしてもらい、K_infiniteを求める事
・sub2()でprompt_nuetron_life_timeををreturnしてもらい、prompt_nuetron_life_timeを求める事
問題
・sub1()の実行後に、sub2()は実効されません。
・errorを返してくれないので、更に難しいです
def sub1(): pattern = re.compile("plot of the estimated col/abs/track-length keff one standard deviation interval") with open (str(atomicnumber)+str(s)+str(t3-3)+"o","r") as file: # open file for reading text. for linenum, line in enumerate(file): # Keep track of line numbers. if pattern.search(line) != None: # If substring search finds a match, K_infinite_line = str(line) K_infinite = K_infinite_line[119:126] #print (line) #print (linenum) #print (K_infinite) return float(K_infinite) print ("hello13") def sub2(): pattern = re.compile("the final combined (col/abs/tl) prompt removal lifetime") with open (str(atomicnumber)+str(s)+str(t3-3)+"o","r") as file: # open file for reading text. for linenum, line in enumerate(file): # Keep track of line numbers. if pattern.search(line) != None: # If substring search finds a match, prompt_neutron_line = str(line) prompt_neutron_life_time_frontnumber = prompt_neutron_life_time_line[62:67] prompt_neutron_life_time_over = prompt_neutron_life_time_line[69:71] prompt_neutron_life_time = prompt_neutron_life_time_frontnumber * (10 ** prompt_neutron_life_time_over) #print (line) #print (linenum) print (line) print (prompt_neutron_line) return float(prompt_neutron_life_time) print("hello24")
t1 = 0 while (t1 < 11): x = 0 y = 0 t2 = 0 while ( t2 < len(Actinide_number[t1]) ): atomicnumber = Actinide_number[t1][t2] nuclide = Actinide_Word[t1] insert = Actinide[t1][0] target = str(insert) + str(atomicnumber) path = "D:/1111/"+str(nuclide) try: os.chdir(path) except: os.mkdir(path) os.chdir(path) # return to zero K_infinite_list = [] prompt_neutron_list = [] fission_area_list = [] assorbtion_area_list = [] nu_bar_list = [] t3 = 0 while (t3 < 9 ): dillution = 10 ** (t3-3) t4 = 0 while (t4 <9 ): dillusion2 = t4+1 dil = dillution * dillusion2 solution = "H2O" H_nuclide = dil H_nuclide2 = dil / dillution solution_H_number = 2 H_U = 200 / H_nuclide s = int(H_nuclide2) sub1() sub2() sub4() sub5() sub6() integrate1() integrate2() t4 += 1 t3 += 1 excel() t2 += 1 t1 += 1
でスクリプトを行った際に、
元々の意図であれば、
hello13
hello24
hello13
hello24
hello13
....
がでるべきなのに
hello13
hello13
hello13
hello13
hello13
hello13
hello13
でしかでません!
是非とも、助けて下さい!
お願い致します。
インデントが崩れているので読めません。次のようにコード部分を編集してください。https://teratail.storage.googleapis.com/uploads/contributed_images/56957fe805d9d7befa7dba6a98676d2b.gif
質門を編集して、<code>ボタンで、’’’の枠の中にコードを貼り付けてください
ありがとうございます。
もいちど編集やり直しましょうw
おお、すばらしい
そもそも関数を呼び出している箇所が見当たらないのですが。
すみません。全体を載せたかったのですが、全体が載せられませんでした。
下にのコードを書く欄に、全体の概要コードを載せました
どうか、お願い致します。
追記感謝します。続けてお聞きしたいのですが、sub2が呼び出されなかったと判断した理由は何でしょうか?
はい!sub2()のprint(prom~)はプリントされませんでした。
ルイさん!本文中でも説明を書きました1
え、print(prompt_neutron_line) も print("hello24") も実行されなかったってことでしょうか?
例外を握り潰しでもしない限り考えづらい挙動なのですが...
はいえ、print(prompt_neutron_line) も print("hello24") も実行されなかったってことでしょうか?
はい、おっしゃる通りです。
それならば、ちょっと思い当たる点が無いですね。例外の握り潰しでジャンプが生じて居るとか、同名の別の関数が呼ばれているとか、そういうのは有りえそうな話ではありますが。
Louisさん!真剣に考えて下さって大変ありがとうございました!
あなたの回答
tips
プレビュー