0% acharam este documento útil (0 voto)
33 visualizações22 páginas

Python Data Science - Primeiros Passos - Alura

Este documento é uma apostila introdutória sobre Python para Data Science, abordando desde conceitos básicos da linguagem até estruturas de controle e dados. Ele inclui explicações sobre comandos fundamentais, manipulação de variáveis e strings, além de exemplos práticos para facilitar o aprendizado. O objetivo é fornecer uma base sólida para iniciantes na programação com Python.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
33 visualizações22 páginas

Python Data Science - Primeiros Passos - Alura

Este documento é uma apostila introdutória sobre Python para Data Science, abordando desde conceitos básicos da linguagem até estruturas de controle e dados. Ele inclui explicações sobre comandos fundamentais, manipulação de variáveis e strings, além de exemplos práticos para facilitar o aprendizado. O objetivo é fornecer uma base sólida para iniciantes na programação com Python.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 22

PYTHON PARA DATA SCIENCE:

Primeiros Passos
SUMÁRIO

OLÁ, ESTUDANTE! 03
1 INTRODUÇÃO 04
1.1 Python 04
1.2 Google Colaboratoy 04
2 COMANDOS BÁSICOS 05
2.1 Comentários 05
2.2 print() 05
2.3 As variáveis 06
2.3.1 A criação 06
2.3.2 Tipos de variáveis 06
2.3.3 Operações com valores numéricos 07
2.4 Manipulação de strings 07
2.5 input() 09
2.5.1 Formatando a saída 10
2.5.1.1 Casas decimais 11
2.5.1.2 Caracteres especiais 11
3 ESTRUTURAS DE CONTROLE 13
3.1 Estruturas condicionais 13
3.1.1 Operadores em condicionais 14
3.1.2 Operador Ternário 14
3.2 Estruturas de repetição 15
3.2.1 Comandos relacionados aos laços 16
4 ESTRUTURA DE DADOS 17
4.1 Listas 17
4.1.1 Métodos com listas 18
4.2 Dicionários 19
4.2.1 Métodos com dicionários 20
CHEGAMOS AO FIM 22
OLÁ, ESTUDANTE!

Essa é a nossa apostila do curso introdução ao Python! Estamos empolgados


em apresentar este material de estudo, que inclui os resumos dos conteúdos
ensinados no nosso curso Python para Data Science, além de algumas novi-
dades extras.

Como você já sabe, Python é uma das linguagens mais populares e versáteis
para a área de Data Science e análise de dados. Nesta apostila, nós cobrimos
todos os aspectos fundamentais desta linguagem abordados no curso,
incluindo sua sintaxe, estruturas de controle e dados estruturados.

Fizemos um esforço para que você tenha tudo o que aprendeu em um único
documento - e adicionamos um pouco mais. Cada tópico é acompanhado de
exemplos claros e fáceis de seguir para que você possa consolidar seus con-
hecimentos.

O nosso objetivo é fornecer uma base sólida para você se aprofundar no


mundo da programação com Python e se tornar especialista em Data Science.
Nós acreditamos que esta apostila será uma ferramenta valiosa em sua jorna-
da de aprendizado e esperamos que você aproveite ao máximo esta oportuni-
dade.

Boa leitura!
● Python é usada em uma ampla gama
de aplicações, incluindo ciência de

1 INTRODUÇÃO dados, inteligência artificial,


desenvolvimento de jogos, automação
de tarefas, entre outros.
1.1 Python Em resumo, Python é uma
linguagem de programação que oferece
Python é uma linguagem de muitas vantagens para os programadores,
programação altamente versátil e incluindo a facilidade de aprendizado, a
acessível, tornando-a uma das escolhas versatilidade, a disponibilidade de recursos
mais populares para iniciantes e e bibliotecas, e a opção de ser
programadores experientes. É uma multiplataforma. Se você está procurando
linguagem de programação de alto nível, o por uma linguagem de programação para
que significa que ela permite que você se aprender, Python é uma excelente
concentre na solução do problema ao escolha.
invés de se preocupar com detalhes
técnicos de baixo nível. Além disso, o uso
de sintaxe clara e intuitiva, a semântica 1.2 Google Colaboratoy
simples e a facilidade de leitura do código
fazem com que Python seja fácil de O Google Colab é uma plataforma
aprender e de usar. poderosa e versátil que oferece aos
usuários uma maneira fácil e eficiente de
Outra vantagem de Python é a aprender e experimentar com Python.
quantidade de recursos e bibliotecas Além de ser uma ferramenta gratuita e fácil
disponíveis. Existem inúmeras bibliotecas de usar, o Google Colab também oferece
e pacotes prontos para uso, que permitem muitas vantagens para pessoas
que você adicione recursos avançados em programadoras que desejam aprender
seus projetos sem precisar escrever o Python.
código do zero. As bibliotecas mais
populares incluem NumPy para cálculo Uma das principais vantagens de
científico, Pandas para análise de dados, usar o Google Colab para aprender Python
Matplotlib para visualização de dados, é que você pode acessá-lo de qualquer
entre outras. lugar, desde que você tenha acesso à
Internet. Isso significa que você pode
Além disso, Python é uma linguagem aproveitar seu tempo livre para estudar,
multiplataforma, o que significa que o mesmo quando estiver fora de casa ou do
código escrito em Python pode ser escritório. Além disso, como o Google
executado em diversos sistemas Colab funciona diretamente no navegador,
operacionais, incluindo Windows, Mac e você não precisa se preocupar com a
Linux. Isso é uma vantagem para os instalação de software adicional no seu
desenvolvedores, pois eles não precisam computador.
se preocupar com a compatibilidade de
sistemas ao escrever seu código. Em resumo, o Google Colab é uma
plataforma excelente para aqueles que
Algumas curiosidades sobre Python desejam aprender Python, oferecendo
incluem: facilidade de acesso, colaboração em
tempo real, armazenamento seguro e
● Python foi criada por Guido van recursos avançados.
Rossum em 1989, mas seu uso só se
tornou amplo a partir dos anos 2000. Para acessar o Google Colab e fazer
● Python é uma linguagem dinâmica, o os seus projetos, você pode acessar esse
que significa que ela permite a link. Para que você consiga usá-lo é
alteração do tipo de variáveis durante necessário ter uma conta Gmail, pois todo
a execução do código. notebook ficará armazenado no Google
Drive.

