logo
Contato | Sobre...        
rebarba rebarba

Rodrigo Strauss :: Blog

follow us in feedly

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


  
 
 
Comentários
insanity | em 17/07/2007 | #
Legal ... , estava estudando python, a 2 semanas atraz ;-)
É bem facil de aprender hehe ...
Davi Mota | em 04/08/2008 | #
print s.islower.__doc__

Sensacional isso..

referencia imediata ..

sem comentarios.


rs

parabens !!
Algo a dizer?
Nome:


Site:


E-mail:


Escreva o número vinte e seis:


 Não mostre meu e-mail no site, não serve pra nada mesmo...

Comentário





Os comentários devem ser sobre assuntos relativos ao post, eu provavelmente apagarei comentários totalmente offtopic. Se quiser me enviar uma mensagem, use o formulário de contato. E não esqueça: isso é um site pessoal e eu me reservo o direito de apagar qualquer comentário ofensivo ou inapropriado.
rebarba rebarba
  ::::