Mostrando postagens com marcador for. Mostrar todas as postagens
Mostrando postagens com marcador for. Mostrar todas as postagens

quinta-feira, 25 de maio de 2017

Coloca o óculos que vamos ler um texto (de um arquivo)

Muita gente que já programou em outras linguagens, se apaixonou por Python por muitos motivos, mas um deles é a facilidade com que se constrói as coisas. Um bom exemplo disso é o próprio "Hello world". Veja só:

C#:

// A Hello World! program in C#. using System; namespace HelloWorld { class Hello { static void Main() { Console.WriteLine("Hello World!"); // Keep the console window open in debug mode. Console.WriteLine("Press any key to exit."); Console.ReadKey(); } } }
Java:
public class HelloWorld

{
public static void main (String[] args)
{ // Prints "Hello, World" to the terminal window. System.out.println("Hello, World");
}
}

Cobol:
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
* simple hello world program
PROCEDURE DIVISION.
    DISPLAY 'Hello world!'.
    STOP RUN.
Delphi:
program HelloWorld;
{$APPTYPE CONSOLE}
begin
WriteLn('Hello World');
end.
Python: print("Goodbye, World!") Pois bem... O que muita gente que programa em Python não sabe é que o que é simples pode ficar ainda mais simples! Vamos a alguns exemplos: Temos esse lindo laço de repetição chamado for: listinha = [] for quadrado in range(10): listinha.append(quadrado**2) print(listinha) Bem... Essa foi fácil né? Mas vamos dar uma melhorada nisso: listinha = list(map(lambda x: x**2, range(10))) print(listinha) Uai! Que coisa massa, hein?? Mas não para por aí! Vamos remelhorar! listinha = [x**2 for x in range(10)] print(listinha) Nossa!!! Tô mais bobo que o Kuririn quando o Vegeta se transformou em Super Sayajin! Resultado de imagem para kuririn Muito legal né? Agora vamos ver outra bruxaria do Python. Vamos criar duplas de números onde os algarismos não se repitam entre si, usando duas listas: duplinha = [] for x in [1,2,3]: for y in [3,1,4]: if x!=y: duplinha.append((x,y)) print(duplinha) Aplicando a magia: duplinha = [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] print(duplinha) Sensacional né? Esse tio Python é mais inacrebelieveble que a vassoura de aço!!! Imagem relacionada Agora a saideira: vamos fazer uma matriz transposta: matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], ] transposta = [[row[i] for row in matrix] for i in range(4)] print(transposta) QUE COISA MAIS LINDA DE DEUS!!! Imagem relacionada O nome dessa mágica é LIST COMPREHENTION. Vale a pena pesquisar sobre. Inclusive, temos esse belo vídeo do mestre da vida Edu Mendes:

quinta-feira, 30 de abril de 2015

MANIPULANDO LISTAS



Pois é, pessoal. Trabalhar com listas é fundamental para quem trabalha com manipulação de dados.

Então, hoje vamos a algumas "falcatruas" possíveis com listas:

Aqui temos a lista1 com os vilões e a lista2 com os heróis.
A lista3 é uma "lista de listas" contendo as listas 1 e 2. Muito legal, né?

>>> lista1 = ["Piccolo","Vegeta","Freeza","Cell","Majimboo"]
>>> lista1
['Piccolo', 'Vegeta', 'Freeza', 'Cell', 'Majimboo']
>>> lista2=["Kuririn","Yamcha","Tenshinhan","Gohan","Goku"]
>>> lista2
['Kuririn', 'Yamcha', 'Tenshinhan', 'Gohan', 'Goku']
>>> lista3=[lista1,lista2]
>>> lista3
[['Piccolo', 'Vegeta', 'Freeza', 'Cell', 'Majimboo'], ['Kuririn', 'Yamcha', 'Tenshinhan', 'Gohan', 'Goku']]

Aqui temos a lista1 com os vilões e a lista2 com os heróis.
lista3 é uma "lista de listas" contendo as listas 1 e 2. Muito legal, né?

Você quer ordenar as lista? Sim? Então vamos ordená-las por ordem alfabética:

>>> lista1.sort()
>>> lista2.sort()
>>> lista1
['Cell', 'Freeza', 'Majimboo', 'Piccolo', 'Vegeta']
>>> lista2
['Gohan', 'Goku', 'Kuririn', 'Tenshinhan', 'Yamcha']
>>> lista3
[['Cell', 'Freeza', 'Majimboo', 'Piccolo', 'Vegeta'], ['Gohan', 'Goku', 'Kuririn', 'Tenshinhan', 'Yamcha']]


Vamos agora imprimir cada elemento das listas:

>>> forin  lista1:    print(i)

Cell
Freeza
Majimboo
Piccolo
Vegeta
>>> for in lista2:    print(i)

Gohan
Goku
Kuririn
Tenshinhan
Yamcha
>>> for i in lista3:    print(i)

['Cell', 'Freeza', 'Majimboo', 'Piccolo', 'Vegeta']
['Gohan', 'Goku', 'Kuririn', 'Tenshinhan', 'Yamcha']

Vamos agora imprimir apenas o elemento [1] de cada lista:

>>> print(lista1[1])
Freeza
>>> print(lista2[1])
Goku
>>> print(lista3[1])
['Gohan', 'Goku', 'Kuririn', 'Tenshinhan', 'Yamcha']

Agora vamos incluir elementos:

>>> lista1.append("Tao Pai Pai")
>>> lista1
['Cell', 'Freeza', 'Majimboo', 'Piccolo', 'Vegeta', 'Tao Pai Pai']
>>> lista2.append("Mestre Kame")
>>> lista2
['Gohan', 'Goku', 'Kuririn', 'Tenshinhan', 'Yamcha', 'Mestre Kame']
>>> lista3.append(["Bulma","Chichi","Vovó Uranai","Lunch","Videl","Maron"])
>>> lista3

