代码:
n = 18
total = 0
while n <=35:
total += (n/2)
print(total)
n += 2
输出:`
9.0
19.0
30.0
42.0
55.0
69.0
84.0
100.0
117.0`
第二个代码:
n = 40
total = 2
while n >=25:
total += n
print(total)
n -= 3 `
输出:
42
79
113
144
172
197
问题:为什么第一个输出的整数后面是.0,而第二个输出却没有,尽管2个代码看起来很相似
答案 0 :(得分:2)
除法运算符/
在Python 3中始终产生浮点数。如果您确定//
始终为偶数,或者如果确定n
始终为偶数,则应使用整数除法运算符total += n // 2
。您不需要其余的东西:
[20:23:11] [INFO] --- sonar-maven-plugin:3.5.0.1254:sonar (default-cli) @ commons-vaadin ---
[20:23:11] [INFO] User cache: /var/jenkins/.sonar/cache
[20:23:17] [INFO] SonarQube version: 7.0.0
[20:23:17] [INFO] Default locale: "en_US", source code encoding: "UTF-8"
[20:23:18] [INFO] Publish mode
[20:23:18] [INFO] Load global settings
答案 1 :(得分:2)
Python3中的运算符'/'返回一个浮点数,使用整数除法'//'获得整数。
答案 2 :(得分:1)
在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中的行为。