假设你说的是零加速度的“svt”方程(如果你有更复杂的要求,甚至是恒定加速度的“suvat”方程),这是一个简单的问题,检测未知,然后填补空白。在
以下代码提供了一个函数,该函数将与一些测试代码一起执行此操作,以便您可以看到它的实际操作:# Returns a 3-tuple containing [displacement(s), velocity(v), time(t)],
# based on the existence of at least two of those.
# If all three are given, the displacement is adjusted so that the
# equation 's = vt' is correct.
def fillInSvt(s = None, v = None, t = None):
# Count the unknowns, two or more means no unique solution.
noneCount = sum(x is None for x in [s, v, t])
if noneCount > 1: return [None, None, None]
# Solve for single unknown (or adjust s if none).
if noneCount == 0 or s is None: return [v*t, v, t]
if v is None: return [s, s/t, t]
return [s, v, s/v]
# Test code.
print(fillInSvt(99,4,6)) # Show case that adjusts