4
de várias linhas.
'''

2 COMANDOS Enquanto o texto estiver dentro das


BÁSICOS aspas, ele será ignorado durante a
execução do código, seja ele uma linha de
código ou um texto qualquer.
Os comandos básicos em Python
variam de acordo com o tipo de variável Durante esse resumo, você verá
manipulada. Existem operações possíveis vários comentários nos códigos,
com valores numéricos e também descrevendo o código ou mostrando a
manipulações possíveis para strings saída de uma execução.
(valores textuais). Dentre os comandos
básicos gerais podemos citar o print() e o
input(), que conseguimos utilizar com as
2.2 print()
variáveis. A função print(), imprimir em inglês,
tem por finalidade mostrar uma frase ou
2.1 Comentários dados definidos por quem constrói o
código. Sua sintaxe é simples e fácil de
Comentários são úteis quando entender.
precisamos descrever alguma etapa,
função ou estrutura dentro do próprio print(argumentos)
código. Essa descrição precisa ser dada
como uma anotação e, por isso, não pode
ser considerada um código para ser Os argumentos são os valores que
interpretada dentro do ambiente. desejamos imprimir na saída. Pode ser um
texto, um número, entre outros valores. Os
Temos dois tipos de comentários em textos podem ser escritos usando aspas
Python: comentários de uma linha e simples (') ou duplas ("), como mostrado
comentários de várias linhas. abaixo:

Comentários de uma linha são feitos # usando aspas simples


adicionando um símbolo de hashtag (#) no print('Olá mundo!')
início de uma linha de código. Tudo o que
vier depois do símbolo # em uma linha será
considerado um comentário: # usando aspas duplas
print("Olá mundo!")
# Esse é um comentário de uma
linha Com isso, conseguimos imprimir um
print(10) # Podemos colocar texto ou um dado numérico através dessa
função.
outro comentário em uma linha
após um código Podemos imprimir também vários
tipos de valores no print, necessitando
Já os comentários de várias linhas apenas separar os dados com vírgulas:
são feitos usando um conjunto de aspas
triplas: ''' ou """. Tudo o que estiver print('Estamos','no','capítulo',
entre as aspas triplas será considerado um 2)
comentário, mesmo que seja em várias ## Saída: Estamos no capítulo 2
linhas. Exemplo:

'''
Esse é um comentário

5
para variáveis podem ser encontradas na
2.3 As variáveis documentação.

2.3.1 A criação Além disso, é recomendável que os


nomes de variáveis sejam escritos com
As variáveis são um componente letras minúsculas e separados pelo
importante de qualquer linguagem de caractere _ para facilitar a leitura e
programação, pois permitem armazenar e manutenção do código.
manipular dados. Em Python, não é
necessário definir o tipo de uma variável 2.3.2 Tipos de variáveis
antes de atribuir um valor a ela, pois o tipo
da variável é determinado Em Python, existem vários tipos de
automaticamente pelo valor atribuído. Isso variáveis, incluindo inteiros, pontos
é conhecido como tipagem dinâmica. flutuantes, strings e booleanos:
Para criar uma variável precisamos ● Inteiros (int): números inteiros, como
atribuir um valor à ela. Para isso, -1, 0, 1, 203, etc;
precisamos dar nome à variável, o ● Ponto flutuante (float): números de
operador de atribuição (=) e por fim, o valor ponto flutuante, como 10.0, 0.5, -
que desejamos atribuir como mostrado na 2.45, etc;
sintaxe abaixo: ● Strings (str): sequências imutáveis
de caracteres, como "olá mundo". As
nome_da_variável = valor strings são denotadas por aspas
simples ou duplas; e
Assim, conseguimos definir ● Booleanos (bool): valores lógicos
quaisquer valores a variáveis. Além disso, verdadeiro ou falso, representam o
também podemos trocar o valor de uma True ou False.
variável a qualquer momento, por outro
dado. Cada tipo de variável tem seus
próprios métodos e propriedades
Existem algumas regras que devem específicas que podem ser usados para
ser seguidas na criação do nome de uma manipular e trabalhar com seus valores.
variável.
Podemos criar uma variável de cada
● O nome da variável não pode começar tipo, seguindo a regra de atribuição:
com um número. Deve começar com
uma letra ou o caractere _. Exemplos # inteiro
do que não fazer: 10_notas, inteiro = 10
2_nomes_casa, etc.;
● Não pode ser usado espaços em
# ponto flutuante (float)
branco no nome da variável. Exemplos
do que não fazer: Nome escola, notas ponto_flutuante = 35.82
estudantes, etc.
● Não é permitido serem usados nomes # String
de funções ou palavras-chave do string = 'Brasil'
Python. Exemplos do que não fazer:
print, type, True, etc.
# Booleano
● Não podemos usar caracteres
especiais, exceto o subtraço (“_”). booleano = False
Exemplos do que não fazer: nota-1,
nota+usada, contagem&soma. Podemos identificar o tipo de uma
variável utilizando a função type(),
Outras especificações como a seguindo a sintaxe:
descrição da lista de funções e palavras-
chave das regras de criação de nomes

6
type(variavel) ● Função round: retorna o número
arredondado com uma precisão
definida n casas decimais após o
Como exemplo, é possível encontrar ponto decimal. Se não especificarmos
a definição de todos os tipos de variáveis as casas, será retornado o inteiro mais
que criamos. próximo do ponto flutuante.
○ Sintaxe: round(variavel,
print(type(inteiro)) numero_de_casas)
print(type(ponto_flutuante)) ○ Exemplo:
print(type(string))
print(type(booleano)) round(14.3213,2)
''' Saída: ## Saída
<class 'int'> # 14.32
<class 'float'>
<class 'str'> ● Função pow: retorna a potenciação de
<class 'bool'> uma base por seu exponente,
funciona do mesmo modo que o
'''
operador **.
○ Sintaxe: pow(base, expoente)
2.3.3 Operações com ○ Exemplo:

valores numéricos pow(3, 2)


## Saída
Com os valores numéricos em
Python podemos realizar operações # 9
aritméticas, mas para isso é necessário
fazer o uso dos operadores aritméticos.
Abaixo, uma tabela descrevendo a função 2.4 Manipulação de
dos operadores e sua sintaxe de uso, strings
sendo a e b variáveis numéricas:
As strings são usadas para
Descrição Operação armazenar valores de texto e podem ser
Soma a+b criadas colocando aspas simples (') ou
Subtração a-b aspas duplas ("). Essas variáveis são
Multiplicação a*b dadas por uma sequência de caracteres
Divisão com resultado real a/b podendo ser números, letras e até
símbolos. Como no exemplo:
Divisão com resultado inteiro a//b
Potência a**b
string_1 = 'isso é uma string'
Resto de divisão (Módulo) a%b
string_2 = "isso também é uma
Além deles, existem também string"
funções que podem ser aplicadas a valores
numéricos para executar outros cálculos: Assim como nas variáveis
numéricas, é possível manipular as strings
● Função abs: retorna o valor absoluto a partir de operações, funções e até
da variável, ou seja, seu valor positivo. métodos. Por serem imutáveis, sua
○ Sintaxe: abs(variavel) manipulação resulta em cópias, ou seja,
○ Exemplo: são criadas novas strings a partir de uma
original que foi manipulada.
abs(-13)
## Saída Começando por operações, é
possível utilizar os operadores de adição
# 13
(+) e multiplicação (*) para trabalhar e criar

7
novas strings. O operador de soma, É possível trabalhar com diversos
permite unir duas ou mais strings e gerar métodos em strings. Métodos são funções
uma string única. Exemplo: que são associadas a objetos em Python.
Eles são usados para, de maneira fácil e
ola = 'Olá ' consistente, realizar ações ou operações
mundo = 'mundo!!' em um objeto e para obter informações
sobre o objeto. Por essa razão, os métodos
frase = ola+mundo
são uma parte importante da programação
print(frase) em Python.

## Saída: Olá mundo!! Métodos podem ser executados ao


definirmos um objeto seguindo a seguinte
estrutura:
Já o operador de multiplicação vai
repetir a string em uma quantidade de
objeto.metodo()
vezes igual à especificada. Para usar esse
operador colocamos a string, depois o
operador * e o número de vezes que Existem também os atributos que
desejamos a repetição. Vamos escrever a são declarados da mesma forma que os
palavra “mano” repetindo a letra “o” por 5 métodos, no entanto, não necessitam dos
vezes. (). É preciso verificar a documentação de
cada caso.
parte_1 = 'man'
Agora vamos verificar alguns
parte_2 = 'o' * 5 métodos com strings. Considerando que
palavra = parte_1 + parte_2 “string” é o seguinte texto:
print(palavra)
string = 'o rato roeu a roupa do
## Saída: manooooo rei de Roma'

Agora vamos falar de funções que Vejamos alguns métodos que


podem ser úteis na manipulação de conseguimos utilizar com qualquer variável
strings, como a len() e str(). do tipo str:

A função len() retorna o tamanho ● string.upper(): converte uma string


da string, ou seja, a quantidade de para maiúsculas.
caracteres que ela tem. ○ Saída: 'O RATO ROEU A ROUPA
DO REI DE ROMA'
frase = 'o rato roeu a roupa do ● string.lower(): converte uma string
rei de Roma' para minúsculas.
print(len(frase)) ○ Saída: 'o rato roeu a roupa
do rei de roma'
● string.capitalize(): coloca a
## Saída: 34 primeira letra de uma string em
maiúscula e as restantes em
Já a função str() retorna a minúsculas.
representação de uma string para uma ○ Saída: 'O rato roeu a roupa
entrada. do rei de roma'
● string.replace(antigo_valor,
ano = str(2023) novo_valor): retorna uma cópia da
ano string com a substituição das
## Saída: '2023' ocorrências. Exemplo:
string.replace('r', 'T').

8
○ Saída: 'o Tato Toeu a Toupa
do Tei de Roma'
2.5 input()
● string.find(dado): retorna o índice A função input() permite a quem
da primeira ocorrência de um texto em programa receber dados da pessoa
na string. Exemplo, vamos encontrar o usuária. É usado para ler e retornar uma
local da primeira aparição de 't' com, entrada digitada pelo usuário como string.
string.find('t'). A sintaxe da função input é a seguinte:
○ Saída: 4
● string.strip(): retorna uma cópia
input('string opcional')
da string original sem espaços
desnecessários no início e no final.
Com o texto, ' Olá! ', podemos A string opcional é exibida para o
aplicar o strip e obteremos a seguinte usuário na tela antes da entrada de dados.
saída: É uma boa prática incluir ela para orientar
○ Saída: 'Olá!' o usuário sobre o que ele deve digitar.
● string.title(): retorna uma cópia Como exemplo, podemos coletar um dado
da string original com a primeira letra de texto e mostrá-lo ao usuário com print.
de cada palavra em maiúsculas.
○ Saída: 'O Rato Roeu A Roupa nome = input('Digite seu nome:
Do Rei De Roma' ')
● string.count(string): retorna o print('Seu nome é:', nome)
número de vezes que um determinado
valor aparece na string original.
## Saída:
Exemplo: string.count('r').
○ Saída: 4 #Digite seu nome: Mirla
● string.isupper(): retorna True se #Seu nome é: Mirla
todas as letras na string original
estiverem em maiúsculas. A variável nome é uma string, pois a
○ Saída: False função input apenas retorna strings. Para
● string.islower(): retorna True se receber outros valores é necessário fazer
todas as letras na string original a conversão de valores com as funções de
estiverem em minúsculas. conversão:
○ Saída: False
● int(dado): converte o dado para o
Lembrando que todos esses tipo inteiro.
métodos retornam novos valores, não ● float(dado): converte o dado para o
alteram a string original. Para ser feita a tipo ponto flutuante (float).
alteração é preciso atribuir o resultado do ● str(dado): converte o dado para o
método na mesma string. Por exemplo: tipo string.
● bool(dado): converte o dado para o
string = 'o rato roeu a roupa do tipo booleano.
rei de Roma'
Desse modo, podemos receber os
print(string)
dados em strings e transformá-los para o
## 1° Saída: o rato roeu a roupa tipo de dado que precisamos. Como
do rei de Roma exemplo, vamos construir um algoritmo
somador:
string = string.capitalize()
print(string) # Nesse código vamos somar dois
## 2° Saída: O rato roeu a roupa números inteiros
do rei de roma # A função int vai converter a
saída de input para um valor
inteiro

9
num_1 = int(input('Digite o caractere %c
primeiro número: '))
A sintaxe consiste na adição no
num_2 = int(input('Digite o operador ao ponto desejado do texto.
segundo número: ')) Finalizada a escrita do texto que se deseja
soma = num_1 + num_2 exibir, o símbolo % é adicionado, com a
especificação da variável entre
print('Resultado da soma:',soma) parênteses. Exemplo:

nome_aluno = 'Fabricio Daniel'


## Saída:
print('Nome do aluno: %s'
# Digite o primeiro número: 2
%(nome_aluno))
# Digite o segundo número: 3
## Saída: Nome do aluno:
# Resultado da soma: 5
Fabricio Daniel

O mesmo conseguimos fazer para as


demais funções de conversão. Caso tenha mais de uma variável,
devemos ordená-las conforme o
surgimento delas no texto e separá-las por
2.5.1 Formatando a saída vírgula.
Conseguimos visualizar o resultado
nome_aluno = 'Fabricio Daniel'
de variáveis dentro de strings, bem como
imprimir o texto final em um print. Existem idade_aluno = 15
várias maneiras de formatar os dados media_aluno = 8.45
mostrados dentro de um print, entre elas print('Nome do aluno é %s, ele
a formatação f-string, usando o operador tem %d anos e sua média é %f.'
de formatação %, ou com método format. %(nome_aluno, idade_aluno,
Para utilizar a formatação f-string media_aluno))
(ou formatação de string), colocamos um f ## Saída: Nome do aluno é
antes da criação da string e as variáveis Fabricio Daniel, ele tem 15 anos
entre chaves {}. Exemplo: e sua média é 8.450000.

nome = "Ana Maria" Os operadores de formatação de


idade = 17 strings com % não funcionam diretamente
print(f"O nome da aluna é {nome} com valores booleanos. Uma maneira de
e sua idade é {idade} anos.") lidar com isso é convertendo o valor
## Saída: O nome da aluna é Ana booleano para uma string antes de usá-lo
na formatação com a função str().
Maria e sua idade é 17 anos.

O operador de formatação permite


a inserção de variáveis em pontos É possível também usar o método
específicos na string com o operador %. Ele format() para fazer a formatação de
precisa ser acompanhado de uma palavra- strings. Ele é mais flexível e permite passar
chave para cada tipo de variável que se as variáveis diretamente dentro da string,
deseja adicionar. Seguindo a tabela sem a necessidade do operador %. Pelo
abaixo: contrário, os marcadores são apenas as
{}. Exemplo:
Tipo de variável Palavra-chave
string %s nome_aluno = 'Fabricio Daniel'
inteiro %d idade_aluno = 15
float %f

10
media_aluno = 8.45 decimais
print('Nome do aluno é {}, ele {:.2f}'.format(ponto_flutuante))
tem {} anos e sua média é {}.'
.format(nome_aluno, idade_aluno, ## Saída:
media_aluno)) # Limitando as casas decimais
23.46
## Saída: Nome do aluno é
Fabricio Daniel, ele tem 15 anos 2.5.1.2 Caracteres especiais
e sua média é 8.45.
Caracteres especiais são usados
para representar ações especiais ou
2.5.1.1 Casas decimais caracteres que não podem ser digitados
diretamente, como o Enter e a tabulação.
Quando trabalhamos com pontos
flutuantes (float), podemos determinar a ● '\n' é o caractere de nova linha,
quantidade de casas decimais após a usado para pular uma linha no texto
vírgula em todas as formatações de saída (função do Enter). Exemplo:
de texto.

Com a formatação f-string, usamos a print("Precisamos de dedicação


sintaxe :.xf após especificar a variável, e paciência,\nPara ver o fruto
sendo x o número de casas decimais amadurecer.")
desejadas:
## Saída:
ponto_flutuante = 23.458012 # Precisamos de dedicação e
print(f'Limitando as casas paciência,
decimais {ponto_flutuante:.2f}') # Para ver o fruto amadurecer.

## Saída: ● '\t' é o caractere de tabulação,


# Limitando as casas decimais usado para adicionar um espaço de
23.46 tabulação no texto. Exemplo:

Já com a formação do operador %, a print('Quantidade\tQualidade\n


sintaxe é %.xf: 5 amostras\tAlta\n3
amostras\tBaixa')
ponto_flutuante = 23.458012
print('Limitando as casas ## Saída:
decimais # Quantidade Qualidade
%.3f'%(ponto_flutuante)) # 5 amostras Alta
# 3 amostras Baixa
## Saída:
# Limitando as casas decimais ● '\\' é usado para imprimir uma única
23.458 barra invertida. Caso não seja usada a
dupla barra invertida, o código poderá
Por fim, com o método format(), a resultar em erro ou em um resultado
sintaxe para limitar as casas é {:.xf}: inesperado, pois o Python considera a
\ um chamado para um caractere
especial. Para garantir que não
ponto_flutuante = 23.458012
ocorram erros, usamos esta sintaxe.
print('Limitando as casas Exemplo:

11
print("Caminho do arquivo:
C:\\arquivos\\documento.csv")

## Saída:
# Caminho do arquivo:
C:\arquivos\documento.csv

● "\"" é usado para imprimir aspas


duplas quando estamos trabalhando
com uma string criada a partir de
aspas duplas ". Caso seja uma string
criada por aspas simples ', isso não é
necessário. Um exemplo:

print("Ouvi uma vez \"Os


frutos do conhecimento são os
mais doces e duradouros de
todos.\"")

## Saída:
# Ouvi uma vez "Os frutos do
conhecimento são os mais doces
e duradouros de todos."

● '\'' é usado para imprimir aspas


simples quando estamos trabalhando
com uma string criada a partir de
aspas simples '. Caso seja uma string
criada por aspas duplas ", isso não é
necessário. Exemplo:

print('Minha professora uma


vez disse: \'Estudar é a chave
do sucesso.\' ')

## Saída:
# Minha professora uma vez
disse: 'Estudar é a chave do
sucesso.'

12
verdadeira (False). A sintaxe para usar o
else é:

3 ESTRUTURAS if condição:
# código caso seja verdade
DE CONTROLE else:
# código caso seja falso
Entre as estruturas de controle estão
as estruturas condicionais e as estruturas
Podemos montar um exemplo que
de repetição. identifica se um dado número é maior ou
menor que 5:
3.1 Estruturas
condicionais num = int(input('Digite um
número: '))
Nas estruturas condicionais temos o if num>5:
if, o else e o elif. print('O número é maior que
O if é uma palavra-chave em 5')
Python que significa “se”. Ele é usado para else:
formar uma estrutura condicional, que print('O número é menor que
permite que você verifique se uma 5')
determinada condição é verdadeira ou
falsa e, em seguida, executa um bloco de
## Saída:
código específico, se a verificação for
verdadeira. A sintaxe para usar o if é: # Digite um número: 3
# O número é menor que 5
if condição:
# faça algo Por fim, temos o elif, uma palavra-
chave em Python que significa "senão, se"
e pode ser considerado uma união do else
Podemos montar um exemplo que
com o if. Ela é usada em conjunto com a
identifica se um dado número é maior que
palavra-chave if para formar uma
5:
estrutura condicional encadeada. Sua
sintaxe é dada pela seguinte estrutura:
num = int(input('Digite um
número: ')) if condição1:
if num>5: # faça algo
print('O número é maior que elif condição2:
5') # faça outra coisa
elif condição3:
## Saída: # faça mais alguma coisa
# Digite um número: 8
# O número é maior que 5 O elif permite encadear condições.
Se a primeira condição for avaliada como
Já o else é uma estrutura opcional False, o interpretador Python avaliará a
usada em conjunto com o if para formar próxima condição no elif, e assim por
uma estrutura condicional. O else é uma diante. Isso continuará até que uma
palavra-chave para “senão” e é executado condição seja avaliada como True, ou
quando a condição especificada na nenhuma das condições sejam
estrutura condicional anterior não for verdadeiras e sejam ignorados os blocos
de código.

13
Um exemplo de código com elif é a ● Diferente de (!=): verifica se duas
estrutura para verificar, dados dois expressões são diferentes.
números, qual é o maior entre eles ou se
ambos são iguais: Estes operadores retornam um valor
booleano (True ou False) baseado na
# Coletar os números comparação entre os valores ou
expressões.
num1 = float(input('Digite o 1°
número: ')) Os operadores lógicos são
num2 = float(input('Digite o 2° símbolos utilizados para realizar
número: ')) operações lógicas, entre valores, podendo
retornar True ou False. Os operadores
lógicos são: and, or e not. De modo que,
# Comparamos ambos os números e
descobrimos qual é o maior ● and retorna verdadeiro se ambas as
if num1 > num2: expressões lógicas forem verdadeiras;
print(f'O primeiro número é ● or retorna verdadeiro se pelo menos
maior: {num1}') uma das expressões lógicas for
verdadeira; e
elif num2 > num1:
● not inverte o valor lógico da
print(f'O segundo número é expressão, ou seja, se a expressão
maior: {num2}') era True, ele retorna False, e vice-
else: # Caso os números sejam versa.
iguais
print('Os dois números são 3.1.2 Operador Ternário
iguais.')
Podemos compactar o resultado de
uma condição if-else em uma única linha.
3.1.1 Operadores em É uma alternativa útil para codificação mais
simples e clara, especialmente quando se
condicionais trata de uma condição simples. A sintaxe
do operador ternário é a seguinte:
Para formar uma expressão lógica
podemos fazer o uso de operadores
valor_caso_verdade if condição
relacionais e operadores lógicos.
else valor_caso_falso
Os operadores relacionais são
símbolos utilizados com objetivo de Seu funcionamento se dá de modo
comparar valores ou expressões e verificar que a condição é avaliada e, se for
a relação entre eles. Vejamos alguns verdadeira, o valor_caso_verdade é
deles: retornado, caso contrário, o
valor_caso_falso é retornado. Em
● Maior que (>): verifica se a primeira
outras palavras, é uma forma de atribuir
expressão é maior que a segunda.
valores a variáveis com base em uma
● Menor que (<): verifica se a primeira
condição.
expressão é menor que a segunda.
● Maior ou igual a (>=): verifica se a Um exemplo simples é a verificação
primeira expressão é maior ou igual à se um número é positivo ou negativo.
segunda.
● Menor ou igual a (<=): verifica se a num = -5
primeira expressão é menor ou igual à
segunda. resultado = 'positivo' if num >=
● Igual a (==): verifica se duas 0 else 'negativo'
expressões são iguais. print(resultado)

14
## Saída: # a cada iteração
# negativo contadora += 1
print(contadora)
Entendendo o código: o operador
ternário testa a condição num >= 0, se for ## Saída:
verdadeira, o valor de 'positivo' é # 1
atribuído a resultado, caso contrário, o # 2
valor de 'negativo' é atribuído a
# 3
resultado.
# 4
3.2 Estruturas de # 5
# 6
repetição # 7
# 8
Nas estruturas de repetição temos o
while e o for. # 9
# 10
O while é uma palavra-chave em
Python que significa “enquanto”. Ela O incremento de contadora é dado
permite executar um bloco de código
por um operador de atribuição +=. Em
repetidamente enquanto uma determinada
Python temos vários tipos de operadores
condição é verdadeira. Sua sintaxe é dada
de atribuição como pode ser observado na
da seguinte forma:
tabela abaixo:
while condição: Sintaxe do
Descrição
# bloco de código operador
a = b Atribui o valor de b em a
O bloco de código dentro do laço a += b Soma o valor de b na
while será executado repetidamente variável a
enquanto a condição for avaliada como a -= b Subtrai o valor de b na
True. Quando a condição for avaliada variável a
como False, o laço será interrompido e o a *= b Multiplica o valor de b por a
programa continuará a executar o código a /= b Divide o valor de b por a
depois do laço.
a //= b Realiza divisão inteira da
variável b por a
Um exemplo muito comum de uso do
while é construindo um contador, um a %= b O resto da divisão de b por
projeto que permite uma variável numérica a é atribuído à a
ser incrementada 1 a 1, como uma Enquanto isso, o laço for permite
contagem. Vamos fazer o contador de 1 a
iterar sobre um conjunto de elementos. A
10:
sua sintaxe é dada da seguinte forma:
# inicializamos a variável
for elemento in conjunto:
contadora em 1
# código a ser executado para
# essa variável será
cada elemento
incrementada
contadora = 0
O for é uma palavra chave para
# o while irá repetir enquanto a “por” e podemos entender sua estrutura
# contadora não for maior que 10 como “por cada elemento em um dado
while contadora < 10: conjunto faça…”. Isso porque ele itera
# incrementamos seu valor em 1 sobre cada elemento do conjunto

15
especificado e executa o bloco de código
dentro do laço para cada elemento.
3.2.1 Comandos
Quando o laço chega ao final do
relacionados aos laços
conjunto, ele é interrompido e o programa Conseguimos controlar o fluxo de
continua a execução após o laço. execuções dentro do bloco de código dos
laços while e for através dos comandos
Podemos também construir uma
de controle continue e break.
contadora com for, mas para isso
precisamos de um conjunto iterável que O continue interrompe a iteração
possa ser utilizado nele. Pensando nisso, atual do laço e salta para a próxima
utilizaremos a função range. iteração, ou seja, retorna ao início do
código. Já o break vai interromper a
A função range é capaz de gerar
execução do laço completamente, saindo
uma sequência de números inteiros. A sua
do bloco de código.
sintaxe é dada por:

range(inicio, fim, passo)

Segundo a documentação, ao
range() gera uma sequência de números
inteiros a partir do valor do parâmetro
inicio até o valor do parâmetro fim, de
acordo com o valor do parâmetro passo.
Se inicio não for especificado, o valor
padrão é 0. Se passo não for especificado,
o valor padrão é 1.

# Não é preciso inicializar uma


# variável
# o for percorre todo o conjunto
# de números 1 a 10
for contador in range(1, 11):
print(contador)

## Saída:
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10

16
É possível selecionar
separadamente os elementos de uma lista
colocando seus índices.
4 ESTRUTURA lista = ['Daniel',2310.30,
DE DADOS 24,True]
# com índices positivos
print(lista[0],lista[1],lista[2]
4.1 Listas ,lista[3])
Listas são sequências mutáveis, # com índices negativos
normalmente usadas para armazenar print(lista[-4],lista[-
coleções de itens. 3],lista[-2],lista[-1])
Podemos agrupar um conjunto de
dados com as listas de maneira ordenada. ## Saída:
Para criar uma lista com valores, são # Daniel 2310.3 24 True
colocados os dados entre colchetes ([]) # Daniel 2310.3 24 True
separados por vírgulas.

Elas também podem armazenar É possível usar as estruturas de


qualquer tipo de item, incluindo números, repetição para acessar e ler os valores de
strings, objetos, outras listas e também uma lista. A forma mais comum de se fazer
outras estruturas de dados. Todos esses isso é utilizando o laço for:
tipos de dados podem ser armazenados
juntos em uma mesma lista, pois ela não lista = ['Daniel',2310.30,
se limita a armazenar um único tipo de 24,True]
dado. for elemento in lista:
Um exemplo de criação de lista é print(elemento)
construção de um conjunto de dados
cadastrais: ## Saída:
# Daniel
# lista com nome, salário, idade # 2310.3
# e situação de empregabilidade # 24
lista = ['Daniel',2310.30, # True
24,True]
print(lista) Podemos também usar o laço while,
através de um contador:
## Saída:
# ['Daniel', 2310.3, 24, True] lista = ['Daniel',2310.30,
24,True]
Cada elemento da lista tem um contadora = 0
índice que indica sua posição na lista. Os while contadora < 4:
índices começam em 0 e vão até o print(lista[contadora])
tamanho da lista menos 1. contadora += 1
No exemplo anterior, temos 4
elementos com índices variando de 0 a 3, ## Saída:
ordenadamente. Ou ordenados de -4 a - # Daniel
1, visto que os índices podem ser # 2310.3
negativos também. # 24

17
# True 4.1.1 Métodos com listas
É possível observar que o bloco de Listas oferecem muitas funções e
código para ler uma lista com while é métodos úteis para manipular os itens
muito maior que com for. Por isso, quando armazenados, como adicionar, remover,
trabalhamos com estruturas de dados, é classificar e pesquisar elementos.
preferível utilizar o laço for. Então vamos verificar alguns
Além disso, podemos usar as métodos com listas. Considerando que
mesmas funções e métodos utilizados em “lista” é o seguinte conjunto de dados:
variáveis únicas como strings, inteiros,
floats, etc nos elementos da lista. Mas é lista = ['Osman Presley', 13,
preciso que o elemento manipulado seja 8.5, 8.5]
do tipo de variável que permite a aplicação
das funções e métodos. Vejamos alguns métodos que
conseguimos utilizar com qualquer variável
Por exemplo, é possível deixar o
do tipo list (lista):
elemento 'Daniel', uma string, em
maiúsculas com o método upper(): ● append: adiciona um elemento ao final
da lista.
lista = ['Daniel',2310.30, ○ Exemplo: lista.append(4.5), a
24,True] lista agora é ['Osman Presley',
13, 8.5, 8.5, 4.5].
print(lista[0].upper()) ● clear: remove todos os elementos da
lista.
○ Exemplo: lista.clear(), a lista
## Saída:
agora é [].
# DANIEL ● copy: faz uma cópia da lista.
○ Exemplo: nova_lista =
Conseguimos também substituir lista.copy(), nova_lista
elementos, além de manipulá-los. Para agora é ['Osman Presley', 13,
isso, especificamos o índice do elemento a 8.5, 8.5, 4.5] e é uma cópia
ser substituído e atribuímos o novo dado independente de lista.
com o operador de atribuição. Podemos ● count: conta quantas vezes um
então substituir a string 'Daniel' por sua elemento aparece na lista.
correspondente em maiúscula ('DANIEL'): ○ Exemplo: lista.count(8.5),
retorna 2.
lista = ['Daniel',2310.30, ● extend: adiciona os elementos de
24,True] uma lista ao final da lista atual.
print(lista) ○ Exemplo:
lista.extend(['manhã','tard
e']), a lista agora é ['Osman
lista[0] = lista[0].upper() Presley', 13, 8.5, 8.5,
print(lista) 'manhã', 'tarde'].
● index: retorna o índice do primeiro
## Saída: elemento com o valor especificado.
# ['Daniel', 2310.3, 24, True] ○ Exemplo: lista.index(13),
# ['DANIEL', 2310.3, 24, True] retorna 1.
● insert: adiciona um elemento em
uma posição específica da lista.
○ Exemplo: lista.insert(2,
4.5), a lista agora é ['Osman

18
Presley', 13, 4.5, 8.5,
8.5].
## Saída:
● pop: remove e retorna o elemento na
posição especificada (ou na última # ['C', 'D', 'E', 'F']
posição se não for fornecida uma
posição). Com letras[2:6], é acessado os
○ Exemplo: lista.pop(1), retorna elementos da lista letras de índice 2 até
13 e a lista agora é ['Osman o índice 5, ou seja, os elementos ['C',
Presley', 8.5, 8.5]. 'D', 'E', 'F'].
● remove: remove o primeiro elemento
com o valor especificado.
○ Exemplo: lista.remove(8.5), a
lista agora é ['Osman Presley',
13, 8.5].
● reverse: inverte a ordem dos 4.2 Dicionários
elementos na lista.
○ Exemplo: lista.reverse(), a Os dicionários são um tipo de
lista agora é [8.5, 8.5, 13, estrutura de dados que armazenam pares
'Osman Presley']. de chave-valor. Eles são delimitados por
chaves {} e os pares chave-valor são
Há também o método sort que separados por vírgulas, como mostra a
ordena os elementos na lista. Mas como sintaxe:
nossa lista não é unicamente numérica,
não é possível utilizar esse método, pois dicionario = {chave: valor}
ele ordenará apenas valores numéricos ou
apenas valores textuais. A chave é um elemento único que
identifica um valor no dicionário, enquanto
Uma função bastante utilizada com
o valor é o item que é armazenado para a
listas é a len(), que retorna a quantidade
chave. As chaves e os valores podem ser
de elementos dentro delas:
de qualquer tipo de dado.
idades = [23,15,37,43,90,53] Os dicionários são úteis para
print(len(idades)) armazenar e acessar dados de maneira
organizada e rápida, além de permitirem
## Saída: uma organização mais dinâmica.
# 8 Um exemplo é construir uma ficha de
cadastro de uma pessoa funcionária em
Além dela também existe a estrutura uma empresa.
de partição: uma maneira de acessar um
subconjunto de elementos de uma lista. cadastro = {'numero_cadastro':
Podemos fazer isso através da estrutura 130089,
de partição por índices. 'dia_cadastro': 3,
O operador de partição de lista é 'mes_cadastro': 2,
representado pelos colchetes ([]) e 'funcao': 'limpeza'}
permite que você especifique um intervalo cadastro
de índices separados por dois pontos (:) ## Saída:
para acessar os elementos desejados. # {'número_cadastro': 130089,
# 'dia_cadastro': 3,
letras =
# 'mes_cadastro': 2,
['A','B','C','D','E','F','G']
# 'funcao': 'limpeza'}
print(letras[2:6])

19
Acessamos os valores de cada
elemento especificando sua chave
4.2.1 Métodos com
correspondente: dicionários
cadastro = {'numero_cadastro': Assim como as listas, os dicionários
130089, também oferecem muitas funções e
'dia_cadastro': 3, métodos úteis para manipular seus itens.
'mes_cadastro': 2, Então, vamos verificar alguns
'funcao': 'limpeza'} métodos com listas, considerando que
print(cadastro['numero_cadastro' “dici” é o seguinte conjunto de dados:
],cadastro['dia_cadastro'],cadas
tro['mes_cadastro'],cadastro['fu dici = {'nome': 'Osman',
ncao']) 'idade': 13,
'nota_1': 8.5,
## Saída: 'nota_2': 8.5}
# 130089 3 2 limpeza
Vejamos alguns métodos que
conseguimos utilizar com qualquer variável
Podemos alterar o valor de cada
do tipo dict (dicionário):
chave especificando a chave do elemento
que será modificado e atribuindo o novo ● clear: remove todos os itens de um
dado com o operador de atribuição. Vamos dicionário.
trocar a função de limpeza para ○ Exemplo: dici.clear() a lista
manutenção: agora é {}.
● copy: retorna uma cópia do dicionário.
cadastro = {'numero_cadastro': ○ Exemplo: novo_dicionario =
130089, dici.copy(), novo_dicionario
'dia_cadastro': 3, agora é {'nome': 'Osman',
'mes_cadastro': 2, 'idade': 13, 'nota_1': 8.5,
'funcao': 'limpeza'} 'nota_2': 8.5} e é uma cópia
print(cadastro) independente de dici.
● dict.fromkeys: cria um novo
cadastro['funcao'] =
dicionário com chaves fornecidas por
'manutenção' um iterável e todos os valores
print(cadastro) definidos como o valor padrão
fornecido.
## Saída: ○ Exemplo: novas_notas =
# {'numero_cadastro': 130089, dict.fromkeys(['nota_1',
'nota_2'], 8.0), novas_notas
'dia_cadastro': 3,
é {'nota_1': 8.0, 'nota_2':
'mes_cadastro': 2, 'funcao': 8.0}.
'limpeza'} ● get: retorna o valor associado a uma
# {'numero_cadastro': 130089, chave específica no dicionário.
'dia_cadastro': 3, ○ Exemplo: dici.get('idade'),
'mes_cadastro': 2, 'funcao': retorna 13.
'manutenção'} ● items: retorna uma lista de tuplas que
representam os itens do dicionário
(chave e valor).
○ Exemplo: dici.items(), retorna
[('nome', 'Osman'),
('idade', 13), ('nota_1',
8.5), ('nota_2', 8.5)].

20
● keys: retorna uma lista de todas as 'nota_2': 8.5}
chaves do dicionário.
○ Exemplo: dici.keys(), retorna
['nome', 'idade', 'nota_1', # Leitura com keys
'nota_2']. for chaves in dici.keys():
● pop: remove e retorna o valor print(dici[chaves])
associado a uma chave específica no ## Saída
dicionário. # Osman
○ Exemplo: dici.pop('nome'), # 13
retorna 'Osman' e o dicionário
# 8.5
sem a chave 'nome'.
● popitem: remove e retorna um item # 8.5
aleatório do dicionário.
○ Exemplo: dici.popitem() #Leitura com values
● setdefault: retorna o valor for valores in dici.values():
associado a uma chave específica no print(valores)
dicionário. Se a chave não existir, ela ## Saída
é adicionada ao dicionário com o valor
padrão fornecido. # Osman
○ Exemplo: # 13
dici.setdefault('nome'), # 8.5
retorna 'Osman'; # 8.5
dici.setdefault('nota_3',4.
5) o dicionário será {'nome': # Leitura com items
'Osman', 'idade': 13,
for chaves, valores in
'nota_1': 8.5, 'nota_2':
8.5, 'nota_3': 4.5}. dici.items():
● update: adiciona os itens de um outro print(chaves, valores)
dicionário para o dicionário atual e ## Saída
atualiza pares chave-valor existentes. # nome Osman
○ Exemplo: # idade 13
dici.update({'nota_3': 4.5,
# nota_1 8.5
'sobrenome': 'Presley'}), o
# nota_2 8.5
dicionário agora é {'nome':
'Osman', 'idade': 13,
'nota_1': 8.5, 'nota_2':
8.5, 'nota_3': 4.5,
'sobrenome': 'Presley'}.
● values: retorna uma lista de todos os
valores do dicionário.
○ Exemplo: dici.values(),
retorna ['Osman', 13, 8.5,
8.5].

Os métodos items, keys e values


permitem a leitura dos dados do dicionário
através de laços for. Vamos fazer três
diferentes leituras com for, utilizando os
três métodos que aprendemos:

dici = {'nome': 'Osman',


'idade': 13,
'nota_1': 8.5,

21
CHEGAMOS AO FIM

Espero que você consiga ter um bom proveito das informações coloca-
das aqui e que elas consigam te ajudar em seus estudos em Python e
Data Science!

O resumo contém as informações já transmitidas em aula, mas para so-


lidificar o aprendizado em Python é necessário sempre praticar
bastante. No curso, você tem acesso a vários desafios que você con-
segue solucionar com os estudos na Alura!

Continue sempre estudando e quaisquer dúvidas você pode utilizar o


fórum e o discord da Alura.

Bons estudos!

Você também pode gostar