У меня есть вопрос относительно инструкции if not
в Python 2.7
.
Я написал код и использовал операторы if not
. В одной части кода, который я написал, я ссылаюсь на функцию, которая включает оператор if not
, чтобы определить, было ли введено необязательное ключевое слово.
Он отлично работает, за исключением случаев, когда 0.0
- значение ключевого слова. Я понимаю, это потому, что 0
является одной из вещей, которые считаются "нет". Мой код, вероятно, слишком длинный для публикации, но это аналогичный (хотя и упрощенный) пример:
def square(x=None):
if not x:
print "you have not entered x"
else:
y=x**2
return y
list=[1, 3, 0 ,9]
output=[]
for item in list:
y=square(item)
output.append(y)
print output
Однако в этом случае я получил:
you have not entered x
[1, 9, None, 81]
Где бы я хотел:
[1, 9, 0, 81]
В приведенном выше примере я мог бы использовать понимание списка, но предполагая, что хочу использовать функцию и получить желаемый результат, как я могу это сделать?
Одна мысль, что у меня была:
def square(x=None):
if not x and not str(x).isdigit():
print "you have not entered x"
else:
y=x**2
return y
list=[1, 3, 0 ,9]
output=[]
for item in list:
y=square(item)
output.append(y)
print output
Это работает, но похоже, что это неуклюжий способ сделать это. Если у кого-то есть другой способ, который был бы хорош, я был бы очень благодарен.