代码之家  ›  专栏  ›  技术社区  ›  techguy1029

为什么两个列表项的除法总是等于零?

  •  -1
  • techguy1029  · 技术社区  · 7 年前

    我正试图将一个列表中的两个整数分开。每当我把这两个整数相除,我就得到零。无论列表中使用什么整数,我总是得到零。

     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
    

    我试过用 // . 如果我使用两个不属于这个列表的正则整数,它会很好地工作,所以我认为它与我的列表函数有关。

    编辑:这是用户方

     def user_sides(x,y,z):
         side1 = x
         side2 = y
         side3 = z
         print(side1, side2, side3)
         return side1, side2, side3
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   Óscar López    7 年前

    您的代码可以简化,您得到的错误可能是因为您使用的是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 S开头:

    sideList = [6, 7, 8]
    

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

    def angles_for_triangle():
        return 7 / 8
    
        2
  •  0
  •   Ora Aff    7 年前

    在python 2中,integer除以integer总是一个整数。

    print 5/2
    

    结果:2

    但是,如果将5转换为float,则会得到结果2.5。

    print 5.0/2
    

    结果:2.5