我有一个问题。
1.0X + 1.0Y + -7.0 = 0
如何更好地打印方程式?
例如,我想打印-7.0而不是+- 7.0;或者在系数为零的情况下。
谢谢
打印完全
控制格式的公式
a = b = 1
c = -7
puts "%0.1fX + %0.1fY %s %0.1f = %d"%[ a, b, c < 0 ? '-' : '+', c.abs, 0 ]
输出:
1.0X + 1.0Y - 7.0 = 0
文档:Ruby 的 % 字符串运算符/sprintf
通过一些替换,你可以得到一个更干净的方程:
equation = "1.0X + 1.0Y - -0.0Z + -7.0 = 0"
new_equation = equation.gsub('+ -', '- ')
.gsub('- -', '+ ')
.gsub(/^s*+/, '') # Remove leading +
.gsub(/(?<=d).0+(?=D)/, '') # Remove trailing zeroes
.gsub(/b1(?=[a-z])/i, '') # Remove 1 in 1X
.gsub(/[+-]? ?0[a-z] ?/i, '') # Remove 0Z
p new_equation
# "X + Y - 7 = 0"
顺便说一下,尽管我非常喜欢Ruby,但我必须说Sympy是一个很棒的项目。仅此库就值得学习基本的 Python 语法。