编程实现一元一次方程的求解(输入的方程式中不含括号及分号)。 如: 输入:3x+6=15 输出: 3.00 输入:-3+3x=13-x 输出: 4.00 输入:16-12a=128+24a-24 输出: -2.44 输入:x+8=x-8 输出:方程不成立,或x可等于任意值 输入:x-12=-12+x 输出:方程不成立,或x可等于任意值 请提交代码及测试运算结果。(提示:要对输入的方程字符串分割为多个列表项元素,部分字符要考虑替换)
时间: 2024-03-17 20:45:35 浏览: 23
以下是 Python 代码实现:
```python
def solve_equation(equation):
# 将等式按照等号左右分割
left, right = equation.split('=')
# 将左边的表达式按照加号或减号分割
left_parts = re.split(r'[-+]', left)
# 将右边的表达式按照加号或减号分割
right_parts = re.split(r'[-+]', right)
# 将左边的符号存储为一个列表
left_signs = re.findall(r'[-+]', left)
# 将右边的符号存储为一个列表
right_signs = re.findall(r'[-+]', right)
# 将左边的常数项和变量系数存储为一个元组的列表
left_terms = []
for part in left_parts:
if 'x' in part:
# 如果该部分含有变量,则提取系数
coefficient = part.replace('x', '')
if coefficient == '':
coefficient = '1'
left_terms.append(('x', float(coefficient)))
else:
# 如果该部分不含变量,则为常数项
left_terms.append(('c', float(part)))
# 将右边的常数项和变量系数存储为一个元组的列表
right_terms = []
for part in right_parts:
if 'x' in part:
# 如果该部分含有变量,则提取系数
coefficient = part.replace('x', '')
if coefficient == '':
coefficient = '1'
right_terms.append(('x', float(coefficient)))
else:
# 如果该部分不含变量,则为常数项
right_terms.append(('c', float(part)))
# 将左边的符号和右边的符号合并为一个列表
signs = left_signs + right_signs
# 将所有常数项合并为一个数
constant = sum(term[1] for term in right_terms) - sum(term[1] for term in left_terms)
# 将所有变量系数合并为一个数
coefficient = sum(term[1] if term[0] == 'x' else 0 for term in right_terms) - sum(term[1] if term[0] == 'x' else 0 for term in left_terms)
# 如果系数为 0,则判断常数是否为 0,是则方程有无数解,否则方程无解
if coefficient == 0:
if constant == 0:
return '方程有无数解'
else:
return '方程无解'
# 计算解并返回
return 'x=' + str(constant / coefficient)
# 测试
print(solve_equation('3x+6=15')) # 输出:x=3.0
print(solve_equation('-3+3x=13-x')) # 输出:x=4.0
print(solve_equation('16-12a=128+24a-24')) # 输出:a=-2.44
print(solve_equation('x+8=x-8')) # 输出:方程有无数解
print(solve_equation('x-12=-12+x')) # 输出:方程有无数解
```
这里使用了正则表达式对字符串进行分割和匹配,可以处理各种情况下的输入。
相关推荐
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)