ガウスの掃き出し法を使っています。
# coding: utf-8 a = raw_input('1次の連立方程式を、例えばax+by=c dx+ey=fであれば、a,b,c|d,e,fと入力してください。') a = a.split('|') #入力された文字列を式単位に分割してリスト型に変換します。 for h in range(len(a)): #式を係数単位で分割してリスト型に変換します。 a[h] = a[h].split(',') for g in range(len(a[h])): #係数をfloat型に変換します。 a[h][g] = float(a[h][g]) for i in range(len(a)): if a[i][i] == 0: #行列の(i,i)成分が0である場合、i以降の行で、i成分が0でないj行とi行を入れ替えます。 for j in range(i,len(a)): if a[j][i] != 0: a[i],a[j] = a[j],a[i] break else: pass tpv = float(a[i][i]) #i行の対角成分をtpvとします。 for k in range(len(a[i])): #i行を対角成分で割ります。 a[i][k] = a[i][k] / tpv for l in range(i): #第1行からi-1行までのループ処理です。 rat = a[l][i] #比率を定めます。 for m in range(len(a[l])): #i行を(l,i)倍して、l行から引きます。 a[l][m] = a[l][m] - rat * a[i][m] for n in range(i+1,len(a)): #第i+1行から最後の行までのループ処理です。 rat = a[n][i] for o in range(len(a[n])): a[n][o] = a[n][o] - rat * a[i][o] print(a)