2014-12-04 5 views
0

У меня есть две логические переменные в моей программе, которая называется after и late. Просто чтобы убедиться, что каждая переменная получила правильное значение, я тестировал каждый из них с помощью следующей команды:Почему выражение false и true оценивается как true? (python 2.7)

print(after) 
print(late) 

Программа печатает

false 
true 

, как и ожидалось. Тем не менее, когда я запускаю следующий код:

if after and late: 
    print('true and true') 
elif after and (not late): 
    print('true and false') 
elif (not after) and late: 
    print('false and true') 
elif (not after) and (not late): 
    print('false and false') 

программа печатает

'true and true' 

, что означает, что выражение после и поздно оценивает к истине. Почему это оценивается как истинное, хотя true и false должны давать ложные значения?

+1

Возможно, строки 'after' и' late', возможно? – nneonneo

+0

a lil больше фрагментов было бы полезно – Codeek

+1

Они определенно не логические. Проверьте корпус. Булевы Python являются заглавными. – dyoo

ответ

4
>>> print(True and False) 
False 

Boolean значение имеет заглавную букву в начале. Я думаю, вы используете строки. Вы можете проверить это с помощью type(after).

Вам не нужно разделить все случаи вручную, чтобы «отладить» вашу программу. Это не так, как Python предназначался для ... Просто print оцененный код print(after+' and '+late), используйте type, как я выше, или используйте вашу интерактивную консоль python, чтобы поиграть.

+0

Спасибо. Я просто протестировал его, и они были струнами. – SarcasticSully

Смежные вопросы