2015-06-23 5 views
-4

У меня есть массив из двух ИНТ, и я хочу, чтобы проверить, либо его нет, так что у меня есть это:Python - проверить, если массив пуст

print hourArray 
if hourArray[0] or hourArray[1] is None: 
    print "FAILED???" 
else: 
    print "array is full" 

И даже несмотря на то print hourArray показывает это прямо перед если заявление

[2040, 2640] 

Он печатает FAILED???, хотя ни один из элементов в массиве не является None?

Почему это происходит?

+0

', если (hourArray [0] не является None) или (hourArray [1] не None) 'или' if None в [hourArray [0], hourArray [1]] ' –

+0

', если a или b == something' является невероятно распространенной ошибкой в ​​Python, см. дубликат. Во-первых, это должно быть 'if a == something или b == something'. Во-вторых, вы должны использовать '==' вместо 'is' – CoryKramer

+0

@CoryKramer. По сравнению с синглтонами типа' None' должно выполняться с 'is' в python, согласно [pep8] (https://www.python.org/dev/Peps/PEP-0008 /). – jme

ответ

0

Проблема в том, что вы проверяете if (hourArray[0]) or (hourArray[1] is None), все ненулевые целые значения всегда верны.

Вы должны сделать -

if hourArray[0] is None or hourArray[1] is None: 

Пример ненулевая целочисленных значений истинности -

>>> if 1: 
...  print('Hello') 
... 
Hello 
+0

Исправлено, извините, пропустил это. –

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