我的答案是用相同的代码改变的[重复]

2024-04-17

我是一个完全的Python初学者,我正在尝试解决这个问题:

如果一个数是前 n 个正数之和,则该数称为三角数 某些 n 的整数 例如,10 是三角形,因为 10 = 1+2+3+4 21 是三角形,因为 21 = 1+2+3+4+5+6。编写一个Python程序 找出最小的 6 位三角形数。输入它作为您的 回答如下。

我写了这个程序:

n = 0
trinum = 0
while len(str(trinum)) < 6:
    trinum = n*(n+1)/2
    n += 1
print(trinum)

如果我说它只适用于我安装在我的计算机上的Pythonwhile len(str(trinum)) < 8:但应该是while len(str(trinum)) < 6:。所以我去了http://www.skulpt.org/ http://www.skulpt.org/在那里运行我的代码,它给了我正确的答案while len(str(trinum)) < 6: 就像它应该的那样。但它不适用于我在计算机上安装的 python 6。有人知道发生了什么事吗?


简答

在Python 3中,除法始终是浮点除法。所以在第一次通过时你会得到类似的东西str(trinum) == '0.5'。这不是你想要的。

您正在寻找整数除法。其运算符是//.

长答案

除法运算符在 Python 2.x 到 3.x 中发生了变化。以前,结果的类型取决于参数。所以1/2进行整数除法,但是1./2进行浮点除法。

为了解决这个问题,引入了一个新的运算符://。该运算符将始终进行整数除法。

所以在Python 3.x中,这个表达式(4 * 5)/2等于10.0。请注意,该数字小于 100,但其中包含 4 个字符。

如果相反,我们这样做了(4*5)//2,我们会得到整数10后退。这将使您的条件成立。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的答案是用相同的代码改变的[重复] 的相关文章

随机推荐