Arrumando as coisas para começar a trabalhar com Python#
O que você saberá se você ler todo este capítulo?#
🏆 Você irá testar logo de cara o seu primeiro algoritmo!
Python é legal, mas não é perfeito. Não seja fanboy/fangirl de linguagem de programação!
Muita gente em universidades e empresas usam Python porque é simples, rápido e tem uma comunidade grande.
Como configurar o seu computador para começar a trabalhar com Python (mais especificamente, com o PyCharm), e o que é o PyCharm e uma IDE.
Você irá testar diferentes funções/comandos em Python dentro do PyCharm.
Por que Python?#
Python é uma das linguagens de programação mais utilizadas pelas empresas atualmente, devido à sua simplicidade e facilidade de aprendizado por ser uma linguagem de alto nível. Além disso, a sua grande comunidade de desenvolvedores cria bibliotecas e frameworks para diversas finalidades, o que aumenta a sua versatilidade e funcionalidade. Ah, e empresas de diversos segmentos também usam Python para as mais diversas finalidades, desde análise de dados e inteligência artificial até a automação de tarefas e desenvolvimento web.
Linguagem de alto nível: é uma linguagem de programação que permite escrever códigos de forma mais próxima da linguagem humana.
Bibliotecas: é um conjunto de módulos ou arquivos que contêm funcionalidades prontas para serem usadas em programas de computador, permitindo aos desenvolvedores economizar tempo e esforço na criação de novas funcionalidades.
A primeira imagem que a humanidade gerou de um buraco negro também foi gerada por cientistas usando Python. Olha só:

Uma das empresas que mais utiliza Python é a Google, que a usa desde a análise de erros e testar coisas novas até a inteligência artificial. O Youtube (que também é da Google) também usa Python em grande parte de sua infraestrutura. Outra empresa que utiliza bastante Python é a NASA, que utiliza a linguagem para processamento de imagens, análise de dados e desenvolvimento de softwares de controle de missões espaciais.
O uso de Python em empresas também se estende ao desenvolvimento web, com a utilização de frameworks como o Django e Flask, que permitem a criação de aplicações web com rapidez e eficiência. Empresas como Instagram, Spotify, Dropbox e Reddit utilizam Python em suas aplicações web, devido à sua facilidade de desenvolvimento e escalabilidade.
Além disso, dentro do uso de inteligência artificial o Python é amplamente usado com bibliotecas como o NumPy, Pandas e Scikit-learn, que permitem a manipulação de grandes conjuntos de dados e a criação de modelos de machine learning com facilidade. É por isso que empresas como a Amazon, Netflix e Airbnb utilizam Python em seus processos de análise de dados e aprendizado de máquina (machine learning).
Por fim, Python também é utilizado em automação de tarefas e scripts, permitindo a criação de rotinas automatizadas para diversos fins, desde backups até análise de logs. Empresas de diversos segmentos utilizam Python para automatizar tarefas rotineiras e melhorar a eficiência de seus processos.
Nas universidades#
Nas universidades, o Python tem sido amplamente utilizado para ensinar conceitos básicos de programação, como variáveis, estruturas de controle de fluxo, funções e estruturas de dados (veremos esses itens em breve). Da mesma forma que as empresas usam Python, as universidades também o usam dentro das disciplinas de ciência de dados, inteligência artificial e machine learning.
O Python também é utilizado em outros setores como finanças, marketing e automação de processos. A sua facilidade de aprendizado e rapidez no desenvolvimento de soluções têm sido fatores determinantes para a sua escolha, além de possuir um vasto suporte da comunidade, permitindo a utilização de bibliotecas e módulos já desenvolvidos e testados por outros usuários.
Mas é claro: não é legal ser fanboy/fangirl de linguagem de programação e colocar o Python como a “melhor” linguagem de programação do Universo. Longe disso: existem várias outras como você pode ver neste ranking. Ela também possui algumas desvantagens como, por exemplo:
Desempenho inferior a linguagens de baixo nível, como C e C++, o que pode ser um problema em alguns tipos de aplicações muito específicas que exigem alta performance;
Falta de compatibilidade com versões anteriores, o que pode tornar a migração de versões um processo complexo em alguns casos;
Limitações em relação à criação de interfaces gráficas (como jogos), já que a maioria das bibliotecas disponíveis não são nativas do Python.
Instalando (ou não) o Python#
Você pode usar o Word para escrever textos, o PowerPoint para fazer apresentações, a Steam para comprar jogos para o computador e o Chrome para navegar na internet. Mas, o que você usaria para trabalhar com algoritmos? Para isso poderíamos usar as IDEs.
Uma IDE (Integrated Development Environment) é um ambiente de desenvolvimento integrado que reúne diversas ferramentas necessárias para a criação e edição de códigos de programação em um único lugar. Seria dentro da IDE que escreveríamos, testaríamos e analisaríamos o código.
O Python possui várias IDEs disponíveis como, por exemplo, o PyCharm, Visual Studio, Visual Studio Code, e Spyder. Para desenvolver algoritmos em Python também seria possível desenvolver códigos direto do navegador com soluções como o repl.it e Google Colab.
A recomendação é a de que você instale o PyCharm para fazer os seus algoritmos. Se você está interessado em seguir em frente com o PyCharm e gostaria de saber como instalá-lo, recomendo acessar este passo-a-passo que eu criei especificamente para isso.
A partir de agora eu assumirei que você já está com o PyCharm (ou alguma outra alternativa) já instalada no seu computador. Se tudo deu certo, você terá uma janela com essa carinha:

Começando com código: colocando a mão na massa#
Sejamos sinceros: o legal mesmo é colocar a mão na massa logo de cara, não é mesmo? O que acha de um algoritmo em Python que gera uma tabela de um campeonato de Counter-Strike? Veja o código abaixo:

# Lista de times
times = ['Astralis', 'Na`Vi', 'G2', 'Vitality', 'Liquid', 'FURIA']
# Lista de resultados [time1, time2, resultado_time1, resultado_time2]
resultados = [
['Astralis', 'G2', 16, 10],
['Na`Vi', 'Vitality', 16, 8],
['Liquid', 'FURIA', 16, 14],
['Astralis', 'Liquid', 16, 13],
['G2', 'FURIA', 16, 12],
['Vitality', 'Astralis', 16, 14],
['Na`Vi', 'Liquid', 16, 11],
['FURIA', 'Vitality', 16, 13],
['Astralis', 'Na`Vi', 16, 12],
['G2', 'Vitality', 16, 14],
['Liquid', 'Astralis', 16, 12],
['FURIA', 'Na`Vi', 16, 14],
]
# Dicionário para armazenar a pontuação de cada time
pontuacao = {time: {'pontos': 0, 'jogos': 0, 'vitorias': 0} for time in times}
# Loop para atualizar a pontuação de cada time
for jogo in resultados:
time1, time2, resultado1, resultado2 = jogo
if resultado1 > resultado2:
pontuacao[time1]['pontos'] += 3
pontuacao[time1]['vitorias'] += 1
elif resultado1 < resultado2:
pontuacao[time2]['pontos'] += 3
pontuacao[time2]['vitorias'] += 1
else:
pontuacao[time1]['pontos'] += 1
pontuacao[time2]['pontos'] += 1
pontuacao[time1]['jogos'] += 1
pontuacao[time2]['jogos'] += 1
# Classificar os times por pontos e exibir a tabela
classificacao = sorted(pontuacao.items(), key=lambda x: (-x[1]['pontos'], -x[1]['vitorias']))
print('Tabela de classificação:')
print('{:<15} {:<10} {:<10} {:<10}'.format('Time', 'Pontos', 'Vitórias', 'Jogos'))
for time, pontos in classificacao:
print('{:<15} {:<10} {:<10} {:<10}'.format(time, pontos['pontos'], pontos['vitorias'], pontos['jogos']))
Tabela de classificação:
Time Pontos Vitórias Jogos
Astralis 9 3 5
Na`Vi 6 2 4
G2 6 2 3
Liquid 6 2 4
FURIA 6 2 4
Vitality 3 1 4
Viu o resultado acima? Ele gerou uma tabela toda bonita contendo os times já ordenados pela pontuação. Isso poderia servir para qualquer outro campeonato: futebol, sinuca ou qualquer outra coisa que poderia entrar neste formato.
Quer testar isso? Volte lá no PyCharm e apague todo o conteúdo que está naquela aba main.py
. Este arquivo main.py
possui o seu código-fonte, e é isso que iremos substituir.
Código-fonte: É o arquivo que contém o código na sua forma original, antes de ser compilado ou interpretado, e é através dele que os desenvolvedores podem criar, editar e aprimorar os programas.
Você deverá ficar com algo assim:

Agora, vamos copiar e colar o código acima dentro desta tela. Você deve ficar com algo assim:

Agora é hora de rodar (executar) o código. Você pode fazer isso de algumas formas:
Apertar
Shift
eF10
no seu teclado;Clicando no botão de
Run
(triângulo verde no canto superior direito da tela, destacado abaixo);No menu superior, clicando em
Run > Run '$ARQUIVO'
(neste caso, seriaRun > Run 'main'
).

Com isso, o seu código deve executar e os resultados aparecerão na parte inferior do PyCharm. Veja a imagem abaixo:

Você também deve ter notado a mensagem final Process finished with exit code 0
. Isto significa que o código rodou sem problemas. Agora, o que aconteceria se você digitasse qualquer outra coisa no meio do arquivo? Por exemplo: na linha 24, troque o texto resultados
por abc
. Deve ficar assim:

Notou uma linha em ziguezague (ou uma “cobrinha”) embaixo do abc
? O PyCharm ajuda a detectar erros para te mostrar com antecedência. Se você passar o mouse em cima do abc
verá que aparecerá um texto com a mensagem Unresolved reference 'abc'
.
Isto, traduzindo para o português, significa Referência 'abc' não-resolvida
. Reescrevendo de forma mais clara: Você tá querendo usar um negócio chamado 'abc' que não existe em nenhum outro lugar no código. Tá certo isso?
. O PyCharm está avisando que vai dar erro isso aí. O que acontece se ignorarmos este erro e tentarmos rodar o código mesmo assim (seja clicando no triângulo verde, indo no menu Run
ou apertando Shift
+ F10
)? Olha só:

Parece confuso, mas não é. O Python é bem amigável quanto às mensagens de erro. Vamos traduzir por partes:
Traceback (most recent call last):
“Viu, esse aqui foi o último erro que achei e que fez o código parar de funcionar, ó:”File "$ARQUIVO", line $LINHA, in <module>
: “O erro aconteceu aqui ó, nesse $ARQUIVO (no nosso caso, nomain.py
) e nessa $LINHA (no nosso caso, na linha 24), entendeu?”for jogo in abc:
: “Tá com preguiça de abrir aquela linha 24 para ver o que tem lá? Não tem problema: a linha 24 tinha isso aqui ó.”NameError: name 'abc' is not defined
: “O erro que teve aqui foi um erro de nome. No caso, não achei em lugar nenhum alguém com o nome de ‘abc’. O que é isso? O que eu deveria fazer com isso? Me ajuda aí.”
Diferentes erros terão diferentes tratamentos. Ou seja, não será sempre que aparecerá um NameError
, mas as explicações farão sentido para você ao longo do caminho. Para te ajudar, também criei uma seção com os tratamentos mais comuns aos erros de código para você.
Arquivos do Python (.py) e o Python Console#
Você também poderá usar o PyCharm para usar o console do Python. Este console é bem útil para rodar de comandos e ver os resultados em tempo real. Além disso, o console é uma ferramenta de depuração (debug) muito útil, pois permite que o desenvolvedor teste comandos e veja imediatamente se eles estão funcionando como esperado.
Assim, imagine que o console do Python pode te ajudar por ser uma maneira fácil e rápida de testar ideias e verificar o funcionamento de funções e scripts. Agora, qual é a diferença entre usar aquele arquivo (o main.py
no exemplo anterior) e usar o console?
Enquanto que o arquivo .py permite que você salve o código em um arquivo e o execute posteriormente quantas vezes quiser, o console do Python executa o código em tempo real e apenas permite que você execute o código que foi digitado enquanto o console está aberto. Em outras palavras, o arquivo .py permite que você escreva seu código em um ambiente mais estruturado, salve-o e execute-o quantas vezes quiser, enquanto o console do Python é mais útil para testar pequenos trechos de código ou para interagir com o código em tempo real.
Fazendo uma comparação com o mundo real, podemos comparar o arquivo .py com uma receita de bolo escrita em um caderno de receitas. Você pode escrever a receita em um caderno, salvar e acessar novamente sempre que quiser fazer o bolo. Por outro lado, o console do Python seria como estar em uma cozinha, onde você pode testar pequenas partes da receita para ver como ficaria o sabor final do bolo, mas não seria apropriado para escrever e armazenar a receita completa.

Quer testar o Python Console? Digite o comando abaixo dentro do console e logo após os >>>
:
print("Alô alô, testando.")
Depois de digitar, aperte Enter
. Deverá aparecer a mensagem Alô alô, testando.
logo abaixo no console. Deve aparecer algo desse jeito:


A função print
é responsável por mostrar uma mensagem na tela. A forma de escrever é sempre a mesma: o texto print
, seguido pela abertura de parênteses e, dentro dos parênteses e circundados por aspas simples ou duplas, o texto que você quer mostrar. Os exemplos abaixo são permitidos:
print("Alô alô, testando.")
print('Alô alô, testando.')
Assim não seria uma boa prática de formatação/organização:
print ("Alô alô, testando.") # veja o espaço entre `print` e `(`
print( "Alô alô, testando." ) # veja o espaço antes e depois do fechamento das aspas
E isso aqui daria um erro, já que você começaria de um jeito (aspas simples) e terminaria de outro (aspas duplas):
print('Alô alô, testando.")
Quer testar mais exemplos? Digite os comandos abaixo, sempre apertando Enter
no final de cada comando. Fique tranquilo se alguns desses conceitos não estiverem muito claros: veremos com mais calma adiante.
print("Olá de novo!")
: exibe uma outra mensagem na tela. No caso, “Olá de novo!”.5 + 1
: soma cinco mais um e mostra o resultado (6
) na tela."Olá" + " " + "de novo!"
: concatena os textos (strings) “Olá” e “de novo!” com um espaço entre eles e exibe o resultado na tela.len("Python")
: retorna o comprimento (length, ou total de caracteres) da string “Python”.type(5)
: retorna o tipo de dado do número 5. Como 5 é um número inteiro (integer), apareceráint
na tela.type("Python")
: retorna o tipo de dado do valor “Python”. Como ele é um texto (string), aparecerástr
na tela.max([1, 7, 2, 3])
: retorna o maior número da lista [1, 7, 2, 3]. No caso,7
.min([1, 7, 2, 3])
: retorna o menor número da lista [1, 7, 2, 3]. No caso,1
.sum([1, 7, 2, 3])
: retorna a soma dos números da lista [1, 7, 2, 3]. No caso,13
.round(3.14159265359, 2)
: arredonda o número pi para 2 casas decimais. No caso,3.14
.bool(1)
: retornaTrue
, pois 1 representa o valorverdadeiro
em Python quando estamos tratando de operações binárias (isto é, verdadeiro/falso, ligado/desligado).bool(0)
: retornaFalse
, pois 0 representa o valorfalso
em Python.str(123)
: converte o número 123 para uma string. No caso, resultará em"123"
(observe as aspas que explicitam que trata-se de um texto, e não de um número).'Olá de novo!'.split()
: divide a string em uma lista de palavras toda vez que um espaço for encontrado. No caso, retornará['Olá', 'de', 'novo!']
."wellington".capitalize()
: retorna a string"Wellington"
. Observe que a primeira letra está em maiúscula.abs(-5)
: retorna o valor absoluto de -5. No caso,5
." São José dos Pinhais ".strip()
: remove os espaços em branco no início e no fim da string, mas vai ignorar os espaços entre as palavras. No caso, retornaráSão José dos Pinhais
."Olá de novo!".replace("novo", "volta")
: substitui a palavra"novo"
por"volta"
na string.list(range(10))
: cria uma lista de números inteiros de 0 até 10, mas sem considerar o 10. Ou seja:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
.
Neste livro você aprenderá a fazer algoritmos como aquele da tabela de classificação. Por outro lado, este livro não é um passo-a-passo somente: se assim fosse, você só seria capaz de replicar os passos que eu estaria lhe falando para executar.
Veja só: um profissional de TI recebe o seu salário para resolver problemas e não para apertar teclas no computador para gerar código porque, além de ter habilidades técnicas em sua área de atuação, ele também possui habilidades analíticas e de resolução de problemas que o capacitam a encontrar soluções eficazes e eficientes para os desafios que surgem no trabalho. Isso pode envolver a criação de novos algoritmos, adaptação de algoritmos existentes, integração de sistemas e outras atividades que vão além do simples seguimento de tutoriais de código.
Além disso, muitos dos desafios enfrentados na área de TI não têm soluções prontas e, portanto, exigem que o profissional utilize sua experiência e criatividade para encontrar soluções inovadoras e personalizadas para os problemas em questão. Isso significa que o profissional de TI deve ser capaz de analisar e entender os problemas, desenvolver hipóteses, testar soluções e avaliar resultados, muitas vezes em um ambiente de constante mudança e evolução.
Portanto, ainda que seguir tutoriais pode ser uma forma útil de aprender novas habilidades e conceitos na área de TI, um desenvolvedor pode ser valorizado principalmente por sua capacidade de resolver problemas de maneira eficaz e inovadora, usando suas habilidades técnicas, analíticas e de pensamento crítico. Por isso, é importante você entender um pouco mais sobre algoritmo antes de voltarmos ao Python. E é para isto que o próximo capítulo servirá. Vamos lá?
Referências bibliográficas#
MARTIN, R. C. Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall, 2009.
MCKINNEY, W. Python for data analysis: Data wrangling with Pandas, NumPy, and IPython. O’Reilly Media, 2012.
REITZ, K. et al. Requests: HTTP for Humans™. 2021. Disponível em: https://docs.python-requests.org/en/latest/. Acesso em: 01 mar. 2023.
REYNOLDS, J. 8 World-Class Software Companies That Use Python?. Disponível em: https://realpython.com/world-class-companies-using-python/. Acesso em: 03 mar. 2023.
RICHARDSON, L. et al. Beautiful Soup Documentation. 2021. Disponível em: https://www.crummy.com/software/BeautifulSoup/bs4/doc/. Acesso em: 01 mar. 2023.
RAYOME, A. Why Python is so popular with developers: 3 reasons the language has exploded. TechRepublic, 2015. Disponível em: https://www.techrepublic.com/article/why-python-is-so-popular-with-developers-3-reasons-the-language-has-exploded/. Acesso em: 03 mar. 2023.
THOMAS, D.; HUNT, A. The pragmatic programmer. Addison-Wesley Professional, 2019.
VAN ROSSUM, G. Computer Programming for Everybody. Disponível em: https://www.python.org/doc/essays/cp4e. Acesso em: 02 mar. 2023.