Fatal Rein Fatal Rein - 2 months ago 7
Python Question

Validating the value of several variables

What I am after: The user is allowed to input only 0 or 1 (for a total of 4 variables). If the user inputs for example 2, 1, 1, 0 it should throw an error saying

Only 0 and 1 allowed
.

What I've tried so far:

if (firstBinary != 0 or firstBinary != 1 and secondBinary != 0
or secondBinary != 1 and thirdBinary != 0 or thirdBinary != 1
and forthBinary != 0 or forthBinary != 1):
print('Only 0 and 1 allowed')
else:
print('binary to base 10: result)


Problem: When I use such a statement, I get either the result even when I input for example 5, or I get 'only 0 and 1 allowed' even though I wrote all 1 or 0.




I found this which seemed to be what I was after, but it is still not working like I want it to:

if 0 in {firstBinary, secondBinary, thirdBinary, forthBinary} or 1 in \
{firstBinary, secondBinary, thirdBinary, forthBinary}:
print("Your result for binary to Base 10: ", allBinaries)
else:
print('Only 0 and 1 allowed')


This code basically gives me the same result as what I get with the first code sample.

Answer

Use any:

v1, v2, v3, v4 = 0, 1, 1, 2

if any(x not in [0, 1] for x in [v1, v2, v3, v4]):
    print "bad"

of course, if you use a list it will look even better

inputs = [1, 1, 0 , 2]

if any(x not in [0, 1] for x in inputs):
    print "bad"