Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 程序不';t返回正确答案(计算最小周长)_Python - Fatal编程技术网

Python 程序不';t返回正确答案(计算最小周长)

Python 程序不';t返回正确答案(计算最小周长),python,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

该程序的目标是找到一定数量的正方形的最小周长(用户输入)。我认为我的程序是正确的,但当我测试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))))
def最小流量计(V): 而V
l=(math.sqrt(V))
vk=l*l
如果vk==V:
始终正确,您应该尝试:

l=int(数学sqrt(V))
行=整数(V/l)

l=(math.sqrt(V))
vk=l*l
如果vk==V:
始终正确,您应该尝试:

l=int(数学sqrt(V))
行=整数(V/l)

您有几个错误。正如@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

你有几个错误。正如@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

你的意思是
而不是如何运行程序,包括用户输入。您实际在什么时候输入数据?数据应该是什么?最小值是集合中的最小元素。你在说什么?不,只有负数才能得到另一个输入需求。如果V是0,它只返回0。取一个整数,使用它进行浮点计算,然后将其与原始整数进行比较。根据输入整数,等式在这里或多或少是随机的。这是它的运行方式:有多少个平方?11 13进程完成,退出代码0出现在屏幕上的第一件事屏幕显示“有多少个正方形”。用户输入11,它返回13。你的意思是
而不是如何运行程序,包括用户输入。您实际在什么时候输入数据?数据应该是什么?最小值是集合中的最小元素。你在说什么?不,只有负数才能得到另一个输入需求。如果V是0,它只返回0。取一个整数,使用它进行浮点计算,然后将其与原始整数进行比较。根据输入整数,等式在这里或多或少是随机的。这是它的运行方式:有多少个平方?11 13进程完成,退出代码0出现在屏幕上的第一件事屏幕显示“有多少个正方形”。用户输入11,它返回13。我以前试过,它返回我15,这也不是正确的答案。谢谢你的建议,虽然你的行也需要int,但我编辑了我的答案,似乎如你所愿。是的,确实有效。我没有意识到我也应该把int放在前排。非常感谢你的帮助!!我以前试过,结果它给了我15分,这也不是正确的答案。谢谢你的建议,虽然你的行也需要int,但我编辑了我的答案,似乎如你所愿。是的,确实有效。我没有意识到我也应该把int放在前排。非常感谢你的帮助!!是的,你是对的,它不能处理所有的输入(没有注意到)。我应该使用更多的测试用例。谢谢你帮了我的忙!!是的,你是对的,它不能处理所有的输入(没有注意到)。我应该使用更多的测试用例。谢谢你帮了我的忙!!