2014-10-31 6 views
-4

Может кто-то пожалуйста, смотрите, что здесь не так:питона, если еще не работает, как ожидалось

dang=True 
if [ dang == False ] : 
    print ("False") 
    print("Value of dang is %s"%dang) 
else : 
    print ("True") 
    print("Value of dang is %s"%dang) 

ding=True 
if ding == False : 
    print ("False") 
    print("Value of ding is %s"%ding) 
else : 
    print ("True") 
    print("Value of ding is %s"%ding) 

Ниже результат

False 
Value of dang is True 
True 
Value of ding is True 
+2

для чего вы используете квадратные скобки? Кроме того, сравните с 'is' вместо == для значений boolean и None. http://stackoverflow.com/questions/9494404/use-of-true-false-and-none-as-return-values-in-python-functions – Paco

+1

'[dang == False]' возвращает '[False]' , Посмотрите на это: http://www.tutorialspoint.com/python/python_lists.htm – Paco

+1

@Paco, ваша ссылка, похоже, не согласна с вами. «Вы никогда не должны использовать' is' с базовыми встроенными неизменяемыми типами, такими как booleans (True, False), номерами и строками « – Kevin

ответ

1

В Python вам не нужно использовать скобки (не говоря уже о квадратных скобках) для структурирования if-statement.

В первом примере вы написали if [ dang == False ] :, который в конечном итоге упрощается до if [False], который оценивается как True, являясь непустым списком. Это означает, что выполняется if-statement, его код запускается, а следующие условия (если есть) пропускаются.

[ dang == False ] создает список, это не то, как вы структурируете if s в Python, просто так.

+1

фактически, '[False]' оценивает значение 'True' в булевом контексте, так как это непустой« список ». – ch3ka

+0

О! хороший улов. – TankorSmash

4

В первом примере, он говорит, что это False потому что вы поместите чек в список ([] - так будет [False]). Непустые списки оцениваются в boolean truth в Python; так что оператор if всегда положителен, так как это условие всегда будет существовать. Чтобы исправить это, просто удалите эти скобки.

+0

Головоломка для меня - почему я должен удалить квадратные скобки? –

+2

@DaveA Поскольку они не являются синтаксически требуемыми ... и, как я только что объяснил, они составляют список ... –

+1

@DaveA Квадратные скобки указывают список в Python, который является экземпляром класса 'list'. Экземпляры классов «True» по умолчанию в Python.За исключением случая с пустым списком (или любой пустой последовательности, такой как '[]', '()' или '{}'). – IanAuld

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