程序未返回正确答案(计算最小周长)

时间:2019-10-03 20:51:43

标签: python

该程序的目标是找到一定数量正方形的最小周长(来自用户的输入)。我以为我的程序是正确的,但是当我测试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))))

谢谢!

2 个答案:

答案 0 :(得分:0)

l = (math.sqrt(V)) vk = l*l if vk == V: 永远是对的,您应该尝试:

l = int(math.sqrt(V)) row = int(V/l) enter image description here

答案 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