PDA

View Full Version : IF statements and Lists


new_horizon
08-19-2011, 07:19 AM
Hi All,

A very basic (I'm sure) programming question, but I am creating a list of three mouse position clicks and if one of these clicks falls within a certain range, I would like to the program to execute some commands.

I'm sure this is very simple, but here is my code below...

yield viztask.waitTime(1.0) # wait before prompt
yield viztask.waitAny( [ viztask.waitButtonDown(zone1button),viztask.waitBu ttonDown(zone2button),viztask.waitButtonDown(zone3 button),viztask.waitButtonDown(zone4button),viztas k.waitButtonDown(zone5button),viztask.waitButtonDo wn(nonebutton)])
m_pos1 = viz.mouse.getPosition()
yield viztask.waitAny( [ viztask.waitButtonDown(zone1button),viztask.waitBu ttonDown(zone2button),viztask.waitButtonDown(zone3 button),viztask.waitButtonDown(zone4button),viztas k.waitButtonDown(zone5button),viztask.waitButtonDo wn(nonebutton)])
m_pos2 = viz.mouse.getPosition()
yield viztask.waitAny( [ viztask.waitButtonDown(zone1button),viztask.waitBu ttonDown(zone2button),viztask.waitButtonDown(zone3 button),viztask.waitButtonDown(zone4button),viztas k.waitButtonDown(zone5button),viztask.waitButtonDo wn(nonebutton)])
m_pos3 = viz.mouse.getPosition()
m_pos = [m_pos1,m_pos1,m_pos3]
grid.visible(viz.OFF)
zone1button.visible(viz.OFF)
zone2button.visible(viz.OFF)
zone3button.visible(viz.OFF)
zone4button.visible(viz.OFF)
zone5button.visible(viz.OFF)
nonebutton.visible(viz.OFF)
if on_off == 1:
stim=nv
if m_pos > 0.4 and m_pos< 0.6:
R = 1
stim = 0
prob_calc(R) # should be using last valid nv & R to calc next nv
stop_calc()
else:
R = 0
stim = 0
prob_calc(R) # should be using last valid nv & R to calc next nv
stop_calc()
if on_off == 0:
stim = 0
nulltrials = nulltrials + 1
if m_pos > 0.4 and m_pos < 0.6:
falsep = falsep+1
falserate = 100*falsep/nulltrials
print 'Trial:',tr,'Reversals: ', reverse, 'False pos rate:', falserate, 'M_pos1', m_pos1,'M_pos2', m_pos2,'M_pos3', m_pos3
print '--NEXT--'

Can anyone advise me?

Thanks

Jeff
08-19-2011, 06:22 PM
You can create a for loop to iterate through the positions in your m_pos list. Each position is itself a list of X,Y values. For example, the following checks to see if a position is in the top right quadrant:
m_pos1=[0.3,0.3]
m_pos2=[0.8,0.2]
m_pos3=[0.8,0.8]
m_pos = [m_pos1,m_pos2,m_pos3]

for pos in m_pos:
if pos[0] > 0.5 and pos[1] > 0.5:
print pos,'is in the top right quadrant'

new_horizon
08-23-2011, 01:45 AM
Thanks Jeff, perfect