Skip to content

Commit

Permalink
feat: add capítulo strings
Browse files Browse the repository at this point in the history
  • Loading branch information
HenriqueAJNB committed Jul 9, 2024
1 parent 96a8f31 commit 63f19aa
Show file tree
Hide file tree
Showing 5 changed files with 249 additions and 3 deletions.
1 change: 1 addition & 0 deletions book/05-operacoes-basicas/02-tipos-numericos.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
(tipos-de-dados-numericos)=
# Tipos de dados numéricos

<div style="text-align: justify">
Expand Down
File renamed without changes.
244 changes: 244 additions & 0 deletions book/06-estruturas-de-dados/01-strings.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,244 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Strings"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div style=\"text-align: justify\">\n",
"\n",
"Na seção [tipos de dados numéricos](tipos-de-dados-numericos) já começamos a ver um pouco sobre dois tipos de dados bastante comuns: `int` e `float`.\n",
"\n",
"Nesta seção vamos apresentar outro tipo de dado representando textos. Tal estrutura também é chamado de `string` ou simplesmente `str`. Elas são utilizadas para armazenar e manipular texto. Neste capítulo, vamos explorar os conceitos básicos de strings e como trabalhar com elas em Python."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Definição"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Em Python, uma `string` é uma sequência de caracteres. Você pode definir uma string usando aspas simples `'Texto com aspas simples'` ou aspas duplas `\"Texto com aspas dupla\"`. \n",
"\n",
"Quando não há a presença de `'` ou `\"` na `string`, usar aspas simples ou duplas é indiferente. Agora se o seu texto contiver uma das duas, como por exemplo, o texto *Ela disse \"Olá mundo!\"*, como `\"` faz parte do texto, só é possível criar uma `string` com esse texto entre aspas simples `'`, conforme exemplo abaixo."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"msg_aspas_dupla = 'Ela disse \"Olá mundo!\"'\n",
"print(msg_aspas_dupla)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Caso contrário, o Python pode confundir o que é aspas de abertura e fechamento da `string` com aspas do próprio texto. Observem no exemplo abaixo:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"raises-exception"
]
},
"outputs": [],
"source": [
"erro_de_sintaxe = \"Ela disse \"Olá mundo!\"\"\n",
"print(erro_de_sintaxe)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"De forma a evitar tal erro, como recomendação geral, sempre que seu texto contiver `'`, a `string` deve ser iniciar e encerrar com `\"`. Da mesma forma, se o texto contiver `\"`, a `string` deve iniciar e encerrar com `'`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"É possível definir também uma `string` com multiplas linhas usando três aspas duplas `\"\"\"` ou três aspas simples `'''`."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Esta é uma string\n",
"que se estende por\n",
"várias linhas.\n"
]
}
],
"source": [
"msg_varias_linhas = \"\"\"Esta é uma string\n",
"que se estende por\n",
"várias linhas.\"\"\"\n",
"print(msg_varias_linhas)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Operações com strings"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Concatenação"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sabe aquela história de que `1 + 1 = 11`? Pois bem! Isso é, em partes, verdade! Vamos entender melhor.\n",
"\n",
"Aqui vamos fazer uma distinção clara entre operações com `string` de operações com `int`.\n",
"\n",
"Quando somamos dois inteiros, o Python realiza a operação matemática de soma, conforme já vimos anteriormente."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n"
]
}
],
"source": [
"print(1 + 1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Porém, é possível representar `1` como o caracter número um, da seguinte forma"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"11\n"
]
}
],
"source": [
"print(\"1\" + \"1\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Percebam que são operações completamente diferentes! \n",
"\n",
"No primeiro caso acima, estamos somando o número inteiro `1` com outro número inteiro `1` (ambos são `int`), resultando em `2`.\n",
"\n",
"Já no segundo caso, estamos juntando o caracter `1` com outro caracter `1` (ambos são strings), resultando em `11`. Tal operação de juntar texto é chamada de concatenação.\n",
"\n",
"Agora você entende que `1 + 1` pode ser `11`? No caso em que ambos `1` forem `string`!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Replicação"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Da mesma forma que podemos concatenar strings usando `+`, podemos replicar uma string várias vezes usando `*`. "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"hahahahahahahahahaha\n"
]
}
],
"source": [
"risada = \"ha\" * 10\n",
"print(risada)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Novamente, não é multiplicação matemática pois não estamos trabalhando com valores numéricos `int` ou `float`, mas sim uma replicação de texto, uma operação diferente!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
4 changes: 2 additions & 2 deletions book/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ title: Python para todos
author: Henrique Branco powered by Jupyter Book
logo: img/config/logos/book.png

# Force re-execution of notebooks on each build.
# Cache notebooks execution on each build.
# See https://jupyterbook.org/content/execute.html
execute:
execute_notebooks: force
execute_notebooks: cache

# Define the name of the latex output file for PDF builds
latex:
Expand Down
3 changes: 2 additions & 1 deletion book/_toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,11 @@ parts:
- file: 05-operacoes-basicas/01-matematica.md
- file: 05-operacoes-basicas/02-tipos-numericos.md
- file: 05-operacoes-basicas/03-precedencia-operadores.md
- file: 05-operacoes-basicas/04-variaveis.md

- caption: Aprenda conceitos básicos
chapters:
- file: 06-conceitos-basicos/01-variaveis.md
- file: 06-estruturas-de-dados/01-strings.ipynb

- caption: Pratique
chapters:
Expand Down

0 comments on commit 63f19aa

Please sign in to comment.