用Python划分值

时间:2016-12-09 14:14:52

标签: python python-2.x

我制作了一个xlrd到json解析脚本,它没有划分变量。它总是返回零...我用来划分变量的代码是:

if not row_values[2]:
   key['nr_one'] = 0
else:
   key['nr_one'] = int(row_values[2])
if not row_values[4]:
   key['nr_two'] = 0
else:     
   key['nr_two'] = int(row_values[4])
try:   
    key['perc'] = float(key['nr_two']/key['nr_one']*100)
except ZeroDivisionError:
    key['perc'] = 0

我在脚本末尾打印了以下代码:

print('one')
print(key['nr_one'])
print('two')
print(key['nr_two']) 
print('perc')
print(key['perc'])

返回:

one
103386547
two
135680054
perc
0.0

因此。我不明白为什么分裂失败并返回0?请有人帮我格式化计算百分比的好方法

4 个答案:

答案 0 :(得分:5)

整数除法是这样的:

1/3 #=> 0

理解此结果的最简单方法不是作为一个分数,而是问题"How many times do 3 fit in 1?"的答案。

所以0乘以100仍是:

1/3 * 100 #=> 0

你需要

100.0*1/3 #=> 33.333333

代码:

key['perc'] = 100.0*key['nr_two']/key['nr_one'](不使用float(...)

它返回:

76.1987808465937

注意:您确实需要键入100.0(浮点数),而不仅仅是100(一个int)。否则你会得到76

答案 1 :(得分:5)

应为float(key['nr_two']) /key['nr_one']*100

答案 2 :(得分:3)

key['nr_two']是整数,因此key['nr_one']。因此,当它们被分割时,结果将被强制为Python 2x版本中的整数 在Python 3x中,此限制不存在且您的代码运行得很好)。你得到的是0,后来乘以100,所以仍然是0但浮动,0.0。

答案 3 :(得分:1)

要在python 2.x中实现float除法,您只需添加:

from __future__ import division

这样,每次分割时都不需要转换数字。