Rodrigo Strauss :: Blog
Tutorial informal de Python, parte 2
>>> # Essa é a segunda parte do tutorial informal de Python. >>> # Só que dessa vez, o próprio tutorial é escrito em Python. >>> # Para acompanhar, é só abrir o console do Python e digitar. >>> >>> # As variáveis em python não tem tipo definido, elas são >>> # somente referências para objetos >>> a = 10 >>> type(a) <type 'int'> >>> b = 20 >>> type(b) <type 'int'> >>> c = 2.0 >>> type(c) <type 'float'> >>> d = 12345678901234567890123456789012345678901234567890123456789 0123456789012345678901234567890 >>> type(d) <type 'long'> >>> # como visto, o tipo é inferido na declaração. Outro recurso interessante é que o nosso número >>> # gigantesco foi abrigado sem problemas pela variável d. >>> # Operações entre tipos numéricos diferentes são permitidos: >>> d + a 123456789012345678901234567890123456789012345678901234567890123456789 012345678901234567900L >>> c + d 1.2345678901234568e+089 >>> # caso você já tenha esquecido das variáveis (afinal, a, b, c, d são nomes realmente intuitivos), >>> # vai aqui um lembrete: >>> a,b,c,d (10, 20, 2.0, 12345678901234567890123456789012345678901234567890123456789012345 6789012345678901234567890L) >>> # mas tipos não relacionados não são misturados (para não perder a piada: isso não é VB6 :-)) >>> s = 'python, a linguagem que não te atrapalha' >>> type(s) <type 'str'> >>> s + a Traceback (most recent call last): File "<interactive input>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects >>> s + d Traceback (most recent call last): File "<interactive input>", line 1, in <module> TypeError: cannot concatenate 'str' and 'long' objects >>> # Eu acho desnecessário falar sobre expressões matemáticas em Python, é bem parecido com as outras >>> # linguagens. E como esse projeto de tutorial é voltado para programadores, não vou ficar chateando >>> # ninguém. >>> >>> # Vamos trabalhar um pouco com manipulação de strings. >>> s 'python, a linguagem que n\xe3o te atrapalha' >>> type(s) <type 'str'> >>> # Você deve ter notado que 'não' virou 'n\xe3o', porque o padrão é avaliar a expressão como UTF8. >>> # Você resolve esse problema usando o comando print: >>> print s python, a linguagem que não te atrapalha >>> # String (como quase tudo em Python) é um objeto. Vamos ver quais os métodos ele suporta: >>> dir(s) ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__str__', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] >>> # Eu também gostei BASTANTE desse recurso. Tem outro muito bom. Veja isso: >>> s.islower.__doc__ 'S.islower() -> bool\n\nReturn True if all cased characters in S are lowercase and there is\nat least one cased character in S, False otherwise.' >>> # é bom não esquecer do print... >>> print s.islower.__doc__ S.islower() -> bool Return True if all cased characters in S are lowercase and there is at least one cased character in S, False otherwise. >>> # todos os métodos, propriedades ou funções que começam e terminam com __ são 'mágicos'. >>> # Você pode ver alguns deles na lista de atributos do objeto s: >>> s.__class__ <type 'str'> >>> >>> # Vamos à algumas funcionalidades que o tipo string fornece. >>> s1 = 'python' >>> s2 = "C++" >>> # Aspas simples e duplas são aceitas, não faz diferença >>> s3 = s1 + '\n' + s2 >>> print s3 python C++ >>> # a barra invertida é escape igual ao C/C++ >>> print '\tteste\n\n\t\tteste\n' teste teste >>> # se você quer usar a barra invertida literalmente, coloque o prefixo 'r'na string >>> print r'c:\python25\python.exe' c:\python25\python.exe >>> # Algumas funções úteis: >>> '1,2,3,4,5,6,7,8,9,0'.split(',') ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'] >>> # O retorno disso é uma lista, veremos mais sobre isso depois. >>> # Mas o recurso mais interessante com certeza é 'indexing and slicing'. Veja isso: >>> print s3 python C++ >>> s3[0] # indexação começando pelo zero, como em C/C++ 'p' >>> s3[-1] # usando números negativos como índice, começamos pelo final '+' >>> s3.find('\n') # onde está a quebra? 6 >>> s3[s3.find('\n')] '\n' >>> # Vamos agora ao fatiamento de strings: >>> s3[0:6] 'python' >>> # Mas como começamos do início, o primeiro número é opcional: >>> s3[:6] 'python' >>> # Lembra o índice negativo? Também ajuda aqui: >>> s3[-3:] 'C++' >>> # Vamos separar as palavras 'python' e 'C++' pela quebras de linhas >>> pos = s3.find('\n') >>> print s3[:pos], '-', s3[pos+1:] python - C++
Em 16/07/2007 23:07, por Rodrigo Strauss





Legal ... , estava estudando python, a 2 semanas atraz ;-)
É bem facil de aprender hehe ...