How to create an if elif else statement with multiple conditionals (& operator)?

OK, I must be missing something, this seems like it should be pretty simple.

What I would like to do is take in A (angle value), test if it is between zero and 180 or 180 and 360 in order to determine which values I want the node to output, X or -X. if the angle is 0, 180 or 360 I want a different Y set of values.

A will be a single value, X and Y are lists of values.

Please see python code:

import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
#The inputs to this node will be stored as a list in the IN variables.
dataEnteringNode = IN

A = IN[0]
X = IN[1]
Y = IN[2]
Return = []

if A>0 & A<180:
	Return = X
elif A>180 & A<360:
	Return = -X
else:
	Return = Y

#Assign your output to the OUT variable.
OUT = Return

I keep getting error:
TypeError: unsupported operand type(s) for &: ‘int’ and ‘list’

Please post any code as preformatted text so it looks correct and can be copied for troubleshooting.
image

thanks, my bad. will do in future

Python uses and not & for conditional statements. That should be all you need for your statements, however if X and Y are lists, you’ll need to allow for that in your code as well.

Since -X is the only Return that modifies the list it’s the only one that needs to be changed:
Return = [-x for x in X]

All this for organizing curtain panels starting at top left of exterior face. Maybe there is a cleaner way.

import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
#The inputs to this node will be stored as a list in the IN variables.
dataEnteringNode = IN

A = IN[0]
X = IN[1]
Y = IN[2]

Return = []

if A[0] > 0 and A[0] <= 90:
	Return = X
elif A[0] > 90 and A[0] < 180:
	Return = X
elif A[0] > 180 and A[0] < 270:
	Return = [-x for x in X]
elif A[0] >= 270 and A[0] < 360:
	Return = [-x for x in X]
elif A[0] == 180:
	Return = [-y for y in Y]
else:
	Return = Y

#Assign your output to the OUT variable.
OUT = Return

Thank you @Nick_Boyts

Attached is the .dyn in which I was using this python script.
It is far from finished, but the plan is to swap curtain panels based on values from excel. I thought I had seen a similar example before, but my search queries are coming up empty.
CurtainPanels_ByExcel_WIP.dyn (79.9 KB)

Lets see if this .gif works when inserted.
CP_Swap_01
This thread was the linchpin to facilitate swapping curtain panels based on an excel spreadsheet.

What is wrong in following code? Error : ‘int’ object is unsubscriptable

import clr
clr.AddReference(‘ProtoGeometry’)
from Autodesk.DesignScript.Geometry import *

The inputs to this node will be stored as a list in the IN variables.

dataEnteringNode = IN

Place your code below this line

Assign your output to the OUT variable.

sc = IN[0]

Return =

if sc[0] == 100:
Return = -20
elif sc[0] == 50:
Return = -50
else:
Return = 0

#Assign your output to the OUT variable.
OUT = Return

I am getting error in ‘elif’.
This is all related to if and elif.

Thank you for your reply.

at first look, Return is set as a list and only given one value seeing as it only accesses the first index of your input list. granted a list of one value is still technically a list. is your input a list? as erfajo stated, you might be better off creating a new post and reference this one, while including more information and any possible background files for review.