I am writing a Python script (part of a larger tool I am building) and want to know if below is the best way for conditional coding. I am using Python as it’s the language I understand best.
I have started using “match and case” over using “if-elif-else” statements but the below code looks more clunky.
ROM_Feed = 50000
Bene_method1 = 0
Bene_method2 = 1
Bene_method3 = 1
def Mill_makeup_water(ROM_Feed,Bene_method1,Bene_method2,Bene_method3):
match Bene_method1:
case 0:
makeup_water1 = ((((ROM_Feed-250)/(95000-250)) * (4.5 - 2.5)) + 2.5) * ((((ROM_Feed-250)/(95000-250)) * (0.4 - 0.1)) + 0.1)
case _:
makeup_water1 = 0
match Bene_method2:
case 0:
makeup_water2 = ((((ROM_Feed-250)/(95000-250)) * (4.5 - 2.5)) + 2.5) * ((((ROM_Feed-250)/(95000-250)) * (0.4 - 0.1)) + 0.1)
case _:
makeup_water2 = 0
match Bene_method3:
case 0:
makeup_water3 = ((((ROM_Feed-250)/(95000-250)) * (4.5 - 2.5)) + 2.5) * ((((ROM_Feed-250)/(95000-250)) * (0.4 - 0.1)) + 0.1)
case _:
makeup_water3= 0
makeup_water = sum([makeup_water1,makeup_water2,makeup_water3])
return makeup_water
if __name__ == '__main__':
x = Mill_makeup_water(ROM_Feed,Bene_method1,Bene_method2,Bene_method3)
Is this correct or is there a better way to lay this out? Already think the repeated formula should be a variable within the function to simplify but I am more concerned with the repeated match and case statements.
2
Reworked my script to be more concise.
Bene_method1 = 0
Bene_method2 = 0
Bene_method3 = 0
mill_makeup_water = 0
ROM_Feed = 50500
bene_loop = [Bene_method1,Bene_method2,Bene_method3]
makeup_est = ((((ROM_Feed-250)/(95000-250)) * (4.5 - 2.5)) + 2.5) * ((((ROM_Feed-250)/(95000-250)) * (0.4 - 0.1)) + 0.1)
if mill_makeup_water <= 0:
makeup_water = 0
for method in bene_loop:
if method == 0:
makeup_water = makeup_water + makeup_est
else:
pass
mill_makeup_water = makeup_water
else:
mill_makeup_water
3