Ciekawe (prawie)jednolinijkowce w pythonie

Data publikacji: 2012-10-29 | Tagi:

Losowe hasło

import random
import string
''.join(random.choice(string.ascii_uppercase) for x in range(10))

Generuje losowe hasło, składające się z dziesiu wielkich liter.

Wymieniając string.ascii_uppercase na inne, można uzyskać dodatkowe znaki np.:

  • string.ascii_letters - hasło składa się z małych i wielkich liter
  • string.ascii_letters + string.digits - hasło z małych i wielkich liter oraz cyfr
  • string.ascii_lowercase + string.digits + string.punctuation - hasło z małych liter, cyfr i znaków przestankowych

Operator potrójny (ternary operator)

zmienna = True if warunek else False

zmienna przyjmie wartość True jeśli warunek będzie prawdziwy. W przeciwnym wypadku przyjmie wartość False

Serwer www

python -m SimpleHTTPServer

Uruchamia serwer www w bieżącym katalogu - przydatne w biurze, gdy trzeba coś komuś udostępnić w tej samej sieci.

Sprawdzacz palindromów

p = lambda x:x == x[::-1]

Palindrom to słowo, które czytane od końca brzmi tak samo jak czytane od początku. Przykłady palindromów: "kajak", "123454321", itp. Funkcja ta zwraca True dla ciągów, które są palindromami oraz False dla ciągów, które nie są palindromami. Np.:

In [1]: p = lambda x:x == x[::-1]

In [2]: p('example')
Out[2]: False

In [3]: p('kajak')
Out[3]: True

In [4]: p('656')
Out[4]: True

Zen pyhtona

import this

Wykonanie tego polecenia w interpreterze spowoduje wyświetlenie kilkunastu dobrych zasad programowania w pythonie, oto one:

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Liczby pierwsze

z = lambda n : [x for x in range(2, n + 1) if len([i for i in range(2, x) if x%i == 0]) == 0]

Funkcja lambda - po wywołaniu generuje liczby pierwsze do zadanej granicy np.:

In [1]: z(20)
Out[1]: [2, 3, 5, 7, 11, 13, 17, 19]

Kalendarz na rok bieżący

python -m calendar

Drukuje na ekranie kalendarz na bieżący rok.

Uruchamianie kodu pythona bezpośrednio z linii poleceń

python -c

lub

python -m

Pierwszy sposób powoduje wykonanie komendy po -c. Wszystkie parametry po tej komendzie są przekazywane jak argumenty do skryptu, a nie do samego pythona. Przykład:

Razor~ python -c "import sys;print sys.argv" piesek leszek
['-c', 'piesek', 'leszek']

Drugi sposób powoduje odnalezienie modułu o podanej nazwie i uruchomienie pliku *.py zawierającego ten moduł jak zwykłego skryptu. Przykład:

python -m SimpleHTTPServer


Oceń ten post:
Podziel się:

comments powered by Disqus

IT w obrazkach: