我是一个完全的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(使用前将#替换为@)