Hello and welcome to our community! Is this your first visit?
Enjoy an ad free experience by logging in. Not a member yet? Register.

# Thread: Warning: integer argument expected, got float

1. ## 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]```

2. 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.

3. 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?

4. Well again `int(round(notch[x]))`. It doesn't assign the rounded number, it just converts it for usage.

5. 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.

6. 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.

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•