Python, не останавливается на ИЛИ?[также связанный с Reddit] - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть вопрос о Python, я не совсем уверен, что другие языки программирования делают то же самое, но позвольте мне объяснить проблему:

#Let's pretend x could be 'None' or some string.
x = None

if x is not None or len(x) != 0:
  pass
#next elif

Я пытаюсь достичь этого.Если в этом случае x будет None, то первое утверждение вернет false и перейдет к «следующему elif».Но он не может этого сделать, потому что я получаю эту ошибку: TypeError: у объекта типа 'NoneType' нет len ()

Моя самая большая проблема заключается в том, что я не могу использовать, if x:, потому что в зависимости от того,старый или новый reddit, он имеет другое значение, и один из них, вероятно, является пробелом без ширины, не знаю, как я могу печатать юникоды, но строка просто пуста, когда я печатаю x.

1 Ответ

2 голосов
/ 21 сентября 2019

Дело в том, что x is not None не соответствует действительности, поэтому len (x)! = 0 необходимо оценить, чтобы определить, является ли весь оператор истинным.Если бы оно было and вместо or, оно не было бы оценено.Что вам, вероятно, нужно, это либо if x is not None and len(x) != 0, либо if x is None or len(x) == 0.В обоих случаях вторая часть условия не будет оценена, если x равен None.

...