4 de novembro de 2010

Operador ternário

Para quem não sabe, o operador ternário é assim (em PHP): echo ($a < $b ? 'a é menor' : 'a não é menor');

Em Python, você pode fazer assim: print 'a é menor' if a < b else 'a não é menor'

Porém, eu recomendo que você faça o arroz-com-feijão, que fica muito mais simples de entender:
>>> if a < b:
...     print 'a é menor'
... else:
...     print 'a não é menor'

Lembre-se que simples é melhor do que complexo.

Eu sou Vinicius Assef, um programador do século passado que gosta de Python, pratica Lean Development e acredita em Deus. Você pode me contactar por email ou twitter.

5 comentários:

  1. Oi Vinicius -- achoq ue escrever "O operdaor ternário em Python é diferente de outras linguagens" e não que "Python não tem o operador ternário".

    Afinal, você mesmo mostra o operador ternário do Python.

    ResponderExcluir
  2. Vinicius,

    na verdade, Python tem dois operadores ternários. A forma mais nova, disponível a partir da versão 2.5 do Python [1], é a que voce mencionou:

    print 'a é menor' if a < b else 'a não é menor'

    No entanto, desde versões mais antigas é possível também fazer a seguinte forma, que também é bastante usada:

    print (a < b) and 'a é menor' or 'a não é menor'

    Se for utilizar esta forma, há de se tomar cuidado com os valores passados para a expressão no caso verdadeiro -- se o valor for considerado falso (ex.: uma string vazia), a expressão não vai retornar o valor esperado. Exemplo:

    >>> print True and '' or 'é falso'
    é falso

    Esta forma é conhecida também como "python and or trick" [2].

    [1] http://docs.python.org/whatsnew/2.5.html#pep-308-conditional-expressions
    [2] http://diveintopython.org/power_of_introspection/and_or.html

    ResponderExcluir
  3. JS, obrigado pela correção. Resolvi retirar a parte errada do post.

    Augusto, boa observação.
    Eu já conhecia essa forma anterior mas achei menos intuitiva e meio frágil, justamente por depender do and.
    Ainda bem que saiu a forma nova. ;-)

    Obrigado, pessoal.

    ResponderExcluir
  4. um incentivo e tanto para quem está querendo aprender a programar e em python...

    Parabéns cara!

    ResponderExcluir
  5. Parabens, mas acho ternário melhor p tudo , kk

    ResponderExcluir

Marcadores