# Warning: integer argument expected, got float

• 12-22-2011, 06:22 PM
KevinJohnson
Warning: integer argument expected, got float
i'm getting the following error when trying to divide by numbers inside of a list. I'm a little new to Python, and i was wondering how i can fix this problem.

sphere.py:23: Deprecation Warning: integer argument expected, got float
for y in range(notch[x] / 360):

Code:

```import math ## Generate a Sphere in 3d Space def sphere(r, lx, ly, lz):     for i in range(0,360):         lx.append(math.cos(i) * r)         ly.append(math.sin(i) * r)         lz.append(math.cos(i) * r) ## Generate a list of possible Lock positions def GenPositions(NotchList, n):     notch = []     a1 = 180     r = .5     # Generate a List of Smallest Slice angles     for i in range(n):         notch.append(a1 * (r ** (i-1)))     # Generate a final list of Notches     for x in range(1,len(notch)):         for y in range(notch[x] / 360):             NotchList.append(notch[x] * y) # Test -  Generate sphere coordinates lx = [] ly = [] lz = [] tmp = sphere(10, lx, ly, lz) for i in range(len(lx)):     print lx[i], ly[i], lz[i] print print "There are " + str(len(lx)) + " vertices" # Test  -  Generate Lock positions NotchList = [] tmp = GenPositions(NotchList, 64) for i in range(1,len(NotchList)):     print i, NotchList[i]```
• 12-22-2011, 09:17 PM
Apothem
notch[x] is not guaranteed to be an integer. You may want to do: `int(round(notch[x]))`

Edit: It is not guaranteed to be an integer because you are assigning it a value that makes use of r, which is a float. Range requires an integer to generate a number from 0 to that number-1.
• 12-23-2011, 05:42 AM
KevinJohnson
Quote:

Originally Posted by Apothem
notch[x] is not guaranteed to be an integer. You may want to do: `int(round(notch[x]))`

Edit: It is not guaranteed to be an integer because you are assigning it a value that makes use of r, which is a float. Range requires an integer to generate a number from 0 to that number-1.

The problem is that 360 will always be divided by a float, and i need to store the result in a resultant list somewhere for later manipulation..... how exactly do i do that?

Or...should i use a different kind of loop structure?
• 12-23-2011, 04:49 PM
Apothem
Well again `int(round(notch[x]))`. It doesn't assign the rounded number, it just converts it for usage.
• 12-25-2011, 01:14 AM
Samhain13
notch[x]/360 is likely going to be a float anyway, regardless of whether notch[x] were rounded. And the problem is, range simply doesn't want floats; hence, the Deprecation Warning.

I believe "a different kind of loop structure" is truly in order.
• 02-27-2012, 11:35 AM
KevinJohnson
Quote:

Originally Posted by Samhain13
notch[x]/360 is likely going to be a float anyway, regardless of whether notch[x] were rounded. And the problem is, range simply doesn't want floats; hence, the Deprecation Warning.

I believe "a different kind of loop structure" is truly in order.

You're right. What's needed is a "While... loop" structure.

i think it's ok, learning any new language has it's ins and outs. i'm learning them as i go.