Python x R: Tipos de Dados

Avançamos bem na jornada sobre as semelhanças e diferenças entre Python e R. Nosso foco agora é sabermos quais as semelhanças e diferenças sobre os tipos de dados das linguagens.

Por
5 min. de leitura

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

Por
5 min. de leitura