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!!! |
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.
|
Instead of this:
Code:
for pos in box_pos: Code:
if box_pos[0] == 3.0 and box_pos[1] == 4.0 and box_pos[2] == -5.0: 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:15 PM. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC