python - python:TypeError:无法解压不可迭代的NoneType对象
问题描述
嘿,所以我正在做一个项目,我为给定的线性方程绘制图表
我收到了这个错误:
TypeError:无法解压不可迭代的 NoneType 对象
完整的回溯错误:
回溯(最近一次通话最后):
第 116 行,在 run()
第 114 行,在运行 plot()
第 102 行,在 plot solx 中,soly = solve_eq()
TypeError:无法解压不可迭代的 NoneType 对象
代码:
import matplotlib.pyplot as plt
import sympy as simp
import re
'''
Linear Eq formula = y = ax + c
'''
#eq1 = a1x + b1y + c1 = 0
#eq2 = a2x + b2y + c2 = 0
def a_inp_eq1():
global a1
a1 = input('Please specify the value of "a" for the first equation: ')
a1 = simp.sympify(a1)
global b1
b1 = input('Please specify the value of "b" for the first equation: ')
b1 = simp.sympify(b1)
global c1
c1 = input('Please specify the value of "c" for the first equation: ')
c1 = simp.sympify(c1)
def a_inp_eq2():
global a2
a2 = input('Please specify the value of "a" for the second equation: ')
a2 = simp.sympify(a2)
global b2
b2 = input('Please specify the value of "b" for the second equation: ')
b2 = simp.sympify(b2)
global c2
c2 = input('Please specify the value of "c" for the second equation: ')
c2 = simp.sympify(c2)
def check_errors_eq1():
try:
int(a1)
int(b1)
int(c1)
except ValueError:
try:
float(a1)
float(b1)
float(c1)
except ValueError:
print('One of your inputs may not be a valid one please try again, this time with valid ones')
a_inp_eq1()
def check_errors_eq2():
try:
int(a2)
int(b2)
int(c2)
except ValueError:
try:
float(a2)
float(b2)
float(c2)
except ValueError:
print('One of your inputs may not be a valid one please try again, this time with valid ones')
a_inp_eq2()
def conversion():
global a_con1
a_con1 = a1 * -1
global c_con1
c_con1 = c1 * -1
global a_con2
a_con2 = a2 * -1
global c_con2
c_con2 = c2 * -1
# equation solver
def solve_eq():
x = simp.Symbol('x')
y = simp.Symbol('y')
eq = (a1 * x + b1 * y + c1 , a2 * x + b2 * y + c2)
global sol
sol = simp.solve(eq , x , y)
print(sol)
m = re.match(r'^{x: (\d+), y: (\d+)}' , str(sol))
if m:
return m.group(1) , m.group(2)
# defining the main plotting function
def Linear_eq(a,b,clr):
x = list(range(0,11))
y = [(a * ints + b) for ints in x]
print(y)
plt.plot(x , y ,label = 'linear' ,linestyle = '-' ,color= clr)
def plot():
solx , soly = solve_eq()
Linear_eq(a_con1,c_con2,'r')
Linear_eq(a_con2,c_con2,'b')
plt.annotate('(%s,%s)'%(solx,soly) , (float(solx),float(soly)))
plt.show()
def run():
a_inp_eq1()
a_inp_eq2()
check_errors_eq1()
check_errors_eq2()
conversion()
plot()
run()
我认为问题出在我的正则表达式上,但我不知道如何解决它
这是我试图匹配的输出: {x: -3, y: -2}
这是这样做的功能:
def solve_eq():
x = simp.Symbol('x')
y = simp.Symbol('y')
eq = (a1 * x + b1 * y + c1 , a2 * x + b2 * y + c2)
global sol
sol = simp.solve(eq , x , y)
print(sol)
m = re.match(r'^ {x: (\d+), y: (\d+)}' , str(sol))
if m:
return m.group(1) , m.group(2)
任何帮助将不胜感激,感谢您的时间!
解决方案
推荐阅读
- python - NLTK 以非阻塞方式绘制树
- uicollectionview - 为什么当 NSMutableAttributedString 设置为其单元之一时 UICollectionView 停止工作
- google-apps-script - 错误消息:范围的坐标在外面
- python - 将包含整数的数据框列转换为日期
- go - 通道数组的范围
- python - 将检索到的数据附加到 django 视图中的 python 字典
- javascript - 使用 jQuery AJAX 向所需的 PHP POST 请求处理程序提交表单不起作用
- jquery - 使用 AJAX 上传 PDF 文件时出错,但不使用其他格式(JPG、DOC、ZIP 等)
- android - 使用循环后台服务对本机 iOS 应用程序进行 Web 抓取
- python - 使用 Selenium (Python) 从输出框中获取值