Mostrando postagens com marcador programação. Mostrar todas as postagens
Mostrando postagens com marcador programação. 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:

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!

quarta-feira, 8 de abril de 2015

Introdução ao Python 3 - A Escolha

Estou muito contente em iniciar esse blog, pois tenho certeza que ajudarei muitas pessoas que, como eu, buscaram ajuda por aí e tiveram que "rebolar" pra achar uma resposta.

Já vou avisando que não sou um Super Sayajin no Python, mas meu poder de luta é quase oito mil.

Pois bem. A primeira opção que fiz ao entrar no mundo do Python foi escolher trabalhar com as versões 3.x, uma vez que todos usam as 2.x por N razões.
Entretanto, essa foi a principal razão de eu não cair pra esse lado. Pensei assim: "Serei um dos pioneiros a utilizar o Python 3.x então, quando ele se tornar popular, já serei pelo menos o Tenshinhan, quase chegando a ser o Guririn."
Darei então aqui algumas dicas começando por conversores de valores (a primeira m$%#@ que você via enfrentar no Python3).

Então!!! Aqui vamos nós!!