Go Back   CodingForums.com > :: Server side development > Other server side languages/ issues > Python

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 12-22-2011, 05:22 PM   PM User | #1
KevinJohnson
Regular Coder

 
Join Date: May 2009
Location: China
Posts: 133
Thanks: 1
Thanked 1 Time in 1 Post
KevinJohnson has a little shameless behaviour in the past
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]
KevinJohnson is offline   Reply With Quote
Old 12-22-2011, 08:17 PM   PM User | #2
Apothem
Regular Coder

 
Apothem's Avatar
 
Join Date: Mar 2008
Posts: 380
Thanks: 36
Thanked 25 Times in 25 Posts
Apothem is an unknown quantity at this point
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.

Last edited by Apothem; 12-22-2011 at 08:29 PM..
Apothem is offline   Reply With Quote
Old 12-23-2011, 04:42 AM   PM User | #3
KevinJohnson
Regular Coder

 
Join Date: May 2009
Location: China
Posts: 133
Thanks: 1
Thanked 1 Time in 1 Post
KevinJohnson has a little shameless behaviour in the past
Quote:
Originally Posted by Apothem View Post
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?
KevinJohnson is offline   Reply With Quote
Old 12-23-2011, 03:49 PM   PM User | #4
Apothem
Regular Coder

 
Apothem's Avatar
 
Join Date: Mar 2008
Posts: 380
Thanks: 36
Thanked 25 Times in 25 Posts
Apothem is an unknown quantity at this point
Well again int(round(notch[x])). It doesn't assign the rounded number, it just converts it for usage.
Apothem is offline   Reply With Quote
Old 12-25-2011, 12:14 AM   PM User | #5
Samhain13
Regular Coder

 
Samhain13's Avatar
 
Join Date: Aug 2008
Location: Pilipinas
Posts: 165
Thanks: 4
Thanked 18 Times in 18 Posts
Samhain13 is on a distinguished road
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.
__________________
I am a Man of Truth. I am a Free Human Person. I am a Peacemaker.
** Independent Multimedia Artist in Pasig **
Samhain13 is offline   Reply With Quote
Old 02-27-2012, 10:35 AM   PM User | #6
KevinJohnson
Regular Coder

 
Join Date: May 2009
Location: China
Posts: 133
Thanks: 1
Thanked 1 Time in 1 Post
KevinJohnson has a little shameless behaviour in the past
Quote:
Originally Posted by Samhain13 View Post
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.
KevinJohnson is offline   Reply With Quote
Reply

Bookmarks

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 01:27 PM.


Advertisement
Log in to turn off these ads.