为什么将两个列表项相除总是等于零?

时间:2019-02-14 05:14:49

标签: python

我正在尝试将列表中的两个整数相除。每当我将这两个整数相除时,我都会得到零。无论列表中使用什么整数,我总会得到零。

 def sideList_func():
     lengths = user_sides(6.0, 7.0, 8.0)
     sideList = []
     for i in lengths:
         sideList.append(int(i))
     return sideList


 def angles_for_triangle():
     sideList = sideList_func()
     angle = sideList[1]/sideList[2]
     return angle

我尝试使用//。如果我使用了两个不包含在此列表中的规则整数,则它可以正常工作,因此我认为它必须对列表函数有所帮助。

编辑:这是user_sides

 def user_sides(x,y,z):
     side1 = x
     side2 = y
     side3 = z
     print(side1, side2, side3)
     return side1, side2, side3

2 个答案:

答案 0 :(得分:0)

在Python 2中整数除以Integer始终是Integer。

print 5/2

结果:2

但是,如果将5转换为float,则结果为2.5

print 5.0/2

结果:2.5

答案 1 :(得分:0)

您的代码可以简化,并且出现的错误可能是因为您使用的是Python 2.x的整数除法。试试这个:

# this line will get your decimals back :)
from __future__ import division

def sideList_func():
     return [int(i) for i in (6.0, 7.0, 8.0)]

 def angles_for_triangle():
     sideList = sideList_func()
     return sideList[1] / sideList[2]

我真的没有必要使用sideList_func,如果这些值是固定的并且事先知道,您可以简单地将它们写为int来开始:

sideList = [6, 7, 8]

顺便说一下,您所有的代码都只是这样做:

def angles_for_triangle():
    return 7 / 8