代码:n = 18total = 0while n <=35: total += (n/2) print(total) n += 2 输出:`9.019.030.042.055.069.084.0100.0117.0`第二个代码:n = 40total = 2while n >=25: total += n print(total) n -= 3 `输出:4279113144172197问题:为什么第一个输出在整数后面有 .0 而第二个输出没有,尽管 2 个代码看起来相似
3 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
例如,在 Python 3 中,使用/运算符将两个整数相除会产生float值
>>> 1/2
0.5
... 但是也
>>> 1/1
1.0
(在 Python 2 中,你会得到0和1!)
在第一次迭代中,要添加int,并float与total += (n/2)两个float在随后的迭代秒。这两个加法都会产生float值。
尾随.0看起来很奇怪,因为您专门计算可以表示为整数的值。
已经int_a/int_b成为一个float(在Python 3),即使结果可以写成一个整数,仅仅是一致的。
如果将一些整数相除会产生float值而将一些其他整数相除会产生值,那将会很奇怪int。
在您的第二个代码片段中,您只将整数相加和相减,从而产生int值,因此您看不到尾随的.0.
最后,如果要强制执行整数除法,请使用//运算符。
>>> 1//2
0
>>> 1//1
1
//在 Python 3 中的行为就像/在 Python 2 中一样。
qq_笑_17
TA贡献1818条经验 获得超7个赞
除法运算符/
在 Python 3 中总是产生一个浮点数。//
如果你确定它n
总是偶数,或者如果你不需要余数,你应该改用整数除法运算符:
total += n // 2
添加回答
举报
0/150
提交
取消