gpt4 book ai didi

python - 三角形边和程序

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:51 24 4
gpt4 key购买 nike

所以在数学课上我们遇到了这个问题:

给你一个边长为 4 个单位的三角形。在三角形内部,有由较大三角形的中段组成的较小三角形。共有 8 个内切三角形。总边长是多少?

所以,我决定看看是否可以编写一个 python 程序来解决所有数量的三角形和所有边长的问题。

这里是:

tri = int(raw_input("How many triangles are there?\n>"))
size = int(raw_input("What is the side length of the biggest triangle?\n>"))
tot = 0
for i in range(1, tri):
tot += 3*(float(size/i))
print str(tot)

我尝试使用 tri = 8 和 size = 4,如原始问题所示,并得到 24.0As wolfram alpha shows us, that is wrong .

为了尝试澄清每个步骤中发生的情况,我将其编辑为:

tri = int(raw_input("How many triangles are there?\n>"))
size = int(raw_input("What is the side length of the biggest triangle?\n>"))
tot = 0
for i in range(1, tri):
tot += 3*(float(size/i+0.0000001))
print str(tot)
print str(tot)

输出是:

12.0000003
18.0000006
21.0000009
24.0000012
24.0000015
24.0000018
24.0000021
24.0000021

有人认为他们知道我错在哪里吗?

最佳答案

您没有循环三次次:

for i in range(1, tri):

最终值包含在内,因此您在这里计数的是17,而不是8 。删除 1 并在循环中添加 1:

for i in range(tri):
tot += 3.0 * size / (i + 1)

您在计算中只需要一个浮点值,将 3 转换为 3.0 就可以为我们完成这一任务。不幸的是,在Python 2中,当两个值都是整数时,/将使用整数floor除法,这个问题在Python 3中得到了解决:

>>> 1 / 2
0
>>> 1.0 / 2
0.5

在乘法中使用 3.0 将确保除法的左侧操作数是 float 。

您还可以在脚本顶部使用 from __future__ import div/ 运算符切换到正确的 true 除法,它始终返回浮点结果。

接下来,您在公式中没有使用正确的指数;它不是大小/(i + 1);它是大小/(2 ** i);这里需要除以 2 的幂;不是除以 1、2、3、4,而是除以 1、2、4、8 等:

tot = 0
for i in range(tri):
tot += 3.0 * size / 2 ** i

现在您将得到与 Wolfram Alpha 匹配的结果:

>>> tri, size = 8, 4
>>> tot = 0
>>> for i in range(tri):
... tot += 3.0 * size / 2 ** i
...
>>> tot
23.90625

关于python - 三角形边和程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21007887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com