Fala, meus consagrados! Tudo beleza com vocês?
Avançamos bem na jornada sobre as semelhanças e diferenças entre Python e R. Já estudamos sobre:
- Conceituação e sintaxe das linguagens; e
- Variáveis e tipos das linguagens.
Nosso foco agora é sabermos quais as semelhanças e diferenças sobre os tipos de dados das linguagens.
Tipos de dados
Categorias dos tipos de dados em Python e R
Iremos a comparação nas seguintes categorias tipos de dados:
- Tipos numéricos;
- Tipos de texto;
- Tipos booleanos;
- Tipos de coleções e objetos.
Tipos numéricos:
- Python:
- int;
- float; e
- complex;
- R:
- integer;
- numeric; e
- complex.
Tipos de texto:
- Python: str; e
- R: character.
Tipos booleanos:
- Python: bool; e
- R: logical.
Coleções:
- Python:
- Listas;
- Tuplas;
- Sets; e
- Dicionários.
Objetos:
- R:
- Vetores;
- Listas;
- Arrays;
- Matrizes;
- Dataframes; e
- Fatores.
Nas demais seções, iremos destrinchar cada uma dessas categorias. Sobre as coleções em Python e objetos em R, veremos em um artigo posterior.
Tipos numéricos
Tipos inteiros
- Python:
- int
- Exemplo:
- x = 15
- R:
- integer
- Exemplo:
- x = 15L
Observação: em R, os números inteiros possuem o sufixo L.
Tipos de ponto flutuante
- Python:
- float
- Exemplo:
- y = 1.84
- R:
- numeric
- Exemplos:
- x = 10.5
- y = 15
Observação: em R, os números sem casas decimais e sem sufixo L são do tipo numeric.
Tipos de números complexos
- Python:
- complex
- São escritos com um “j”
- Como parte imaginária
- Exemplo:
- x = 3 + 5j
- R:
- complex
- É escrito com um “i”
- Como parte imaginária
- Exemplo:
- x = 3 + 5i
Observação: notem que, nos tipos de números complexos, apenas a parte imaginária difere nas linguagens.
Questões de concursos
[MS Concursos 2018 GHC/RS – Programado] Quais são os 03 tipos de números embutidos no Python 3?
[A] int, float, char.
[B] int, float, complex.
[C] char, complex, ASCII.
[D] signed, int, ASCII.
[E] char, signed, float.
Comentários:
Tipos numéricos em Python:
- int;
- float; e
- complex;
Então a reposta é letra B.
Para R, temos:
- integer;
- numeric; e
- complex.
Gabarito: letra B.
Strings
São sequências de caracteres imutáveis alocadas dinamicamente e sem restrição de tamanho.
Podem estar entre:
- Aspas simples: ‘Rogerão’; ou
- Aspas duplas: “Rogerão”.
Em Python, podemos usar três aspas para strings de múltiplas linhas:
Três aspas simples:
a = '''Lorem ipsum dolor sit amet, consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'''
Três aspas duplas:
a = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."""
Temos os seguintes tipos de texto em Python e R:
- Python: str; e
- R: character.
Exemplos em Python
Código 1:
x = " Rogerão Araújo " print(x[1]) # retorna a posição 1 print(x[1:8]) # retorna o trecho de 1 a 7 print(len(x)) # retorna o tamanho print(x.strip()) # retira os espaços em branco do início e do final print(x.replace("Rogerão", "Kal-El")) # Substitui o primeiro parâmetro pelo segundo
Resultado da execução:
R Rogerão 16 Rogerão Araújo Kal-El Araújo
Código 2:
y = "abacaxi, laranja, maçã" print(y.split(",")) # Divide a string em substrings se encontrar o separador print("maçã" in y) # Checa se uma string está em outra print("melancia" not in y) # Checa se uma string não está em outra z = y + ", uva" # Concatena strings print(z)
Resultado da execução:
['abacaxi', ' laranja', ' maçã'] True True abacaxi, laranja, maçã, uva
Exemplos em R
Código 1:
# A função paste concatena strings. p_nome = "Rogerão " s_nome = "Araújo" paste(p_nome, s_nome) # A função sprintf formata uma string. sprintf("%s tem %f m de altura", "Rogerão", 1.84)
Resultado da execução:
[1] "Rogerão Araújo“ [1] "Rogerão tem 1.840000 m de altura"
Código 2:
# A função substr extrai uma substring. substr("Rogerão Araújo", start = 9, stop=14) # A função sub substitui a primeira string pela segunda na terceira string informada. sub("Rogerão", "Kal-El", "Rogerão Araújo")
Resultado da execução:
[1] "Araújo" [1] "Kal-El Araújo"
Questões de concursos
[UFPel-CES 2015 UFPEL – Técnico em Tecnologia da Informação] Em relação às características da linguagem Python, é correto afirmar que (Marque CERTO ou ERRADO)
[E] uma String Python é uma sequência imutável, alocada estaticamente, com restrição de tamanho.
Comentários:
Tanto em Python quanto em R, uma string Python é uma sequência imutável, alocada dinamicamente e sem restrição de tamanho.
Gabarito: ERRADO.
[MS Concursos 2018 GHC/RS – Programado] Qual é o formato principal de declarar e formatar string no Python 3?
[A] Aspas simples e Aspas duplas.
[B] Aspas simples e Parênteses.
[C] Aspas duplas e Hashtags.
[D] Aspas duplas e Parênteses.
[E] Hashtags e Parênteses.
Comentários:
Strings são sequências de caracteres imutáveis alocadas dinamicamente e sem restrição de tamanho.
Podem estar entre:
- Aspas simples: ‘Rogerão’; ou
- Aspas duplas: “Rogerão”.
Em Python, podemos usar três aspas para strings de múltiplas linhas.
Gabarito: letra A.
[FCC 2012 TRE/CE – Técnico Judiciário – Programação de Sistemas] Sobre Python é correto afirmar: (Marque CERTO ou ERRADO)
[E] Uma String Python é uma sequência imutável, alocada estaticamente, com restrição de tamanho.
Comentários:
Tanto em Python quanto em R, uma string Python é uma sequência imutável, alocada dinamicamente e sem restrição de tamanho.
A questão é idêntica ao que vimos acima, sendo que esta da FCC é de 2012 e da UFPel-CESé de 2015.
Gabarito: ERRADO.
[CESPE 2018 Polícia Federal – Perito Criminal Federal – Conhecimentos Básicos – Todas as Áreas] Com relação à programação Python e R, julgue o item que segue.
a = " Hello, World! " print(a.strip())
Esses comandos, quando executados, apresentarão o resultado a seguir.
a[0]=Hello, a[1]=World!
Comentários:
A função strip() em Python remove os espaços no início e no final de uma string.
Código:
a = " Hello, World! " print(a.strip())
Resultado da execução:
Hello, World!
O resultado da execução do código seria o correto para a questão e não o que foi proposto por ela. Com isso, já concluímos que a questão está errada. Mas como chegar ao resultado da questão? Qual a função usada?
A função split() em Python divide uma string em uma lista onde cada palavra é um item da lista. O separador padrão é espaço em branco.
Código:
a = " Hello, World! " b = a.split() print(b[0]) print(b[1])
Resultado da execução:
Hello, World!
Notem que a função dividiu a string e o resultado foi para outra variável. A variável a continua com ” Hello, World! “, pois uma string é imutável, como vimos na questão anterior.
Gabarito: ERRADO.
[CESPE 2018 Polícia Federal – Perito Criminal Federal – Conhecimentos Básicos – Todas as Áreas] Com relação à programação Python e R, julgue o item que segue.
Considere os comandos a seguir, na linguagem R, os quais serão executados no ambiente do R, e considere, ainda, que > seja um símbolo desse ambiente.
helloStr <- "Hello world!" print(helloStr)
Nesse caso, após a execução dos comandos, será obtido o resultado a seguir.
[1] "Hello world!"
Comentários:
A variável helloStr recebeu a string “Hello world!” e a função print imprimiu no console o resultado?
[1] "Hello world!"
A questão está correta e há uma observação: para Python, o operador de atribuição é o =. Já em R, podemos usar tanto = quanto <- como operadores de atribuição. Mas isso é assunto para outro artigo.
Gabarito: CERTO.
Valores booleanos
Pode-se avaliar qualquer expressão em Python e R, para obter uma das duas respostas
- Python:
- True
- False
- R:
- TRUE
- FALSE
Exemplos:
- 10 > 9
- Python: True
- R: TRUE
- 10 == 9
- Python: False
- R: FALSE
- 10 < 9
- Python: False
- R: FALSE
Observação: os valores booleanos em Python começam com a letra maiúscula. Em R, todas as letras são maiúsculas. Uma outra diferença importante.
Temos os seguintes tipos booleanos em Python e R:
- Python: bool; e
- R: logical.
Exemplos em Python
Código:
print(10 > 9) print(10 == 9) print(10 < 9) a = True b = False print(a and b) print(a or b) print(not(a))
Resultado da execução:
True False False False True False
Exemplos em R
Código:
10 > 9 10 == 9 10 < 9 a = TRUE; b = FALSE a & b a | b !a
Resultado da execução:
[1] TRUE [1] FALSE [1] FALSE [1] FALSE [1] TRUE [1] FALSE
Questões de concursos
[CESPE 2018 Polícia Federal – Agente de Polícia Federal] Julgue os próximos itens, relativos a noções de programação Python e R.
Considere o programa a seguir, escrito em R.
x <- TRUE y <- FALSE print (xy)
Após a execução do programa, será obtido o seguinte resultado.
[1] FALSE
Comentários:
A questão contém um erro: há apenas duas variáveis criadas (x e y). Foram criadas quando houve as atribuições de valores. Já a variável xy, dentro da função print, não foi criada antes de ser impressa. O que gera o seguinte erro:
Error in print(xy) : object 'xy' not found Execution halted
Ou seja, não gera o resultado FALSE, como citado na questão. Para chegar a esse resultado, poderíamos usar um operador lógico & (and).
Como x tem o valor TRUE e y, FALSE, então TRUE & FALSE = FALSE.
Corrigindo o código para chegar ao valor FALSE, deveria ser o seguinte:
x <- TRUE y <- FALSE print(x & y)
Gabarito: ERRADO.
Então é isso!
[]’s e até a próxima!
_________________________
Professor Rogerão Araújo