• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

rolando2424

One Liners em Python. Deixem aqui os vossos

1 mensagem neste tópico

Como o Python é uma linguagem em que a indentação do código é praticamente obrigatório, existe sempre o desafio (se bem que é mais na desportiva ;)) de fazer conjuntos de código numa só linha.

Só não podem é usar o ";" para colocar dois comandos diferentes na mesma linha.

Deixo aqui uns exemplos:

for i, k in zip(("Byte", "Kb", "Mb", "Gb"), [ pow(1024, k) for k in range(4) ]): print "1 %-4s = %s %s" % (i, k, "Bytes" if k != 1 else "Byte")

Este imprime uma tabela com os valores em bytes das unidades de armazenamento até ao Gigabyte (podia fazer mais, mas não me apeteceu ;)).

1 Byte = 1 Byte

1 Kb   = 1024 Bytes

1 Mb   = 1048576 Bytes

1 Gb   = 1073741824 Bytes

(Reparem que 1 Byte = 1 Byte e não 1 Byte = 1 Bytes)

Um que encontrei na net (ou seja, não fui eu que o fiz ;)) é para calcular factoriais:

def fact(x): return (1 if x==0 else x * fact(x-1))

Há alguns meses, deu-me na cabeça fazer um ficheiro que se abrisse a si mesmo e que fizesse print do seu output. Tentei fazer isso numa linha:

for line in file(os.path.join(sys.argv[0]), 'r').readlines(): sys.stdout.write(line)

(Ok, afinal são preciso duas, por causa do import sys, os)

Depois o djthyrax mostrou porque é o leet que é:

print open(sys.argv[0], "r").read(),

(Este também precisa de um import, mas é só de um import sys)

Fiz um search para ver se havia algum tópico parecido, e a página perguntou-me se não queria antes procurar por "Noé lunares" (não tem nada a ver com isto, mas achei piada).

Por isso agora mostrem os vossos one liners em Python (podem usar lambdas à vontade :)), que já tenham feito, ou então façam agora.

Podem ser de qualquer tipo (uteis, inúteis, etc :P)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora