WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Object not subscriptable (https://forum.worldviz.com/showthread.php?t=4007)

starlingstm 11-23-2011 12:20 PM

Object not subscriptable
 
Hello, I am defining a function with with a FOR and IF loop inside to print the position of an object. If the object is correctly placed with before the loop completes, the cooridnates will print along with a mesaage for the next action. If the object isn't place before the loops completes, a message is printed along with the correct coordinates.. The problem I having is an error that reads:

File "C:\Users\Husam\if loop test.py", line 17, in showData
if box_pos[0]==3 and pos[1] == 4.0 and pos[2] == -5.0:
TypeError: 'float' object is not subscriptable

But, if go through and check each box_pos[0] - box_pos[2] individually the loop works. I only get the error when I codes is as follows:


import viz
import vizact
import vizshape
viz.go()

box = vizshape.addBox([1,1,1],splitFaces=True,pos=(3.0,4.0,-5.0))
box_pos = box.getPosition(viz.ABS_GLOBAL)



def showData():
for number in range(5):
for pos in box_pos:
if box_pos [0]== 3.0 and pos[1] == 4.0 and pos[2] == -5.0:
print box_pos, 'The Box is connected properly move to next connection'
else:
print box_pos
vizact.ontimer(3,showData)

Please help!!!

Jeff 11-23-2011 03:12 PM

The variable pos is not a list, it's a single float value taken from the box_pos list. So you can't refer to an element within it.

AySz88 11-29-2011 10:32 AM

Instead of this:
Code:

for pos in box_pos:
    if box_pos [0]== 3.0 and pos[1] == 4.0 and pos[2] == -5.0:
      print box_pos, 'The Box is connected properly move to next connection'

you want something more like this:

Code:

if box_pos[0] == 3.0 and box_pos[1] == 4.0 and box_pos[2] == -5.0:
  print box_pos, 'The Box is connected properly move to next connection'

...

You may also want to compare positions approximately (i.e. "abs(box_pos[0] - 3.0) < 1e-3") to avoid any problems with rounding error.


All times are GMT -7. The time now is 01:02 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC