<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ João Felipe Haas - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Aprenda a codificar - de graça. Tutoriais de programação em Python, JavaScript, Linux e muito mais. ]]>
        </description>
        <link>https://www.freecodecamp.org/portuguese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ João Felipe Haas - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/portuguese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Fri, 05 Jun 2026 20:06:10 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/portuguese/news/author/joaomino/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Aprendendo Python: do zero ao cem ]]>
                </title>
                <description>
                    <![CDATA[ Antes de mais nada, o que é Python? De acordo com seu criador, Guido van Rossum, Python é: > “Uma linguagem de programação de alto nível que tem em sua essência uma filosofia de design de código legível e uma sintaxe que permite aos programadores expressar conceitos em poucas linhas ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/aprendendo-python-do-zero-ao-cem/</link>
                <guid isPermaLink="false">621cc8ba9838eb04fbdf1998</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ João Felipe Haas ]]>
                </dc:creator>
                <pubDate>Tue, 29 Mar 2022 11:42:49 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/03/1_ueWmI48uuShON-hX7LwI0w.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/learning-python-from-zero-to-hero-120ea540b567/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Learning Python: From Zero to Hero</a>
      </p><p>Antes de mais nada, o que é Python? De acordo com seu criador, Guido van Rossum, Python é:</p><blockquote>“Uma linguagem de programação de alto nível que tem em sua essência uma filosofia de design de código legível e uma sintaxe que permite aos programadores expressar conceitos em poucas linhas de código.”</blockquote><p>Para mim, o primeiro motivo para aprender Python foi o fato de ser, realmente, uma bela linguagem de programação. Programar com ela e expressar meus pensamentos foi muito natural para mim.</p><p>Outro motivo foi a possibilidade de usar Python para diversas coisas: ciência de dados, desenvolvimento para a web e aprendizado de máquina são as que mais se destacam. Serviços como Quora, Pinterest e Spotify desenvolveram seus back-ends usando Python. Então, vamos aprender um pouco sobre ele.</p><h3 id="o-b-sico">O básico</h3><h4 id="1-vari-veis"><strong><strong>1. </strong></strong>Variáveis</h4><p>Você pode pensar nas variáveis como palavras que armazenam um valor. Simples assim.</p><p>Em Python, é muito fácil criar uma variável e definir um valor para ela. Imagine que você deseja armazenar o número 1 em uma variável chamada “one”. Vamos fazer isso:</p><pre><code class="language-py">one = 1</code></pre><p>Não foi simples? Você acabou de atribuir o valor 1 à variável “one”.</p><pre><code class="language-py">two = 2
some_number = 10000</code></pre><p>E você pode atribuir qualquer outro <strong>valor</strong> a toda <strong>variável </strong>que desejar. Como você vê na tabela acima, a variável “<strong>two</strong>” armazena o número inteiro <strong>2 </strong>e “<strong>some_number</strong>” armazena <strong>10.000</strong>.</p><p>Além de números inteiros, também podemos usar <em>booleanos </em>(True/False), <em>strings</em>, <em>float </em>e outros tipos de dados.</p><pre><code class="language-py"># booleanos
true_boolean = True
false_boolean = False

# strings
my_name = "Leandro Tk"

# float (números com ponto flutuante)
book_price = 15.80</code></pre><h4 id="2-fluxo-de-controle-declara-es-condicionais"><strong><strong>2. </strong></strong>Fluxo de controle: declarações condicionais</h4><p>O “<strong>if</strong>” usa uma expressão para avaliar se uma declaração é True (Verdadeira) ou False (Falsa). Se for True, a instrução dentro de “if” é executada. Por exemplo:</p><pre><code class="language-py">if True:
  print("Hello Python If")

if 2 &gt; 1:
  print("2 is greater than 1")</code></pre><p><strong>2 </strong>é maior que <strong>1</strong>, então o código “<strong>print</strong>” é executado.</p><p>A instrução dentro de “<strong>else</strong>” será executada se a expressão de “<strong>if</strong>” for <strong>falsa</strong>.</p><pre><code class="language-py">if 1 &gt; 2:
  print("1 is greater than 2")
else:
  print("1 is not greater than 2")</code></pre><p><strong>1 </strong>não é maior que <strong>2</strong>, então o código dentro da instrução “<strong>else</strong>” será executado.</p><p>Você também pode usar uma declaração “<strong>elif</strong>”:</p><pre><code class="language-py">if 1 &gt; 2:
  print("1 is greater than 2")
elif 2 &gt; 1:
  print("1 is not greater than 2")
else:
  print("1 is equal to 2")</code></pre><h4 id="3-loop-iterador"><strong><strong>3. </strong></strong>Loop / Iterador</h4><p>Em Python, podemos fazer uso da iteração de diferentes formas. Falarei de duas delas: <strong>while </strong>e <strong>for</strong>.</p><p><strong>While</strong>: enquanto a instrução for <em>True </em>(verdadeira), o código dentro do bloco será executado. Portanto, o seguinte código vai imprimir o número <strong>1 </strong>ao <strong>10</strong>.</p><pre><code class="language-py">num = 1

while num &lt;= 10:
    print(num)
    num += 1</code></pre><p>O loop <strong>while </strong>precisa de uma “<strong>condição de loop</strong>”. Se a condição permanecer <em>True </em>(verdadeira), ele continuará fazendo a iteração. No exemplo, quando a variável <code>num</code> for igual a <strong>11</strong>, a <strong>condição de loop</strong> será igual a <em>False </em>(falsa).</p><p>Aqui temos outro código básico para entender melhor:</p><pre><code class="language-py">loop_condition = True

while loop_condition:
    print("Loop Condition keeps: %s" %(loop_condition))
    loop_condition = False</code></pre><p>A variável <strong>loop_condition</strong> é <em>True</em>, então o while continuará iterando até definirmos a variável como <em>False</em>.</p><p><strong>For</strong>: você aplica a variável <code>num</code> &nbsp;ao bloco e a instrução <code>for</code> &nbsp;fará a iteração dela para você. O código a seguir produz o mesmo resultado que o código <strong>while </strong>anterior de <strong>1 </strong>a <strong>10</strong>.</p><pre><code class="language-py">for i in range(1, 11):
  print(i)</code></pre><p>Vê? É muito fácil. O range (intervalo) começa no <strong>1º </strong>e vai até o <strong>11º </strong>elemento (<strong>10 </strong>é o <strong>10º </strong>elemento).</p><h3 id="listas-cole-es-array-estrutura-de-dados">Listas: Coleções | Array | Estrutura de Dados</h3><p>Imagine que você deseja armazenar o número inteiro 1 em uma variável. Agora, você talvez queira armazenar o número 2. E o 3, 4, 5…</p><p>Existe uma maneira de armazenar todos os números inteiros que eu quero, mas que não seja em <strong>milhões de variáveis</strong>? Com certeza. Existe uma outra maneira para armazená-los.</p><p>Uma <strong>lista </strong>é uma coleção que pode ser usada para armazenar uma lista de valores (como os números inteiros citados acima). Então vamos usar uma lista:</p><pre><code class="language-py">my_integers = [1, 2, 3, 4, 5]</code></pre><p>É muito fácil. Criamos um <strong>array </strong>e o armazenamos em uma variável chamada <code>my_integers</code>. </p><p>Porém, você pode estar se perguntando: “Como obtenho um valor desse <strong>array</strong>?”</p><p>Ótima pergunta. Uma <strong>lista </strong>tem um conceito chamado <strong>index </strong>(índice). O primeiro elemento tem o valor de <strong>index 0</strong> (zero). O segundo recebe o valor de <strong>index 1</strong> e assim por diante. Você entendeu a ideia.</p><p>Para deixar mais claro, podemos representar o <strong>array </strong>e cada elemento com seu valor de index. Confira o seguinte desenho:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/03/1_ReMk6NgghLII20vPD6uNEA.jpeg" class="kg-image" alt="1_ReMk6NgghLII20vPD6uNEA" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/03/1_ReMk6NgghLII20vPD6uNEA.jpeg 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/03/1_ReMk6NgghLII20vPD6uNEA.jpeg 800w" sizes="(min-width: 720px) 720px" width="800" height="450" loading="lazy"></figure><p>Usando a sintaxe do Python, também é simples de entender:</p><pre><code class="language-py">my_integers = [5, 7, 1, 3, 4]
print(my_integers[0]) # 5
print(my_integers[1]) # 7
print(my_integers[4]) # 4</code></pre><p>Agora imagine que você não deseja armazenar números inteiros. Você só quer armazenar strings, como uma lista de nomes de seus parentes. A minha lista ficaria mais ou menos assim:</p><pre><code class="language-py">relatives_names = [
  "Toshiaki",
  "Juliana",
  "Yuji",
  "Bruno",
  "Kaio"
]

print(relatives_names[4]) # Kaio</code></pre><p>Funciona exatamente da mesma forma que os números inteiros. Legal.</p><p>Acabamos de aprender como funcionam os índices de uma lista. Contudo, ainda precisamos aprender a <strong>adicionar um elemento</strong> à estrutura de dados da lista, ou seja, adicionar um item a uma lista.</p><p>O método mais comum utilizado para adicionar um novo valor a uma lista é o <code>append</code>. Vamos ver como ele funciona:</p><pre><code class="language-py">bookshelf = []
bookshelf.append("The Effective Engineer")
bookshelf.append("The 4 Hour Work Week")
print(bookshelf[0]) # The Effective Engineer
print(bookshelf[1]) # The 4 Hour Work Week</code></pre><p>O <code>append</code> é muito simples. Você só precisa inserir o elemento (por exemplo, “<strong>The Effective Engineer</strong>”) como um parâmetro do <strong>append</strong>.</p><p>Certo, agora chega de listas. Vamos falar sobre outra estrutura de dados.</p><h3 id="dicion-rio-estrutura-de-dados-de-chave-valor">Dicionário: Estrutura de dados de chave-valor</h3><p>Já sabemos que as Listas são indexadas com números inteiros. Mas e se não quisermos usar números inteiros como valores de index? Neste caso, saiba que temos algumas outras estruturas de dados que podemos utilizar como numéricas, strings ou outros tipos de índices.</p><p>Vamos aprender sobre a estrutura de dados do <strong>Dicionário</strong>. Dicionário é uma coleção de <strong>pares de chave-valor</strong>. É assim que ele se parece:</p><pre><code class="language-py">dictionary_example = {
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}</code></pre><p>A <strong>chave </strong>(key) serve como o índice que aponta para o<strong> valor </strong>(value). E como acessamos um valor em um Dicionário? Você adivinhou - usando a chave. Vamos testar:</p><pre><code class="language-py">dictionary_tk = {
  "name": "Leandro",
  "nickname": "Tk",
  "nationality": "Brazilian"
}

print("My name is %s" %(dictionary_tk["name"])) # My name is Leandro
print("But you can call me %s" %(dictionary_tk["nickname"])) # But you can call me Tk
print("And by the way I'm %s" %(dictionary_tk["nationality"])) # And by the way I'm Brazilian</code></pre><p>Criei um <strong>dicionário </strong>sobre mim. Meu nome, apelido e nacionalidade. Esses atributos são as <strong>chaves</strong> (keys) do Dicionário.</p><p>Assim como usamos o número de index para acessar uma <strong>Lista</strong>, também usamos um índice (mas ao invés de números, as chaves) para acessar os valores armazenados em um <strong>Dicionário</strong>.</p><p>No exemplo, imprimi uma frase sobre mim usando todos os valores armazenados no Dicionário. Bem simples, certo?</p><p>Outra coisa legal sobre o Dicionário é que podemos usar qualquer coisa como valor. No Dicionário que criei, vou adicionar a <strong>chave </strong><code>age</code> e atribuir a minha idade (um número inteiro) nela:</p><pre><code class="language-py">dictionary_tk = {
  "name": "Leandro",
  "nickname": "Tk",
  "nationality": "Brazilian",
  "age": 24
}

print("My name is %s" %(dictionary_tk["name"])) # My name is Leandro
print("But you can call me %s" %(dictionary_tk["nickname"])) # But you can call me Tk
print("And by the way I'm %i and %s" %(dictionary_tk["age"], dictionary_tk["nationality"])) # And by the way I'm Brazilian</code></pre><p>Aqui temos um par de <strong>chave </strong>(<code>age</code>) e <strong>valor </strong>(<code>24</code>) . Uma <em>string </em>é a chave e um <em>número inteiro </em>é o valor.</p><p>Da mesma forma como fizemos com as Listas, agora vamos aprender como <strong>adicionar um novo elemento </strong>a um Dicionário. A chave que aponta para um valor é parte fundamental de um Dicionário. Portanto, quando adicionamos um novo elemento, também precisamos considerar a chave e o valor.</p><pre><code class="language-py">dictionary_tk = {
  "name": "Leandro",
  "nickname": "Tk",
  "nationality": "Brazilian"
}

dictionary_tk['age'] = 24

print(dictionary_tk) # {'nationality': 'Brazilian', 'age': 24, 'nickname': 'Tk', 'name': 'Leandro'}
</code></pre><p>Basta atribuir um <strong>valor </strong>e uma <strong>chave </strong>ao Dicionário. Nada complicado aqui, certo?</p><h3 id="itera-o-fazendo-um-loop-atrav-s-das-estruturas-de-dados">Iteração: Fazendo um loop através das estruturas de dados</h3><p>Como aprendemos em <a href="https://medium.com/the-renaissance-developer/python-101-the-basics-441136fb7cc3" rel="noopener"><strong><strong>Python Basics</strong></strong></a> (texto em inglês), a iteração de uma Lista é algo muito simples. Nós, desenvolvedores de Python, geralmente usamos o loop <code>for</code>. Vamos experimentar:</p><pre><code class="language-py">bookshelf = [
  "The Effective Engineer",
  "The 4-hour Workweek",
  "Zero to One",
  "Lean Startup",
  "Hooked"
]

for book in bookshelf:
    print(book)</code></pre><p>Portanto, para cada <code>book</code> na lista <code>bookshelf</code>, nós imprimimos (podemos fazer qualquer coisa aqui) o seu valor. Bem simples e intuitivo. Isso é Python.</p><p>Para uma estrutura de dados <em>hash</em>, também podemos usar o loop <code>for</code>, mas aplicamos a <strong>chave</strong>:</p><pre><code class="language-py">dictionary = { "some_key": "some_value" }

for key in dictionary:
    print("%s --&gt; %s" %(key, dictionary[key]))
    
# some_key --&gt; some_value</code></pre><p>Este é um exemplo de como funciona. Para cada <code>key</code> em <code>dictionary</code>, imprimimos a <em>key </em>(chave) e seu <em>value </em>(valor) correspondente.</p><p>Outra maneira de fazer isso é usar o método <code>iteritems</code>.</p><pre><code class="language-py">dictionary = { "some_key": "some_value" }

for key, value in dictionary.items():
    print("%s --&gt; %s" %(key, value))

# some_key --&gt; some_value</code></pre><p>Nós nomeamos os dois parâmetros como <code>key</code> e <code>value</code>, mas não é necessário. Podemos chamar eles de qualquer coisa. Vejamos:</p><pre><code class="language-py">dictionary_tk = {
  "name": "Leandro",
  "nickname": "Tk",
  "nationality": "Brazilian",
  "age": 24
}

for attribute, value in dictionary_tk.items():
    print("My %s is %s" %(attribute, value))
    
# My name is Leandro
# My nickname is Tk
# My nationality is Brazilian
# My age is 24</code></pre><p>Podemos ver que usamos <code>attribute</code> como parâmetro para a chave do dicionário e funcionou corretamente. Ótimo!!</p><h2 id="classes-e-objetos">Classes e objetos</h2><h3 id="um-pouco-de-teoria-">Um pouco de teoria:</h3><p><strong>Objetos </strong>são uma representação de objetos do mundo real, como carros, cachorros ou bicicletas. Os objetos compartilham duas características principais: <strong>dados </strong>e <strong>comportamentos</strong>.</p><p>Um carro possui <strong>dados</strong>, como número de rodas, número de portas e quantidade de assentos. Ele também tem <strong>comportamentos</strong>: podem acelerar, parar, mostrar quanto resta de combustível e tantas outras coisas.</p><p>Na programação orientada a objetos, nós identificamos <strong>dados </strong>como <strong>atributos </strong>e <strong>comportamentos </strong>como <strong>métodos</strong>. Novamente:</p><p>Dados → Atributos | Comportamento → Métodos</p><p>Já uma <strong>classe </strong>é o projeto a partir do qual os objetos individuais são criados. No mundo real, muitas vezes encontramos objetos do mesmo tipo, como os carros. Todos da mesma marca e modelo (e todos têm motor, rodas, portas e assim por diante). Cada carro foi construído a partir do mesmo projeto e tem os mesmos componentes.</p><h3 id="modo-de-programa-o-orientada-a-objetos-para-python-ativado">Modo de programação orientada a objetos para Python: ATIVADO</h3><p>Python, como uma linguagem de programação orientada a objetos, também possui esses conceitos: <strong>classe </strong>e <strong>objeto</strong>.</p><p>Uma classe é um projeto, um modelo para seus objetos.</p><p>Então, novamente, uma classe é apenas um modelo, ou uma maneira de definir <strong>atributos </strong>e <strong>comportamento </strong>(como falamos na seção de teoria). Como exemplo, uma <strong>classe </strong><code>Vehicle</code> (Veículo) tem seus próprios <strong>atributos </strong>que definem quais <strong>objetos </strong>são veículos. O número de rodas, o tipo de tanque, a capacidade de assentos e a velocidade máxima são todos atributos de um veículo.</p><p>Com isso em mente, vamos ver como funciona a sintaxe de <strong>classes </strong>no Python:</p><pre><code class="language-py">class Vehicle:
    pass</code></pre><p>Definimos uma classe fazendo a declaração <code>class</code> e pronto. Fácil, né?</p><p>Os objetos são <strong>instâncias </strong>de uma classe. Criamos uma <strong>instância </strong>nomeando a classe.</p><pre><code class="language-py">car = Vehicle()
print(car) # &lt;__main__.Vehicle instance at 0x7fb1de6c2638&gt;</code></pre><p>Aqui <code>car</code> é um objeto (ou instância) da classe <code>Vehicle</code>.</p><p>Lembre-se de que nossa classe <code>Vehicle</code> tem quatro atributos: número de rodas, tipo de tanque, capacidade de assentos e velocidade máxima. Devemos definir todos esses atributos ao criar o objeto. Então, a seguir definimos nossa classe para receber esses dados quando ela for iniciada:</p><pre><code class="language-py">class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity</code></pre><p>Veja que usamos o método <code>init</code>. Nós o chamamos de <strong>método construtor</strong>. Assim, quando criamos o objeto veículo, podemos definir os atributos. Imagine que adoramos o Tesla Model S e queremos criar um objeto dele. Ele tem quatro rodas, funciona com energia elétrica, tem espaço para cinco pessoas e a velocidade máxima é de 250 km/h. Vamos criar este objeto:</p><pre><code class="language-py">tesla_model_s = Vehicle(4, 'electric', 5, 250)</code></pre><p>Quatro rodas + “tipo de tanque” elétrico + cinco lugares + 250 km/h de velocidade máxima.</p><p>Todos os atributos foram definidos. Mas como fazemos para acessar os valores desses atributos? Simplesmente <strong>enviando uma mensagem para o objeto perguntando sobre eles.</strong> Chamamos isso de <strong>método</strong>. É o <strong>comportamento do objeto.</strong> Vamos implementar isso:</p><pre><code class="language-py">class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity

    def number_of_wheels(self):
        return self.number_of_wheels

    def set_number_of_wheels(self, number):
        self.number_of_wheels = number</code></pre><p>Esta é uma implementação de dois <strong>métodos</strong>: <code>number_of_wheels</code> e <code>set_number_of_wheels</code>. Chamamos isso de <strong>getter </strong>e <strong>setter</strong>. O primeiro método obtém o valor do atributo e o segundo define um novo valor para o atributo.</p><p>Em Python, podemos fazer isso usando <code>@property</code> (<em>decorators</em>) para definir <strong>getters </strong>e <strong>setters</strong>. Vamos ver com o código:</p><pre><code class="language-py">class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity
    
    @property
    def number_of_wheels(self):
        return self.__number_of_wheels
    
    @number_of_wheels.setter
    def number_of_wheels(self, number):
        self.__number_of_wheels = number</code></pre><p>E podemos usar esses métodos como atributos:</p><pre><code class="language-py">tesla_model_s = Vehicle(4, 'electric', 5, 250)
print(tesla_model_s.number_of_wheels) # 4
tesla_model_s.number_of_wheels = 2 # setting number of wheels to 2
print(tesla_model_s.number_of_wheels) # 2</code></pre><p>Isso é um pouco diferente de definir métodos. Os métodos funcionam como atributos. Por exemplo, para definirmos um novo número de rodas, não passamos o número <strong>2</strong> como parâmetro, mas atribuímos o valor <strong>2</strong> para <code>number_of_wheels</code>. Esta é uma maneira de escrever um código <em>pythônico</em> <strong>getter </strong>e <strong>setter</strong>.</p><p>Também podemos usar métodos para outras coisas, como o método <code>make_noise</code>. Vejamos:</p><pre><code class="language-py">class Vehicle:
    def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.type_of_tank = type_of_tank
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity

    def make_noise(self):
        print('VRUUUUUUUM')</code></pre><p>Quando chamamos esse método, ele retorna a <em>string</em> “VRRRRUUUUM”.</p><pre><code class="language-py">tesla_model_s = Vehicle(4, 'electric', 5, 250)
tesla_model_s.make_noise() # VRUUUUUUUM</code></pre><h3 id="encapsulamento-ocultando-informa-es">Encapsulamento: Ocultando informações</h3><p>O encapsulamento é um mecanismo que restringe o acesso direto aos dados e aos métodos dos objetos. Ao mesmo tempo, facilita a operação nesses dados (métodos dos objetos).</p><blockquote>“O encapsulamento pode ser usado para ocultar membros de dados e funções de membros. De acordo com esta definição, o encapsulamento significa que a representação interna de um objeto é geralmente ocultada fora da definição do objeto.” — Wikipédia</blockquote><p>Toda representação interna de um objeto é ocultada da parte externa. Apenas o objeto pode interagir com seus dados internos.</p><p>Primeiro, precisamos entender como as variáveis e métodos <strong>públicos </strong>e <strong>não públicos</strong> de instâncias funcionam.</p><p><strong>Variáveis públicas de instância</strong></p><p>Para uma classe Python, podemos inicializar uma <strong>variável pública de instância</strong> dentro de nosso método construtor. Vejamos:</p><p>Dentro do método construtor:</p><pre><code class="language-py">class Person:
    def __init__(self, first_name):
        self.first_name = first_name</code></pre><p>Aqui passamos o valor de <code>first_name</code> como um argumento para a <strong>variável pública de instância</strong>:</p><pre><code class="language-py">tk = Person('TK')
print(tk.first_name) # =&gt; TK</code></pre><p>Dentro da classe:</p><pre><code class="language-py">class Person:
    first_name = 'TK'</code></pre><p>Aqui, não precisamos passar o valor de <code>first_name</code> como argumento. Todas as instâncias deste objeto serão inicializadas com o valor <code>TK</code> no atributo da classe.</p><pre><code class="language-py">tk = Person()
print(tk.first_name) # =&gt; TK</code></pre><p>Legal. Aprendemos que podemos usar <strong>variáveis públicas de instância</strong> e <strong>atributos de classe</strong>. Outra coisa interessante sobre a parte <strong>pública </strong>é que podemos gerenciar o valor da variável. O que eu quero dizer com isso? Nosso <strong>objeto </strong>pode gerenciar seu valor de variável: Usar <strong>Get </strong>e <strong>Set </strong>nas variáveis.</p><p>Seguindo o exemplo da classe <code>Person</code>, digamos que desejamos definir outro valor para a variável <code>first_name</code>:</p><pre><code class="language-py">tk = Person('TK')
tk.first_name = 'Kaio'
print(tk.first_name) # =&gt; Kaio</code></pre><p>Pronto. Acabamos de definir outro valor (<code>kaio</code>) para a variável de instância <code>first_name</code>. Simples assim. Como é uma <strong>variável pública</strong>, podemos fazer isso.</p><p><strong>Variáveis não públicas de instância</strong></p><blockquote>Não usamos o termo “privado”, pois nenhum atributo é realmente privado em Python (sem uma quantidade de trabalho geralmente desnecessária). - <a href="https://www.python.org/dev/peps/pep-0008/#designing-for-inheritance" rel="noopener">PEP 8</a></blockquote><p>Assim como na <strong>variável pública de instância</strong>, podemos definir a <strong>variável não pública de instância</strong> tanto no método construtor quanto na classe. A diferença de sintaxe é: para <strong>variáveis não públicas</strong>, usamos um sublinhado (<code>_</code>) antes do nome da variável.</p><blockquote>“As variáveis ‘privadas’ de instância que não podem ser acessadas exceto de dentro de um objeto não existem em Python. No entanto, existe uma convenção que é seguida pela maioria dos programadores e códigos de Python: um nome prefixado com um sublinhado (por exemplo, _spam) deve ser tratado como uma parte não pública da API (seja uma função, um método ou um membro de dados)” — <a href="https://docs.python.org/2/tutorial/classes.html#private-variables-and-class-local-references" rel="noopener">Python Software Foundation</a></blockquote><p>Veja um exemplo:</p><pre><code class="language-py">class Person:
    def __init__(self, first_name, email):
        self.first_name = first_name
        self._email = email</code></pre><p>Observe a variável do e-mail <code>_email</code>. É assim que definimos uma <strong>variável não pública</strong>:</p><pre><code class="language-py">tk = Person('TK', 'tk@mail.com')
print(tk._email) # tk@mail.com</code></pre><blockquote>Podemos acessá-la e atualizá-la. As <strong>variáveis não públicas</strong> são apenas uma <strong>convenção </strong>e devem ser tratadas como uma parte não pública da API..</blockquote><p>Então usamos métodos dentro da definição de nossa classe para acessar e alterar uma <strong>variável não pública</strong>. Vamos implementar dois métodos (<code>email</code> e <code>update_email</code>) para entendermos melhor:</p><pre><code class="language-py">class Person:
    def __init__(self, first_name, email):
        self.first_name = first_name
        self._email = email

    def update_email(self, new_email):
        self._email = new_email

    def email(self):
        return self._email</code></pre><p>Agora podemos atualizar e acessar as <strong>variáveis não públicas</strong> usando esses métodos. Vejamos:</p><pre><code class="language-py">tk = Person('TK', 'tk@mail.com')
print(tk.email()) # =&gt; tk@mail.com
# tk._email = 'new_tk@mail.com' -- treat as a non-public part of the class API
print(tk.email()) # =&gt; tk@mail.com
tk.update_email('new_tk@mail.com')
print(tk.email()) # =&gt; new_tk@mail.com</code></pre><ol><li>Iniciamos um novo objeto que terá o nome <code>TK</code> e o e-mail <a><code>tk@mail.com</code></a>;</li><li>Imprimimos o endereço de e-mail acessando a <strong>variável não pública</strong> através do método <code>email</code>;</li><li>Tentamos definir um novo endereço de e-mail;</li><li>Precisamos tratar a <strong>variável não pública</strong> como uma parte não pública da API;</li><li>Atualizamos a <strong>variável não pública</strong> com o método <code>update_email</code> da nossa instância;</li><li>Sucesso! Conseguimos atualizá-la dentro de nossa classe com o método auxiliar</li></ol><h4 id="m-todo-p-blico">Método público</h4><p>Os <strong>métodos públicos</strong> também podem ser usados fora de nossa classe:</p><pre><code class="language-py">class Person:
    def __init__(self, first_name, age):
        self.first_name = first_name
        self._age = age

    def show_age(self):
        return self._age</code></pre><p>Vamos testar isso:</p><pre><code class="language-py">tk = Person('TK', 25)
print(tk.show_age()) # =&gt; 25</code></pre><p>Ótimo - podemos usá-lo sem nenhum problema.</p><h4 id="m-todo-n-o-p-blico">Método não público</h4><p>Mas não podemos fazer isso com <strong>métodos não públicos</strong>. Vamos implementar a mesma classe <code>Person</code>, mas agora com o <strong>método não público</strong> <code>show_age</code>, usando o sublinhado (<code>_</code>) na frente.</p><pre><code class="language-py">class Person:
    def __init__(self, first_name, age):
        self.first_name = first_name
        self._age = age

    def _show_age(self):
        return self._age</code></pre><p>E agora, vamos tentar chamar esse <strong>método não público </strong>com nosso objeto:</p><pre><code class="language-py">tk = Person('TK', 25)
print(tk._show_age()) # =&gt; 25</code></pre><blockquote>Podemos acessar e atualizar o valor. Os <strong>métodos não públicos</strong> são apenas uma convenção e devem ser tratados como uma parte não pública da API.</blockquote><p>Aqui está um exemplo de como usar um <strong>método não público</strong>:</p><pre><code class="language-py">class Person:
    def __init__(self, first_name, age):
        self.first_name = first_name
        self._age = age

    def show_age(self):
        return self._get_age()

    def _get_age(self):
        return self._age

tk = Person('TK', 25)
print(tk.show_age()) # =&gt; 25</code></pre><p>Aqui temos o <strong>método não público</strong> <code>_get_age</code> e o <strong>método público</strong> <code>show_age</code>. O <code>show_age</code> pode ser usado pelo nosso objeto (fora da nossa classe) e o <code>_get_age</code> pode ser usado apenas dentro da definição da nossa classe (dentro do método <code>show_age</code>). Mas novamente: é apenas uma questão de convenção.</p><p><strong>Resumo do encapsulamento</strong></p><p>Com o encapsulamento, podemos garantir que a representação interna do objeto seja ocultada do lado externo.</p><h3 id="heran-a-comportamentos-e-caracter-sticas"><strong>Herança: comportamentos e características</strong></h3><p>Certos objetos têm algumas coisas em comum: seus comportamentos e características.</p><p>Por exemplo, herdei algumas características e comportamentos do meu pai. Herdei seus olhos e cabelos como características, e sua impaciência e introversão como comportamentos.</p><p>Na programação orientada a objetos, as classes podem herdar características comuns (dados) e comportamento (métodos) de outra classe.</p><p>Vamos ver um exemplo disso e como implementar em Python.</p><p>Imagina um carro. Número de rodas, capacidade de assentos e velocidade máxima são todos atributos de um carro. Podemos dizer que uma classe <code>ElectricCar</code> herda esses mesmos atributos da classe <code>Car</code> regular.</p><pre><code class="language-py">class Car:
    def __init__(self, number_of_wheels, seating_capacity, maximum_velocity):
        self.number_of_wheels = number_of_wheels
        self.seating_capacity = seating_capacity
        self.maximum_velocity = maximum_velocity</code></pre><p>Nossa classe <code>Car</code> implementou:</p><pre><code class="language-py">my_car = Car(4, 5, 250)
print(my_car.number_of_wheels)
print(my_car.seating_capacity)
print(my_car.maximum_velocity)</code></pre><p>Uma vez iniciado, podemos usar todas as <strong>variáveis da instância</strong> criadas. Legal.</p><p>Em Python, aplicamos uma <strong>classe pai</strong> à <strong>classe filha</strong> como parâmetro. A classe <code>ElectricCar</code> pode herdar de nossa classe <code>Car</code>:</p><pre><code class="language-py">class ElectricCar(Car):
    def __init__(self, number_of_wheels, seating_capacity, maximum_velocity):
        Car.__init__(self, number_of_wheels, seating_capacity, maximum_velocity)</code></pre><p>Simples assim. Não precisamos implementar nenhum outro método, pois essa classe já o possui os métodos herdados da classe <code>Car</code>. Vamos testar isso:</p><pre><code class="language-py">my_electric_car = ElectricCar(4, 5, 250)
print(my_electric_car.number_of_wheels) # =&gt; 4
print(my_electric_car.seating_capacity) # =&gt; 5
print(my_electric_car.maximum_velocity) # =&gt; 250</code></pre><p>Lindo.</p><h3 id="-isso-a-"><strong>É isso aí<strong>!</strong></strong></h3><p>Aprendemos muitas coisas sobre o básico do Python:</p><ul><li>Como as variáveis do Python funcionam</li><li>Como as instruções condicionais do Python funcionam</li><li>Como funciona o loop do Python (while &amp; for)</li><li>Como usar Listas: Coleção | Array</li><li>Dicionário de chave-valor</li><li>Como podemos iterar por essas estruturas de dados</li><li>Objetos e classes</li><li>Atributos como dados de objetos</li><li>Métodos como comportamentos dos objetos</li><li>Utilização de getters e setters do Python e o decorator property</li><li>Encapsulamento: ocultando informações</li><li>Herança: comportamentos e características</li></ul><p>Parabéns! Você concluiu a leitura deste conteúdo denso sobre Python.</p><p>Se você busca por um curso completo de Python, quer aprender mais habilidades de programação utilizadas no mundo real e criar projetos, experimente o <a href="https://onemonth.com/courses/python?campaignid=33447&amp;discount_code=TKPython1&amp;mbsy=lG6tv&amp;mbsy_source=7d89eeb0-0031-478c-a60c-6a96d762712a" rel="noopener"><strong><strong><em><em>One Month Python Bootcamp</em></em></strong></strong></a>. Vejo você lá ☺</p><p>Para mais histórias e posts sobre minha jornada aprendendo e dominando programação, siga aa publicação do autor, <a href="https://medium.com/the-renaissance-developer" rel="noopener"><strong><strong>The Renaissance Developer</strong></strong></a>.</p><p>Divirta-se, continue aprendendo e siga programando.</p><p>O <a href="https://twitter.com/wordsofteekay">Twitter</a> e <a href="https://github.com/LeandroTk" rel="noopener">Github</a> do autor. ☺</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Método de listas append em Python – explicação e exemplos de como adicionar um elemento a um array ]]>
                </title>
                <description>
                    <![CDATA[ Bem-vindos Se você quer aprender a usar o método append(), você está no lugar certo. Este é um método muito poderoso para listas que, com certeza, você usará em algum de seus projetos em Python. Neste artigo, você aprenderá:  * Por que e quando você deve usar o append(). ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/metodo-de-listas-append-em-python-explicacao-e-exemplos-de-como-adicionar-um-elemento-a-um-array/</link>
                <guid isPermaLink="false">61fa6afa53557304fa19e312</guid>
                
                    <category>
                        <![CDATA[ Python ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ João Felipe Haas ]]>
                </dc:creator>
                <pubDate>Thu, 03 Feb 2022 14:34:24 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/02/Append.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/python-list-append-how-to-add-an-element-to-an-array-explained-with-examples/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Python List Append – How to Add an Element to an Array, Explained with Examples</a>
      </p><h3 id="bem-vindos">Bem-vindos</h3><p>Se você quer aprender a usar o método <code><strong><strong>append()</strong></strong></code>, você está no lugar certo. Este é um método muito poderoso para listas que, com certeza, você usará em algum de seus projetos em Python.</p><p><strong>Neste artigo, você aprenderá:</strong></p><ul><li>Por que e quando você deve usar o <code>append()</code>.</li><li>Como fazer a chamada do método.</li><li>Como funciona e qual valor ele retorna.</li><li>Como ele se compara ao método <code>insert()</code> e ao fatiamento (slicing) de string.</li></ul><p>Você encontrará exemplos de uso do <code>append()</code> com strings, números inteiros, floats, booleanos, listas, tuplas e dicionários.</p><p><strong>Vamos ao trabalho<strong>! ✨</strong></strong></p><h2 id="-prop-sito"><strong><strong>🔹 </strong>Propósito</strong></h2><p>Usando esse método é possível <strong>adicionar um único elemento ao final de uma lista</strong>.</p><p>Confira na imagem o efeito produzido pelo <code>append()</code>:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/02/image-59.png" class="kg-image" alt="image-59" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/02/image-59.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/02/image-59.png 802w" sizes="(min-width: 720px) 720px" width="802" height="320" loading="lazy"></figure><p>💡 <strong>Dica</strong>: para adicionar uma sequência de elementos individualmente, você deve usar o método <code>extend()</code>.</p><h2 id="-sintaxe-e-par-metros"><strong><strong>🔸 </strong></strong>Sintaxe e parâmetros</h2><p>Esta é a sintaxe básica usada para chamar o método:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/02/image-60.png" class="kg-image" alt="image-60" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/02/image-60.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2022/02/image-60.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2022/02/image-60.png 1019w" sizes="(min-width: 720px) 720px" width="1019" height="392" loading="lazy"><figcaption>A lista que você quer modificar (laranja) e o elemento que você quer inserir (verde)</figcaption></figure><p>💡 <strong>Dica</strong>: por se tratar de um método, não se deve esquecer o uso do ponto. Ao chamar um método, devemos usar o ponto após a lista para indicar que pretendemos "modificar" essa lista específica.</p><p>Como você pode perceber, o método <code>append()</code> aceita apenas um argumento: o elemento que você deseja adicionar. Este elemento pode ser qualquer tipo de dado:</p><ul><li>Número inteiro</li><li>String</li><li>Float</li><li>Booleano</li><li>Outra lista</li><li>Tupla</li><li>Dicionário</li><li>Uma instância de uma classe personalizada</li></ul><p>Basicamente, qualquer valor que você possa criar em Python pode ser adicionado a uma lista.</p><p><strong><strong>💡 </strong>Dica:</strong> o primeiro elemento da sintaxe (a lista) geralmente é uma variável que faz referência a uma lista.</p><h3 id="exemplo"><strong><strong>Ex</strong>emplo</strong></h3><p>A seguir, temos um exemplo de uma chamada usando o <code>append()</code>:</p><pre><code class="language-python">&gt;&gt;&gt; musical_notes = ["C", "D", "E", "F", "G", "A"]
&gt;&gt;&gt; musical_notes.append("B")</code></pre><ul><li>Primeiramente, a lista é definida e atribuída a uma variável.</li><li>Então, usando esta variável chamamos o método <code>append()</code> e passamos o elemento a ser adicionado (a string <code>"B"</code>) como argumento.</li></ul><h2 id="-resultado-produzido-e-o-valor-de-retorno"><strong><strong>🔹 </strong></strong>Resultado produzido e o valor de retorno</h2><p>Este método <strong>altera </strong>a lista original na memória. Isso significa que ele não retorna uma nova cópia da lista, mas sim o valor <code>None</code>. Ao chamar este método, você estará modificando a lista original.</p><p>Utilizando nosso exemplo anterior:</p><pre><code class="language-python">&gt;&gt;&gt; musical_notes = ["C", "D", "E", "F", "G", "A"]
&gt;&gt;&gt; musical_notes.append("B")</code></pre><p>Abaixo, é possível ver que a lista original foi modificada após a adição do elemento. O último elemento agora é <code>"B"</code> e a lista original agora é a versão modificada.</p><pre><code class="language-python">&gt;&gt;&gt; musical_notes
['C', 'D', 'E', 'F', 'G', 'A', 'B']</code></pre><p>Você pode confirmar que o valor de retorno de <code>append()</code> é igual a <code>None</code> atribuindo este valor a uma variável e a imprimindo:</p><pre><code class="language-python">&gt;&gt;&gt; musical_notes = ["C", "D", "E", "F", "G", "A"]
&gt;&gt;&gt; a = musical_notes.append("B")
&gt;&gt;&gt; print(a)
None</code></pre><h2 id="-exemplos"><strong><strong>🔸 Ex</strong>emplo<strong>s</strong></strong></h2><p>Agora que você já sabe qual é a utilidade do método <code>append()</code>, conhece a sua sintaxe e o que ele produz, vamos conferir alguns exemplos de uso com diferentes tipos de dados.</p><h3 id="adicionar-uma-string">Adicionar uma strin<strong><strong>g</strong></strong></h3><pre><code class="language-python">&gt;&gt;&gt; top_players = ["gino234", "nor233", "lal453"]
&gt;&gt;&gt; top_players.append("auop342")

# A string foi inserida
&gt;&gt;&gt; top_players
['gino234', 'nor233', 'lal453', 'auop342']</code></pre><h3 id="adicionar-um-n-mero-inteiro">Adicionar um número inteiro</h3><pre><code class="language-python">&gt;&gt;&gt; data = [435, 324, 275, 567, 123]
&gt;&gt;&gt; data.append(456)

&gt;&gt;&gt; data
[435, 324, 275, 567, 123, 456]</code></pre><h3 id="adicionar-um-float">Adicionar um float</h3><pre><code class="language-python">&gt;&gt;&gt; data = [435.34, 324.35, 275.45, 567.34, 123.23]
&gt;&gt;&gt; data.append(456.23)

&gt;&gt;&gt; data
[435.34, 324.35, 275.45, 567.34, 123.23, 456.23]</code></pre><h3 id="adicionar-um-valor-booleano">Adicionar um valor booleano</h3><pre><code class="language-python">&gt;&gt;&gt; values = [True, True, False, True]
&gt;&gt;&gt; values.append(False)

&gt;&gt;&gt; values
[True, True, False, True, False]</code></pre><h3 id="adicionar-uma-lista">Adicionar uma lista</h3><p>Este método só pode adicionar um único elemento ao final de uma lista, portanto, se você passar uma lista como argumento, a lista inteira será anexada na forma de um único elemento (será uma lista aninhada dentro da lista original).</p><pre><code>&gt;&gt;&gt; data = [[4.5, 4.8, 5.7], [2.5, 2.6, 2.7]]
&gt;&gt;&gt; data.append([6.7, 2.3])

&gt;&gt;&gt; data
[[4.5, 4.8, 5.7], [2.5, 2.6, 2.7], [6.7, 2.3]]</code></pre><h3 id="adicionar-uma-tupla">Adicionar uma tupla</h3><p>Funciona exatamente da mesma maneira como a adição de uma lista. A tupla inteira será adicionada em forma de um único elemento.</p><pre><code>&gt;&gt;&gt; data = [[4.5, 4.8, 5.7], [2.5, 2.6, 2.7]]
&gt;&gt;&gt; data.append((6.7, 2.3))

&gt;&gt;&gt; data
[[4.5, 4.8, 5.7], [2.5, 2.6, 2.7], (6.7, 2.3)] </code></pre><p><strong><strong>💡 </strong>Dica</strong>: se você quiser adicionar os elementos de uma lista ou tupla individualmente na lista original, precisará usar o método <code>extend()</code> ao invés do <code>append()</code>. Para entender a diferença entre os métodos, confira o outro artigo (em inglês) da autora: <a href="https://www.freecodecamp.org/news/python-list-append-vs-python-list-extend/">Python List Append VS Python List Extend – The Difference Explained with Array Method Examples</a></p><h3 id="adicionar-um-dicion-rio">Adicionar um dicionário</h3><p>Ao adicionar um dicionário, ele será adicionado como um único elemento da lista - da mesma maneira que acontece com listas e tuplas.</p><pre><code>&gt;&gt;&gt; data = [{"a": 1, "b": 2}]
&gt;&gt;&gt; data.append({"c": 3, "d": 4})
&gt;&gt;&gt; data
[{'a': 1, 'b': 2}, {'c': 3, 'd': 4}]</code></pre><h2 id="-equival-ncia-entre-append-e-insert"><strong><strong>🔹 </strong></strong>Equivalência entre append e inser<strong><strong>t</strong></strong></h2><p>É interessante notarmos que o método <code>insert()</code> pode ser equivalente ao <code>append()</code> caso sejam passados os argumentos apropriados.</p><p>O método <code>insert()</code> é usado para inserir um elemento em um determinado índice (posição) da lista.</p><p>Esta é a sintaxe usada para chamar o método <code>insert()</code>:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/02/image-61.png" class="kg-image" alt="image-61" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/02/image-61.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/02/image-61.png 885w" sizes="(min-width: 720px) 720px" width="885" height="271" loading="lazy"><figcaption>A lista que você quer modificar (laranja), o índice onde você quer inserir o elemento (amarelo) e o elemento que você quer inserir (verde)</figcaption></figure><p><strong>Como o tornamos equivalente ao<strong> <code>append()</code></strong>?</strong></p><ul><li>Para que ambos os métodos funcionem da mesma maneira, o valor de index (índice) precisará ser igual ao comprimento da lista (<code>len(&lt;list&gt;)</code>). Assim, o elemento desejado será adicionado sempre no final da lista.</li></ul><p>Confira um exemplo que comprova que o resultado do uso do <code>insert()</code> com os argumentos apresentados equivale ao resultado do <code>append()</code>:</p><pre><code class="language-python">&gt;&gt;&gt; musical_notes = ["C", "D", "E", "F", "G", "A"]
&gt;&gt;&gt; musical_notes.insert(len(musical_notes), "B")
&gt;&gt;&gt; musical_notes
['C', 'D', 'E', 'F', 'G', 'A', 'B']</code></pre><p>Contudo, usar o <code>append()</code> é muito mais conciso e prático. Portanto, neste caso, o recomendado é optar pelo <code>append()</code>.</p><h2 id="-equival-ncia-entre-append-e-o-fatiamento-de-listas-slicing-"><strong><strong>🔸 </strong></strong>Equivalência entre append e o fatiamento de listas (slicin<strong><strong>g</strong>)</strong></h2><p>Há também uma equivalência interessante entre o método <code>append()</code> e o fatiamento de listas.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/02/image-62.png" class="kg-image" alt="image-62" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/02/image-62.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/02/image-62.png 896w" sizes="(min-width: 720px) 720px" width="896" height="272" loading="lazy"><figcaption>A lista que você quer modificar (laranja) e o elemento que você quer inserir (verde)</figcaption></figure><p>Essa sintaxe basicamente adiciona ao final da lista o elemento <code>[&lt;elem&gt;]</code> desejado. Confira como o resultado é o mesmo:</p><pre><code class="language-python">&gt;&gt;&gt; musical_notes = ["C", "D", "E", "F", "G", "A"]
&gt;&gt;&gt; musical_notes[len(musical_notes):] = ["B"]
&gt;&gt;&gt; musical_notes
['C', 'D', 'E', 'F', 'G', 'A', 'B']</code></pre><p>Para fins teóricos, essas alternativas são interessantes, mas, na prática, normalmente usamos o método <code>append()</code>, pois é um método preciso, conciso e fácil de usar, o que faz dele um recurso valioso do Python.</p><p><strong>Eu espero que você goste deste artigo e faça bom proveito dele<strong>. </strong></strong>Agora você já sabe como trabalhar com o <code>append()</code> em seus projetos de Python. Conheça os <a href="https://www.udemy.com/user/estefania-cn/">cursos on-line da autora</a> e siga-a no <a href="https://twitter.com/EstefaniaCassN">Twitter</a>. ⭐️</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Como compilar seu código C++ no Visual Studio Code ]]>
                </title>
                <description>
                    <![CDATA[ > Observação: o autor publicou este mesmo artigo no blog pessoal aqui [https://blog.bolajiayodeji.com/how-to-compile-your-c-code-in-visual-studio-code] . O C++ é uma linguagem de programação de nível médio, de propósito geral, multiparadigma, compilada (geralmente), de formato livre e estaticamente tipada. Simplificando, o C++ é uma linguagem de programação sofisticada, eficiente e de propósito geral ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/como-compilar-seu-codigo-cpp-no-visual-studio-code/</link>
                <guid isPermaLink="false">61ed9f7fb5028e04fdf66769</guid>
                
                    <category>
                        <![CDATA[ C++ ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ João Felipe Haas ]]>
                </dc:creator>
                <pubDate>Sun, 30 Jan 2022 16:59:36 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/01/banner-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-compile-your-c-code-in-visual-studio-code/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to compile your C++ code in Visual Studio Code</a>
      </p><blockquote>Observação: o autor publicou este mesmo artigo no blog pessoal <a href="https://blog.bolajiayodeji.com/how-to-compile-your-c-code-in-visual-studio-code">aqui</a>.</blockquote><p>O C++ é uma linguagem de programação de nível médio, de propósito geral, multiparadigma, compilada (geralmente), de formato livre e estaticamente tipada.</p><p>Simplificando, o C++ é uma linguagem de programação sofisticada, eficiente e de propósito geral baseada em C.</p><p>Ela foi desenvolvida por <a href="http://www.stroustrup.com/">Bjarne Stroustrup</a>, em 1979.</p><p>Uma das principais características do C++ é o compilador. Ele é usado para compilar e executar o código em C++.</p><blockquote>Um compilador é um programa especial, que processa instruções escritas em uma linguagem de programação específica, como o C++, e as transforma em linguagem de máquina ou "código" que o processador de um computador é capaz de entender e usar.</blockquote><p>Na verdade, escrevi este artigo porque tive um trabalho em C++ que exigia o uso de um compilador. Como de costume, todo mundo usa a <a href="http://www.codeblocks.org/">IDE CodeBlocks</a> e a <a href="https://visualstudio.microsoft.com/">IDE Visual Studio</a>. Porém, eu uso o Visual Studio Code para todas as minhas tarefas de programação.</p><p>Como estava acostumado com ele, comecei a pesquisar uma maneira de compilar C++ diretamente dentro do próprio VS Code. É por isso que escrevi este artigo :).</p><p>Nele, eu mostrarei como configurar seu compilador no VS Code e fornecerei links para alguns dos melhores recursos de C++.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/01/giphy.gif" class="kg-image" alt="giphy" width="267" height="200" loading="lazy"></figure><h1 id="pr-requisitos">Pré-requisitos</h1><ul><li>Conhecimento prévio de C++ (se você está aprendendo C++, prestes a começar a aprender ou apenas lendo isso por diversão, tenha em mente que este artigo não é um tutorial básico de C++. Portanto, será necessário algum conhecimento de C++).</li><li>Editor Visual Studio Code.<br>Baixe ele <a href="https://code.visualstudio.com/#alt-downloads">aqui </a>e leia o documento de configuração inicial para <a href="https://code.visualstudio.com/docs/?dv=win">Windows</a>, <a href="https://code.visualstudio.com/docs/?dv=linux64_deb">Linux</a> ou <a href="https://code.visualstudio.com/docs/?dv=osx">Mac</a>.</li><li><strong>Conexão com a Internet (importante!).</strong></li></ul><h3 id="aviso-geral">Aviso Geral</h3><p>Neste artigo, usarei o sistema operacional Windows. Contudo, fornecerei links para recursos que vão ajudar quem utiliza um sistema operacional diferente.</p><p>Vamos começar!</p><h1 id="baixe-e-instale-um-compilador-de-c-">Baixe e instale um compilador de C++</h1><ul><li>Acesse &nbsp;a <a href="https://osdn.net/projects/mingw/">página do mingw</a> e clique no link de "Download" para baixar o arquivo de configuração do MinGW ou clique <a href="https://osdn.net/projects/mingw/downloads/68260/mingw-get-setup.exe/">aqui </a>para baixar diretamente o compilador para Windows, <a href="http://www.mingw.org/wiki/LinuxCrossMinGW">aqui </a>para Linux e <a href="https://brewinstall.org/Install-mingw-w64-on-Mac-with-Brew/">aqui </a>para Mac.</li></ul><blockquote>MinGW é uma contração de "Minimalist GNU for Windows". Trata-se de um ambiente de desenvolvimento minimalista para aplicativos nativos do Microsoft Windows.</blockquote><ul><li>Após o download, instale o MinGW e espere a tela do &nbsp;“MinGW Installation Manager” aparecer.</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/01/Capture1.png" class="kg-image" alt="Capture1" width="597" height="462" loading="lazy"></figure><ul><li>Quando a tela aparecer, clique em <code>mingw32-gcc-g++</code> e selecione “Mark for Installation”.</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/01/Capture2.png" class="kg-image" alt="Capture2" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/01/Capture2.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/01/Capture2.png 993w" sizes="(min-width: 720px) 720px" width="993" height="466" loading="lazy"></figure><ul><li>No menu no canto superior esquerdo, clique em “Installation &nbsp;&gt; Apply Changes”</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/01/Capture3.png" class="kg-image" alt="Capture3" width="221" height="150" loading="lazy"></figure><ul><li>Aguarde até que ele seja instalado completamente. Certifique-se de que você tem conexão com a Internet ao realizar esse procedimento.</li></ul><h1 id="edite-a-vari-vel-de-ambiente-path-para-incluir-o-diret-rio-onde-o-compilador-c-est-localizado">Edite a variável de ambiente PATH para incluir o diretório onde o compilador C++ está localizado</h1><p>PATH é uma variável de ambiente presente em sistemas operacionais Unix, DOS, OS/2 e Microsoft Windows que especifica um conjunto de diretórios onde os programas executáveis estão localizados. Geralmente, cada processo em execução ou sessão de usuário tem sua própria configuração PATH. - <a href="https://pt.wikipedia.org/wiki/Vari%C3%A1vel_de_ambiente">Wikipedia</a></p><p>Após concluir a instalação do MinGW, ele será encontrado em &nbsp;<code>C:\MinGW\bin</code>. Inclua este diretório em sua variável de ambiente PATH. Se você já usa computadores há algum tempo, já deve saber como fazer isso, mas se não souber, aqui vão algumas referências (todas em inglês):</p><ul><li>Clique <a href="https://www.computerhope.com/issues/ch000549.htm">aqui </a>para ver um guia para Windows</li><li>Clique <a href="https://www.cyberciti.biz/faq/unix-linux-adding-path/">aqui</a> para ver um guia para Linux</li><li>Clique <a href="https://hathaway.cc/2008/06/how-to-edit-your-path-environment-variables-on-mac/">aqui </a>para ver um guia para Mac OS</li></ul><h1 id="instale-a-extens-o-code-runner-no-vs-code">Instale a extensão Code Runner no VS Cod<strong><strong>e</strong></strong></h1><p>Agora que temos o nosso compilador configurado, vamos instalar o Code Runner.</p><p>O Code Runner permite que você execute um trecho de código ou um arquivo de código em várias linguagens:</p><blockquote>C, C++, Java, JavaScript, PHP, Python, Perl, Perl 6, Ruby, Go, Lua, Groovy, PowerShell, BAT/CMD, BASH/SH, F# Script, F# (.NET Core), C# Script, C# (.NET Core), VBScript, TypeScript, CoffeeScript, Scala, Swift, Julia, Crystal, OCaml Script, R, AppleScript, Elixir, Visual Basic .NET, Clojure, Haxe, Objective-C, Rust, Racket, AutoHotkey, AutoIt, Kotlin, Dart, Free Pascal, Haskell, Nim, D, Lisp, Kit e comandos personalizados.</blockquote><ul><li>Clique <a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner">aqui</a> para baixá-lo.</li><li>Ou pesquise no marketplace do VS Code.</li></ul><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/01/Capture4.png" class="kg-image" alt="Capture4" width="528" height="139" loading="lazy"></figure><ul><li>Após a instalação, reinicie o VS Code.</li><li>Abra o seu arquivo C++ no VS Code. A seguir, vemos um programa básico de Hello World:</li></ul><pre><code class="language-c">#include &lt;iostream&gt;
using namespace std;
int main() 
{
    cout &lt;&lt; "Hello world!";
    return 0;
}
</code></pre><p>Salve este arquivo como <code>test.cpp</code>.</p><h1 id="execute-seu-c-digo-usando-o-code-runner">Execute seu código usando o Code Runne<strong><strong>r</strong></strong></h1><ul><li>Use o atalho <code>Ctrl+Alt+N</code>.</li><li>Ou pressione F1 e selecione/digite Run Code (Executar o código).</li><li>Ou clique com o botão direito no editor de texto e clique em Run Code no menu de contexto do editor.</li></ul><p>O código será executado e a saída será mostrada na janela de saída. Abra a janela de saída com o atalho Ctrl+.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/01/Capture5-1.png" class="kg-image" alt="Capture5-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/01/Capture5-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/size/w1000/2022/01/Capture5-1.png 1000w, https://www.freecodecamp.org/portuguese/news/content/images/2022/01/Capture5-1.png 1121w" sizes="(min-width: 720px) 720px" width="1121" height="136" loading="lazy"></figure><h1 id="para-parar-o-c-digo-em-execu-o">Para parar o código em execução</h1><ul><li>Use o atalho <code>Ctrl+Alt+M</code>.</li><li>Ou pressione F1 e selecione/digite Stop Code Run (Parar a execução do código).</li><li>Ou clique com o botão direito na janela de saída e clique em Stop Code Run no menu de contexto.</li></ul><p>Viva! Você acabou de configurar com sucesso seu ambiente C++ no VS Code!</p><h1 id="conclus-o">Conclusão</h1><p>Aqui vai uma dica rápida: por padrão, o terminal de saída do VS Code é somente leitura. </p><p>Se você estiver executando um código que exija uma entrada do usuário, você não poderá digitar no terminal. Veja o exemplo a seguir:</p><pre><code class="language-c">#include &lt;iostream&gt;
using namespace std;

const double pi = 3.14159; 

void calculate()
{
  double area; 
  double radius;

  cout&lt;&lt;"Enter Radius: "&lt;&lt;endl; 
  cin&gt;&gt;radius;

  area = pi * radius * radius; 

  cout&lt;&lt;"area is: "&lt;&lt;area&lt;&lt;endl;
 }
 
int main()
{
  calculate(); 
  return 0;
}
</code></pre><p>Você receberá a mensagem: <code>Cannot edit in read-only terminal</code>.<br>Para corrigir isso, você deve habilitar manualmente a opção de leitura/gravação.</p><ul><li>No VS Code, vá em File &gt; Preference &gt; Setting.</li><li>No painel esquerdo, na aba User, encontre a seção de extensões.</li><li>Role e encontre "Run Code Configuration" (Executar configuração de código).</li><li>Role novamente até encontrar a caixa de seleção <code>Run in Terminal</code> (se desejar executar o código no terminal integrado) e marque a caixa.</li></ul><p>OU</p><ul><li>Em seu arquivo <code>setting.json</code> adicione a seguinte linha:</li></ul><pre><code>"code-runner.runInTerminal": true
</code></pre><p>Viva! Você está pronto para começar :).</p><h1 id="refer-ncias-de-c-">Referências de C++</h1><p>Aqui estão algumas referências de C++ (em inglês) para você começar a aprender a linguagem:</p><ul><li><a href="https://www.learncpp.com/">https://www.learncpp.com/</a></li><li><a href="https://www.codecademy.com/learn/learn-c-plus-plus">https://www.codecademy.com/learn/learn-c-plus-plus</a></li><li><a href="https://www.udemy.com/free-learn-c-tutorial-beginners/">https://www.udemy.com/free-learn-c-tutorial-beginners/</a></li><li><a href="https://www.sololearn.com/Course/CPlusPlus/">https://www.sololearn.com/Course/CPlusPlus/</a></li><li><a href="https://www.youtube.com/watch?v=vLnPwxZdW4Y">https://www.youtube.com/watch?v=vLnPwxZdW4Y</a></li><li><a href="https://www.tutorialspoint.com/cplusplus/cpp_useful_resources.htm">https://www.tutorialspoint.com/cplusplus/cpp_useful_resources.htm</a></li><li><a href="https://www.tutorialspoint.com/cplusplus/cpp_useful_resources.htm">https://makeawebsitehub.com/learning-c/</a></li></ul><h1 id="cr-ditos"><strong><strong>Cr</strong>é<strong>dit</strong>o<strong>s</strong></strong></h1><ul><li><a href="http://www.mingw.org/">MinGW Project</a></li><li><a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner">Code Runner</a> por <a href="https://marketplace.visualstudio.com/publishers/formulahendry">Jun Han</a></li></ul><p>Obrigado pela leitura!</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
