2016-11-01 回答的一个百度知道的问题,现把答案改进如下:
#!usr/bin/env python3
import re
def COUNTT(A,B,C):
return (A[0]*B[1]*C[2] + B[0]*C[1]*A[2] + C[0]*A[1]*B[2]
-C[0]*B[1]*A[2] - B[0]*A[1]*C[2] - A[0]*C[1]*B[2])
def main():
M, N, P, Q = [[0]*3 for _ in range(4)]
for i in range(3):
msg = '请依次输入第{}个方程的x,y,z的系数以及常数项(以空格隔开): '
while True:
nums = re.split(r'\s+', input(msg.format(i+1)).strip())
try:
M[i], N[i], P[i], Q[i] = [float(n) for n in nums]
except ValueError:
print('输入有误, 请重新输入!')
else:
break
D = COUNTT(M, N, P)
if D == 0 :
print('根不存在或者有无穷多个根!')
else:
print('x =', COUNTT(Q, N, P)/D)
print('y =', COUNTT(M, Q, P)/D)
print('z =', COUNTT(M, N, Q)/D)
if __name__ == '__main__':
main()
问题链接: https://zhidao.baidu.com/question/922925054387169299