使用SymPy处理葡萄藤种植计算问题时如何打印对应公式
实现方案
核心思路
- 先提前定义SymPy的符号变量,修正原有
Eq等式的构造错误,原有写法不符合SymPy的API要求,会触发语法报错。 - 可以按需选择两种打印逻辑:打印通用符号公式,或者打印代入了当前输入值的计算式。
- 边界校验的分支也可以同步打印错误对应的判定公式,方便用户理解输入不符合要求的原因。
可运行修改代码
import math from sympy import symbols, Eq # 提前声明符号变量 r, e, s, v = symbols('r e s v') # 预先定义通用计算公式 common_eq = Eq(v, (r - 2*e)/s) # 以下是原有业务逻辑,假设R、E、S是已经获取到的用户输入值 if R < (2 * E): print(f'判定公式:R < 2*E ,当前值:{R} < {2*E}') print('请重新输入,行长度必须大于两端立柱占用空间的两倍。') elif S == 0: print('判定公式:S == 0') print('请重新输入,葡萄藤之间的间距不能为0。') elif R > (2 * E): V = (R - (2 * E)) / S # 打印通用符号公式 print(f'通用计算公式:{common_eq}') # 打印代入当前数值的计算式 current_eq = common_eq.subs({r:R, e:E, s:S}) print(f'当前输入代入后的计算式:{current_eq}') print(f'计算结果:v = {V}') print('该行可种植的葡萄藤数量为:', math.floor(V))
效果说明
- 边界校验触发时,会同步打印触发异常的判定公式和对应数值,用户可以直观看到输入不符合要求的原因。
- 符合计算条件时,会依次输出通用符号公式、代入当前输入的计算式、最终结果,完全满足打印公式的需求。
内容的提问来源于stack exchange,提问作者Drew Weatherby
相关产品推荐
相关产品推荐

