该程序的目标是找到一定数量正方形的最小周长(来自用户的输入)。我以为我的程序是正确的,但是当我测试11(正方形)作为输入时,它返回13(最小周长)而不是14。我的错误在哪里?
def minimumperimeter(V):
while V<0:
V = int(input("How many squares are there?"))
l = (math.sqrt(V))
vk = l*l
if vk == V:
return l*4
else:
row = V/l
perimeter = 2 * (l + row)
if V % l != 0:
perimeter += 2
return perimeter
V= int(input("How many squares are there?"))
print(int(minimumperimeter((V))))
谢谢!
答案 0 :(得分:0)
答案 1 :(得分:0)
您有几个错误。正如@Benoit已经指出的那样,您需要在几个地方截断到int
。另外,您必须返回所有路径的结果-您当前的代码无法显示一个矩形(例如12个正方形)。
以下是各种输入的工作代码:
import math
def minimumperimeter(V):
l = int(math.sqrt(V))
vk = l*l
if vk == V:
return l*4
else:
row = int(V/l)
perimeter = 2 * (l + row)
if V % l != 0:
perimeter += 2
return perimeter
for V in [1, 11, 12, 15, 16]:
print(V, minimumperimeter((V)))
输出:
1 4
11 14
12 14
15 16
16 16