Вместо:
if((kidney1) and (kidney2) and (kidney3) <= -1.5):
Вы, вероятно, намереваетесь проверить, меньше ли каждое отдельное значение -1,5:
if (kidney1 <= -1.5) and (kidney2 <= -1.5) and (kidney3 <= 1.5):
Это не будет выполнено, если значения почек являются строками, что скорее всего, если вы читаете их из файла. Вы можете избежать ошибки, приведя их к числам с плавающей точкой:
if float(kidney1) <= -1.5 and float(kidney2) <= -1.5 and float(kidney3) <= 1.5:
Даже если вы приведете значения почек к значениям с плавающей точкой, в исходной версии у вас возникнут проблемы, поскольку операция <=
не распространяется в течение трех значений почек. Ваш исходный оператор такой же, как:
if (kidney1 and kidney2 and kidney3) <= -1.5
Когда вы используете and
для последовательности значений, Python будет повторять их до тех пор, пока не достигнет конца последовательности или не увидит "ложь" " ценность. Для строк пустая строка - false, а любая непустая строка - правдивая. Для чисел с плавающей точкой 0 - ложь, а все остальное (даже NaN) - правда. В консоли стоит поиграть с этим, чтобы создать интуицию:
>>> "hello" and "world"
"world"
>>> "hello" and "world" and "" and "more" and "strings"
""
>>> (1 and 3) <= 1.5
False
>>> (3 and 1) <= 1.5
True