Python 程序不';t返回正确答案(计算最小周长)
该程序的目标是找到一定数量的正方形的最小周长(用户输入)。我认为我的程序是正确的,但当我测试11(正方形数量)作为输入时,它返回13(最小周长),而不是14。我的错误在哪里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
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):
而Vl=(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放在前排。非常感谢你的帮助!!是的,你是对的,它不能处理所有的输入(没有注意到)。我应该使用更多的测试用例。谢谢你帮了我的忙!!是的,你是对的,它不能处理所有的输入(没有注意到)。我应该使用更多的测试用例。谢谢你帮了我的忙!!