我将代码的 e1 和 e2 部分作为询问 calculate width of a rectangle given perimeter and area 时找到的 google 方程式的两半。
这部分代码被设置为一个更大的部分的一部分,它以可视形式而不是使用整数显示计算的矩形,但是当我测试它时,它给出的答案是不正确的。
import math
print("Welcome to Rectangles! Please dont use decimals!")
area = int(input("What is the area? "))
perim = int(input("What is the perimeter? "))
e1 = int((perim / 4) + .25)
e2 = int(perim**2 - (16 * area))
e3 = int(math.sqrt(e2))
width = int(e1 * e3)
print(width)
请您参考如下方法:
建议您更好地命名变量,以便我们知道您要计算的内容。
从谷歌公式,你应该直接翻译它。
import math
def get_width(P, A):
_sqrt = math.sqrt(P**2 - 16*A)
width_plus = 0.25*(P + _sqrt)
width_minus = 0.25*(P - _sqrt)
return width_minus, width_plus
print(get_width(16, 12)) # (2.0, 6.0)
print(get_width(100, 40)) # (0.8132267551043526, 49.18677324489565)
你得到零,因为 int(0.8132267551043526) == 0
重要提示:你的计算不成立
area <= (perim**2)/16