[['Cell', 'Freeza', 'Majimboo', 'Piccolo', 'Vegeta', 'Tao Pai Pai'], ['Gohan', 'Goku', 'Kuririn', 'Tenshinhan', 'Yamcha', 'Mestre Kame'], ['Bulma', 'Chichi', 'Vovó Uranai', 'Lunch', 'Videl', 'Maron']]

Note que foi inserida uma nova lista de mulheres em lista3, que é uma "lista de listas".


Agora vamos apagar um elemeto da lista:

>>> lista1.pop(3)
'Piccolo'
>>> lista1
['Cell', 'Freeza', 'Majimboo', 'Vegeta', 'Tao Pai Pai']
>>> lista2.pop(lista2.index("Yamcha"))
'Yamcha'
>>> lista2
['Gohan', 'Goku', 'Kuririn', 'Tenshinhan', 'Mestre Kame']
>>> lista3.pop(2[3])
>>> lista3[2].pop(lista3[2].index("Videl"))
'Videl'


- Nossa senhora! Fiquei tonto agora com essas falcatruas!!!

Calma, amigão! Vou explicar

>>> lista1.pop(3)
Excluí o elemento de índice 3 da lista1.
Note que o Python devolve o valor do elemento excluído. Caso não queira este retorno, utilize o remove em lugar do pop.

>>> lista2.pop(lista2.index("Yamcha"))
'Yamcha'
O comando lista2.index("Yamcha") me retorna o índice dentro da lista que contém o valor "Yamcha". Daí o retorno deste comando me dá o valor do indice que será excluído como lista3.pop.
**IMPORTANTE** Caso houverem dentro da lista dois elementos com o mesmo valor, apenas o primeiro será retornado com o index!

Agora vou criar uma lista doidona pra você perceber o poder da lista em Python.

>>> doidona=[1,23,"Android","Bom dia",("a","b","c"),["YuYu Hakusho","CDZ","DBZ","Giban"],lista2]
>>> doidona
[1, 23, 'Android', 'Bom dia', ('a', 'b', 'c'), ['YuYu Hakusho', 'CDZ', 'DBZ', 'Giban'], ['Gohan', 'Goku', 'Kuririn', 'Tenshinhan', 'Mestre Kame']]
>>> for i in doidona:    print(type(i))

<class 'int'>
<class 'int'>
<class 'str'>
<class 'str'>
<class 'tuple'>
<class 'list'>

<class 'list'>

Ficou feliz né? Cada elemento da lista é de um tipo!!! Espetacular. E dá pra 'enfiar' qualquer tipo de dados numa lista, incluindo uma própria lista! Não é demais?

Pois bem pessoal, Espero ter ajudado mais uma vez.

Não deixem de comentar. E se tiverem algum pedido, deixem aqui nos comentários também!

Até a próxima!

segunda-feira, 20 de abril de 2015

EXPLORANDO UM POUCO MAIS A MANIPULAÇÃO DE STRINGS

Oi pessoas.
Me desculpem pelo hiato, mas é que as provas chegaram aí, já viram, né?

Pois bem, enquanto eu não consigo chegar no Salão do Tempo pra estudar um ano inteiro em um dia, vou fazendo o possível pra manter o blog atualizado.


Então... que tal brincar mais um pouquinho com strings???

Já aprendemos a inverter a string utilizando o [::-1] e também aprendemos a inverter a string de hexa com a biblioteca binascii.
Agora ensinarei aqui a inverter a string hexa sem transformar os dados, ou seja, trabalharemos diretamente com strings o tempo todo.

Supondo que a string seja:
'4b494b4f48c394' 
Que traduzindo de HEX para ASCII significa "KIKOHÔ".
Vamos inverter para que o resultado seja:
'94c3484f4b494b'  ou seja "ÔHOKIK".

>>> a='4b494b4f48c394'
>>> b=''
>>> for i in range(len(a),0,-2):    b=b+a[i-2:i]
>>> b
'94c3484f4b494b'

Muito bom, né?

O que isso quer dizer?

Muito bem. O for todo mundo conhece né? Não?
Então aqui vai:

for i in range(100):    .......

Isso quer dizer que 'i' irá receber os números de 0 a 99, pois irá fazer 100 iterações.

for i in range (1,100,1):    ........

Isso quer dizer que 'i' irá receber valores de 1 a 100 com passos de 1 em 1.

for i in range (1,100,2):    ........

Isso quer dizer que 'i' irá receber os valores de 1 a 100 com passos de 2 em dois, ou seja: 1,3,5,7,...,97,99.

Então voltando ao exemplo:

for i in range(len(a),0,-2):    b=b+a[i-2:i]

len(a) é o tamanho da string. No nosso caso 4b494b4f48c394 tem 14 caracteres, então len(a) = 14, daí o range NESSE CASO é: range(14,0,-2), então i recebe valores de 14 a 0 com passos de -2 (2 decrescente).

Aí vemos as instruções: b=b+a[i-2:i]. 

Na primeira iteração b está vazio (''), mas receberá a concatenação da string b ('') e do fragmento de string a[i-2:i], como o valor de 'i' na primeira iteração é 14, então será a[14-2:14] ou a[12:14]='94'. Ao fim dessa iteração b='94'

Na primeira iteração b contém ('94'), mas receberá a concatenação da string b ('94') e do fragmento de string a[i-2:i], como o valor de 'i' na segunda iteração é 12, então será a[12-2:12] ou a[10:12]='c3'. Ao fim dessa iteração b='94c3'.
E aí vai até que o range chegue a 0, percorrendo toda a string em a.
Por hoje é só, pessoal!