Не суть важно - зачем, но требуется визуально сократить кусок кода, конкретно вот эту часть:
Перепробовала все, что знала и могла, но ничего не вышло. Может, у кого-нибудь найдется пара идей. Заранее спасибо!
from __future__ import division
import mpmath
import sympy
from sympy import *
arr1 = (open("f.txt")).read()
mark = 0
kits = set()
kits.add(arr1)
for i in range(1,9) :
for i in range(len(kits)) :
arr1 = list(kits)[i]
for j in range(1,9) :
array = arr1
array = array.replace(str(j), "0")
kits.add(array)
for i in range(len(kits)) :
array = list(kits)[i]
x=symbols('x1:9', positive=True)
x1,x2,x3,x4,x5,x6,x7,x8=x
mark=0
for j in range(1,9):
if array[j-1] == "0" :
if j == 1:
x1 = 0
if j == 2 :
x2 = 0
if j == 3:
x3 = 0
if j == 4:
x4 = 0
if j == 5:
x5 = 0
if j == 6 :
x6 = 0
if j == 7:
x7 = 0
if j == 8 :
x8 = 0
mark+=1
if mark >= 3 :
eq=(3*x1 - 11*x2 + 11*x3 + 4*x4 - 5*x5 + 6*x6 - 2*x7 + 8*x8 - 112, -2*x1 + 0*x2 - 50/11*x3 + 11*x4 + 12*x5 - 6*x6 -1*x7 + 3*x8 - 113,-2*x1 + 4*x2 + 6*x3 + 7*x4 + 12*x5 -11*x6 -1*x7 + 13*x8 - 109,-1*x1 + 3*x2 - 11/4*x3 - 4*x4 + 5*x5 - 1*x6 + 12*x7 - 1*x8 - 132,2*x1 + 5*x2 + 7*x3 -11*x4 +6*x5 +1*x6 + 1*x7 - 2*x8 - 211)
solver = sympy.solve(eq, x1,x2,x3,x4,x5,x6,x7,x8)
if str(type(solver)) != "<class 'list'>" :
print('\n Точка с координатами: '+ (str(solver)[1:-1]), end =', если ')
xs=(x1,x2,x3,x4,x5,x6,x7,x8)
for i in range(8):
if xs[i]==0:
print('x'+str(i+1)+'=0', end = ', ')
print('\n ______________________________________________________')