<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <atom:link href="https://zulian.dev/feed.xml" rel="self" type="application/rss+xml" />
  <title>zulian.dev</title>
  <link>https://zulian.dev</link>
  <description>Textos sobre tecnologia, software e outras coisas</description>
  <language>pt-BR</language>
  <generator>Tableau v0.30.0</generator>
    <item>
       <title>Python 03 - Estruturas de decisão</title>
       <link>https://zulian.dev/python-03-estruturas-de-decisao/</link>
       <pubDate>Fri, 10 Apr 2026 01:00:00 -04</pubDate>
       <guid>https://zulian.dev/python-03-estruturas-de-decisao/</guid>
       <description><![CDATA[ <script type="module">
  import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
  mermaid.initialize({ startOnLoad: true });
</script>
<h1><a href="#python-03---estruturas-de-decisão" aria-hidden="true" class="anchor" id="python-03---estruturas-de-decisão"></a>Python 03 - Estruturas de decisão</h1>
<p>Você já jogou um RPG onde o personagem escolhe entre atacar, defender ou usar magia? Ou assistiu aquela cena em <em>Matrix</em> em que Morpheus oferece a pílula azul ou a vermelha?</p>
<p>Esses momentos têm algo em comum: uma <strong>decisão</strong> que muda tudo o que acontece depois.</p>
<p>Na programação, é exatamente assim. Programas precisam tomar decisões o tempo todo:</p>
<ul>
<li>se o jogador tem vida suficiente, pode continuar lutando;</li>
<li>se o usuário digitou a senha certa, entra no sistema;</li>
<li>se o personagem chegou ao nível 10, desbloqueia uma habilidade especial;</li>
<li>se o inimigo está com menos de 20% de vida, entra em modo berserk.</li>
</ul>
<p>É aqui que entram as <strong>estruturas de decisão</strong> — e depois desta aula, você vai saber usá-las muito bem.</p>
<hr />
<h2><a href="#objetivo-da-aula" aria-hidden="true" class="anchor" id="objetivo-da-aula"></a>Objetivo da aula</h2>
<p>Ao final desta aula, você será capaz de:</p>
<ul>
<li>entender o que é uma estrutura de decisão e por que ela existe;</li>
<li>usar <code>if</code>, <code>else</code> e <code>elif</code> em Python;</li>
<li>criar condições com operadores de comparação;</li>
<li>combinar condições com operadores lógicos (<code>and</code>, <code>or</code>, <code>not</code>);</li>
<li>trabalhar com valores booleanos (<code>True</code> e <code>False</code>);</li>
<li>resolver problemas reais com decisões no código.</li>
</ul>
<p><strong>Tempo estimado:</strong> 30 minutos</p>
<hr />
<h2><a href="#o-que-é-uma-estrutura-de-decisão" aria-hidden="true" class="anchor" id="o-que-é-uma-estrutura-de-decisão"></a>O que é uma estrutura de decisão?</h2>
<p>Uma estrutura de decisão faz o programa <strong>analisar uma condição</strong> e escolher qual caminho seguir.</p>
<blockquote>
<p>O programa verifica se algo é <strong>verdadeiro</strong> ou <strong>falso</strong> e decide o que executar.</p>
</blockquote>
<p>Pense no Chapéu Seletor de <em>Harry Potter</em>: ele avalia as características do aluno e decide em qual casa colocá-lo. Se for corajoso → Grifinória. Se for leal → Lufa-Lufa. E assim por diante.</p>
<p>Em Python, fazemos isso com três palavras-chave:</p>
<ul>
<li><code>if</code> → <strong>se</strong></li>
<li><code>else</code> → <strong>senão</strong></li>
<li><code>elif</code> → <strong>senão, se</strong> (abreviação de <em>else if</em>)</li>
</ul>
<hr />
<h2><a href="#o-comando-if" aria-hidden="true" class="anchor" id="o-comando-if"></a>O comando <code>if</code></h2>
<p>O <code>if</code> executa um bloco de código <strong>somente se</strong> a condição for verdadeira.</p>
<h3><a href="#sintaxe" aria-hidden="true" class="anchor" id="sintaxe"></a>Sintaxe</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">condição</span>:
</div><div class="line" data-line="2">    <span style="color: #9b9ea4;"># código executado se a condição for verdadeira</span>
</div></code></pre>
<h3><a href="#exemplo--verificando-o-nível-do-jogador" aria-hidden="true" class="anchor" id="exemplo--verificando-o-nível-do-jogador"></a>Exemplo — verificando o nível do jogador</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">15</span>
</div><div class="line" data-line="2">
</div><div class="line" data-line="3"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">10</span>:
</div><div class="line" data-line="4">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Você desbloqueou a habilidade especial!&quot;</span>)
</div></code></pre>
<p><strong>Como ler esse código:</strong></p>
<ul>
<li><code>nivel &gt;= 10</code> é a condição;</li>
<li>se for verdadeira, o <code>print()</code> é executado;</li>
<li>se for falsa, nada acontece e o programa segue em frente.</li>
</ul>
<hr />
<h2><a href="#indentação-a-regra-de-ouro-do-python" aria-hidden="true" class="anchor" id="indentação-a-regra-de-ouro-do-python"></a>Indentação: a regra de ouro do Python</h2>
<p>Python usa <strong>indentação</strong> (os espaços antes do código) para saber quais linhas pertencem a cada bloco.</p>
<p>Se você esquecer a indentação, o programa vai dar erro.</p>
<h3><a href="#-correto" aria-hidden="true" class="anchor" id="-correto"></a>✅ Correto</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">15</span>
</div><div class="line" data-line="2">
</div><div class="line" data-line="3"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">10</span>:
</div><div class="line" data-line="4">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Habilidade desbloqueada!&quot;</span>)
</div></code></pre>
<h3><a href="#-incorreto" aria-hidden="true" class="anchor" id="-incorreto"></a>❌ Incorreto</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">15</span>
</div><div class="line" data-line="2">
</div><div class="line" data-line="3"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">10</span>:
</div><div class="line" data-line="4"><span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Habilidade desbloqueada!&quot;</span>)  <span style="color: #9b9ea4;"># faltam 4 espaços!</span>
</div></code></pre>
<blockquote>
<p><strong>Regra:</strong> use sempre <strong>4 espaços</strong> para cada nível de indentação. A maioria dos editores faz isso automaticamente ao pressionar <code>Tab</code>.</p>
</blockquote>
<hr />
<h2><a href="#operadores-de-comparação" aria-hidden="true" class="anchor" id="operadores-de-comparação"></a>Operadores de comparação</h2>
<p>Para criar condições, usamos operadores que comparam valores.</p>
<h3><a href="#para-números" aria-hidden="true" class="anchor" id="para-números"></a>Para números</h3>
<table>
<thead>
<tr>
<th>Operador</th>
<th>Significado</th>
<th>Exemplo</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>==</code></td>
<td>igual a</td>
<td><code>vida == 100</code></td>
</tr>
<tr>
<td><code>!=</code></td>
<td>diferente de</td>
<td><code>fase != 1</code></td>
</tr>
<tr>
<td><code>&gt;</code></td>
<td>maior que</td>
<td><code>dano &gt; 50</code></td>
</tr>
<tr>
<td><code>&lt;</code></td>
<td>menor que</td>
<td><code>mana &lt; 20</code></td>
</tr>
<tr>
<td><code>&gt;=</code></td>
<td>maior ou igual a</td>
<td><code>nivel &gt;= 5</code></td>
</tr>
<tr>
<td><code>&lt;=</code></td>
<td>menor ou igual a</td>
<td><code>tempo &lt;= 30</code></td>
</tr>
</tbody>
</table>
<h3><a href="#para-texto-strings" aria-hidden="true" class="anchor" id="para-texto-strings"></a>Para texto (strings)</h3>
<table>
<thead>
<tr>
<th>Operador</th>
<th>Significado</th>
<th>Exemplo</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>==</code></td>
<td>igual a</td>
<td><code>classe == &quot;Mago&quot;</code></td>
</tr>
<tr>
<td><code>!=</code></td>
<td>diferente de</td>
<td><code>item != &quot;Espada&quot;</code></td>
</tr>
<tr>
<td><code>in</code></td>
<td>contém</td>
<td><code>&quot;fogo&quot; in habilidade</code></td>
</tr>
<tr>
<td><code>not in</code></td>
<td>não contém</td>
<td><code>&quot;veneno&quot; not in status</code></td>
</tr>
</tbody>
</table>
<h3><a href="#exemplos-rápidos" aria-hidden="true" class="anchor" id="exemplos-rápidos"></a>Exemplos rápidos</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">dano</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">80</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">dano</span> <span style="color: #e0e2ea;">&gt;</span> <span style="color: #e0e2ea;">50</span>:
</div><div class="line" data-line="3">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Golpe crítico!&quot;</span>)
</div></code></pre>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">classe</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Guerreiro&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">classe</span> <span style="color: #e0e2ea;">==</span> <span style="color: #b3f6c0;">&quot;Mago&quot;</span>:
</div><div class="line" data-line="3">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Você pode usar magia.&quot;</span>)
</div></code></pre>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">status</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;envenenado, lento&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #b3f6c0;">&quot;envenenado&quot;</span> <span style="color: #e0e2ea;">in</span> <span style="color: #e0e2ea;">status</span>:
</div><div class="line" data-line="3">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Personagem está sofrendo dano por veneno.&quot;</span>)
</div></code></pre>
<hr />
<h2><a href="#usando-else" aria-hidden="true" class="anchor" id="usando-else"></a>Usando <code>else</code></h2>
<p>O <code>else</code> define o que acontece quando a condição do <code>if</code> for <strong>falsa</strong>. Ele sempre vem depois do <code>if</code> e não tem condição própria.</p>
<h3><a href="#exemplo--verificando-se-o-jogador-sobreviveu" aria-hidden="true" class="anchor" id="exemplo--verificando-se-o-jogador-sobreviveu"></a>Exemplo — verificando se o jogador sobreviveu</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">vida</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">0</span>
</div><div class="line" data-line="2">
</div><div class="line" data-line="3"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">vida</span> <span style="color: #e0e2ea;">&gt;</span> <span style="color: #e0e2ea;">0</span>:
</div><div class="line" data-line="4">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;O personagem ainda está vivo!&quot;</span>)
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Game Over. Tente novamente.&quot;</span>)
</div></code></pre>
<p><strong>O que acontece aqui:</strong></p>
<ul>
<li>se <code>vida &gt; 0</code> for verdadeiro → imprime a primeira mensagem;</li>
<li>caso contrário → cai no <code>else</code> e imprime a segunda.</li>
</ul>
<hr />
<h2><a href="#usando-elif" aria-hidden="true" class="anchor" id="usando-elif"></a>Usando <code>elif</code></h2>
<p>E quando temos <strong>mais de duas possibilidades</strong>? É aí que o <code>elif</code> entra.</p>
<p>Pense na raridade de itens em games como <em>Fortnite</em> ou <em>Diablo</em>:</p>
<ul>
<li>Cinza → Comum</li>
<li>Verde → Incomum</li>
<li>Azul → Raro</li>
<li>Roxo → Épico</li>
<li>Laranja → Lendário</li>
</ul>
<p>Temos 5 possibilidades. Não dá para resolver só com <code>if</code> e <code>else</code>. Precisamos de vários <code>elif</code>.</p>
<h3><a href="#exemplo--classificando-a-raridade-de-um-item" aria-hidden="true" class="anchor" id="exemplo--classificando-a-raridade-de-um-item"></a>Exemplo — classificando a raridade de um item</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">raridade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">4</span>
</div><div class="line" data-line="2">
</div><div class="line" data-line="3"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">raridade</span> <span style="color: #e0e2ea;">==</span> <span style="color: #e0e2ea;">5</span>:
</div><div class="line" data-line="4">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;🟠 Item Lendário!&quot;</span>)
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">raridade</span> <span style="color: #e0e2ea;">==</span> <span style="color: #e0e2ea;">4</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;🟣 Item Épico!&quot;</span>)
</div><div class="line" data-line="7"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">raridade</span> <span style="color: #e0e2ea;">==</span> <span style="color: #e0e2ea;">3</span>:
</div><div class="line" data-line="8">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;🔵 Item Raro.&quot;</span>)
</div><div class="line" data-line="9"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">raridade</span> <span style="color: #e0e2ea;">==</span> <span style="color: #e0e2ea;">2</span>:
</div><div class="line" data-line="10">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;🟢 Item Incomum.&quot;</span>)
</div><div class="line" data-line="11"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="12">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;⚪ Item Comum.&quot;</span>)
</div></code></pre>
<p>Com <code>raridade = 4</code>, o programa imprime: <code>🟣 Item Épico!</code></p>
<h3><a href="#como-funciona" aria-hidden="true" class="anchor" id="como-funciona"></a>Como funciona</h3>
<p>O Python testa as condições <strong>de cima para baixo</strong>. Assim que uma delas for verdadeira, executa o bloco correspondente e <strong>ignora todo o resto</strong>.</p>
<hr />
<h2><a href="#a-ordem-das-condições-importa" aria-hidden="true" class="anchor" id="a-ordem-das-condições-importa"></a>A ordem das condições importa!</h2>
<p>Esse é um dos erros mais comuns de iniciantes. Veja o exemplo:</p>
<h3><a href="#-correto--do-mais-específico-para-o-mais-geral" aria-hidden="true" class="anchor" id="-correto--do-mais-específico-para-o-mais-geral"></a>✅ Correto — do mais específico para o mais geral</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">pontuacao</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">9500</span>
</div><div class="line" data-line="2">
</div><div class="line" data-line="3"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">pontuacao</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">10000</span>:
</div><div class="line" data-line="4">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Rank S — Lendário!&quot;</span>)
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">pontuacao</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">7000</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Rank A — Expert!&quot;</span>)
</div><div class="line" data-line="7"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">pontuacao</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">4000</span>:
</div><div class="line" data-line="8">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Rank B — Veterano.&quot;</span>)
</div><div class="line" data-line="9"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="10">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Rank C — Iniciante.&quot;</span>)
</div></code></pre>
<p>Com <code>pontuacao = 9500</code>, imprime: <code>Rank A — Expert!</code> ✅</p>
<h3><a href="#-com-problema-lógico--do-mais-geral-para-o-mais-específico" aria-hidden="true" class="anchor" id="-com-problema-lógico--do-mais-geral-para-o-mais-específico"></a>❌ Com problema lógico — do mais geral para o mais específico</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">pontuacao</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">9500</span>
</div><div class="line" data-line="2">
</div><div class="line" data-line="3"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">pontuacao</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">4000</span>:
</div><div class="line" data-line="4">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Rank B — Veterano.&quot;</span>)
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">pontuacao</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">7000</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Rank A — Expert!&quot;</span>)
</div><div class="line" data-line="7"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">pontuacao</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">10000</span>:
</div><div class="line" data-line="8">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Rank S — Lendário!&quot;</span>)
</div><div class="line" data-line="9"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="10">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Rank C — Iniciante.&quot;</span>)
</div></code></pre>
<p>Com <code>pontuacao = 9500</code>, imprime: <code>Rank B — Veterano.</code> ❌</p>
<p>A primeira condição (<code>&gt;= 4000</code>) já é verdadeira para 9500, então o Python nem chega a testar as outras. Coloque sempre as condições <strong>mais restritivas primeiro</strong>.</p>
<hr />
<h2><a href="#valores-booleanos-true-e-false" aria-hidden="true" class="anchor" id="valores-booleanos-true-e-false"></a>Valores booleanos: <code>True</code> e <code>False</code></h2>
<p>Python tem um tipo especial de dado chamado <strong>booleano</strong>, que representa apenas dois valores:</p>
<ul>
<li><code>True</code> → verdadeiro</li>
<li><code>False</code> → falso</li>
</ul>
<p>Esses valores aparecem o tempo todo nas estruturas de decisão.</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">invencivel</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">True</span>
</div><div class="line" data-line="2">
</div><div class="line" data-line="3"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">invencivel</span>:
</div><div class="line" data-line="4">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Dano ignorado! O personagem está invencível.&quot;</span>)
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Personagem recebeu dano.&quot;</span>)
</div></code></pre>
<blockquote>
<p><strong>Dica:</strong> quando a variável já é booleana, não precisamos escrever <code>if invencivel == True:</code>. Apenas <code>if invencivel:</code> já funciona — e é considerado mais correto em Python.</p>
</blockquote>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #9b9ea4;"># Desnecessário (mas funciona)</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">invencivel</span> <span style="color: #e0e2ea;">==</span> <span style="color: #8cf8f7;">True</span>:
</div><div class="line" data-line="3">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Invencível!&quot;</span>)
</div><div class="line" data-line="4">
</div><div class="line" data-line="5"><span style="color: #9b9ea4;"># Correto e mais elegante</span>
</div><div class="line" data-line="6"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">invencivel</span>:
</div><div class="line" data-line="7">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Invencível!&quot;</span>)
</div></code></pre>
<hr />
<h2><a href="#operadores-lógicos" aria-hidden="true" class="anchor" id="operadores-lógicos"></a>Operadores lógicos</h2>
<p>Às vezes precisamos <strong>combinar mais de uma condição</strong>. Para isso, usamos:</p>
<ul>
<li><code>and</code> → <strong>e</strong> — todas as condições precisam ser verdadeiras</li>
<li><code>or</code> → <strong>ou</strong> — pelo menos uma condição precisa ser verdadeira</li>
<li><code>not</code> → <strong>não</strong> — inverte o valor lógico</li>
</ul>
<hr />
<h3><a href="#operador-and" aria-hidden="true" class="anchor" id="operador-and"></a>Operador <code>and</code></h3>
<p>Use quando <strong>todas</strong> as condições precisam ser atendidas ao mesmo tempo.</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #9b9ea4;"># Para usar uma habilidade especial no RPG:</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">mana</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">80</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">12</span>
</div><div class="line" data-line="4">
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">mana</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">50</span> <span style="color: #e0e2ea;">and</span> <span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">10</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Você usou Bola de Fogo!&quot;</span>)
</div><div class="line" data-line="7"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="8">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Não é possível usar essa habilidade agora.&quot;</span>)
</div></code></pre>
<p>O personagem só consegue usar a habilidade se tiver mana suficiente <strong>e</strong> for de nível alto o suficiente. As duas condições precisam ser verdadeiras.</p>
<hr />
<h3><a href="#operador-or" aria-hidden="true" class="anchor" id="operador-or"></a>Operador <code>or</code></h3>
<p>Use quando <strong>pelo menos uma</strong> das condições precisa ser atendida.</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #9b9ea4;"># Formas de entrar em uma área VIP do jogo:</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">tem_passe_vip</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">False</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">rank</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;S&quot;</span>
</div><div class="line" data-line="4">
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">tem_passe_vip</span> <span style="color: #e0e2ea;">or</span> <span style="color: #e0e2ea;">rank</span> <span style="color: #e0e2ea;">==</span> <span style="color: #b3f6c0;">&quot;S&quot;</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Acesso à área VIP liberado!&quot;</span>)
</div><div class="line" data-line="7"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="8">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Acesso negado.&quot;</span>)
</div></code></pre>
<p>O jogador pode entrar se tiver o passe VIP <strong>ou</strong> se for rank S. Qualquer uma das duas já é suficiente.</p>
<hr />
<h3><a href="#operador-not" aria-hidden="true" class="anchor" id="operador-not"></a>Operador <code>not</code></h3>
<p>Use para <strong>inverter</strong> uma condição.</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">em_pausa</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">False</span>
</div><div class="line" data-line="2">
</div><div class="line" data-line="3"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">not</span> <span style="color: #e0e2ea;">em_pausa</span>:
</div><div class="line" data-line="4">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;O jogo está rodando.&quot;</span>)
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;O jogo está pausado.&quot;</span>)
</div></code></pre>
<p><code>em_pausa</code> é <code>False</code>. <code>not False</code> vira <code>True</code>. Então o programa entra no <code>if</code> e imprime <code>&quot;O jogo está rodando.&quot;</code>.</p>
<hr />
<h2><a href="#comparando-texto-maiúsculas-e-minúsculas-importam" aria-hidden="true" class="anchor" id="comparando-texto-maiúsculas-e-minúsculas-importam"></a>Comparando texto: maiúsculas e minúsculas importam!</h2>
<p>Python diferencia letras maiúsculas de minúsculas nas comparações. Isso causa muita confusão!</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">personagem</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Link&quot;</span>
</div><div class="line" data-line="2">
</div><div class="line" data-line="3"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">personagem</span> <span style="color: #e0e2ea;">==</span> <span style="color: #b3f6c0;">&quot;link&quot;</span>:
</div><div class="line" data-line="4">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Personagem encontrado.&quot;</span>)
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Personagem não encontrado.&quot;</span>)
</div></code></pre>
<p>Vai imprimir <code>&quot;Personagem não encontrado.&quot;</code> porque <code>&quot;Link&quot;</code> e <code>&quot;link&quot;</code> são strings diferentes para o Python.</p>
<blockquote>
<p><strong>Dica prática:</strong> para comparar sem se preocupar com maiúsculas, use <code>.lower()</code> para converter tudo para minúsculas antes de comparar:</p>
</blockquote>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">personagem</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;LINK&quot;</span>
</div><div class="line" data-line="2">
</div><div class="line" data-line="3"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">personagem</span>.<span style="color: #a6dbff;">lower</span>() <span style="color: #e0e2ea;">==</span> <span style="color: #b3f6c0;">&quot;link&quot;</span>:
</div><div class="line" data-line="4">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Personagem encontrado!&quot;</span>)
</div></code></pre>
<hr />
<h2><a href="#exemplos-práticos-completos" aria-hidden="true" class="anchor" id="exemplos-práticos-completos"></a>Exemplos práticos completos</h2>
<h3><a href="#exemplo-1--sistema-de-dificuldade-de-um-jogo" aria-hidden="true" class="anchor" id="exemplo-1--sistema-de-dificuldade-de-um-jogo"></a>Exemplo 1 — Sistema de dificuldade de um jogo</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">dificuldade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;dificil&quot;</span>
</div><div class="line" data-line="2">
</div><div class="line" data-line="3"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">dificuldade</span> <span style="color: #e0e2ea;">==</span> <span style="color: #b3f6c0;">&quot;facil&quot;</span>:
</div><div class="line" data-line="4">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Inimigos com 50% de vida. Boa sorte!&quot;</span>)
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">dificuldade</span> <span style="color: #e0e2ea;">==</span> <span style="color: #b3f6c0;">&quot;normal&quot;</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Inimigos com 100% de vida. Divirta-se!&quot;</span>)
</div><div class="line" data-line="7"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">dificuldade</span> <span style="color: #e0e2ea;">==</span> <span style="color: #b3f6c0;">&quot;dificil&quot;</span>:
</div><div class="line" data-line="8">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Inimigos com 200% de vida. Você foi avisado.&quot;</span>)
</div><div class="line" data-line="9"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="10">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Dificuldade desconhecida.&quot;</span>)
</div></code></pre>
<hr />
<h3><a href="#exemplo-2--verificando-se-um-personagem-pode-equipar-uma-arma" aria-hidden="true" class="anchor" id="exemplo-2--verificando-se-um-personagem-pode-equipar-uma-arma"></a>Exemplo 2 — Verificando se um personagem pode equipar uma arma</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">classe</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Guerreiro&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">8</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">arma</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Machado do Caos&quot;</span>
</div><div class="line" data-line="4">
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">classe</span> <span style="color: #e0e2ea;">==</span> <span style="color: #b3f6c0;">&quot;Guerreiro&quot;</span> <span style="color: #e0e2ea;">and</span> <span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">5</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">f&quot;Você equipou </span><span style="color: #8cf8f7;">&lbrace;</span><span style="color: #e0e2ea;">arma</span><span style="color: #8cf8f7;">&rbrace;</span><span style="color: #b3f6c0;">!&quot;</span>)
</div><div class="line" data-line="7"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">classe</span> <span style="color: #e0e2ea;">!=</span> <span style="color: #b3f6c0;">&quot;Guerreiro&quot;</span>:
</div><div class="line" data-line="8">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Apenas Guerreiros podem usar essa arma.&quot;</span>)
</div><div class="line" data-line="9"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="10">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Você precisa ser nível 5 ou superior.&quot;</span>)
</div></code></pre>
<hr />
<h3><a href="#exemplo-3--status-do-personagem-após-uma-batalha" aria-hidden="true" class="anchor" id="exemplo-3--status-do-personagem-após-uma-batalha"></a>Exemplo 3 — Status do personagem após uma batalha</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">vida</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">15</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">mana</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">0</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">ouro</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">320</span>
</div><div class="line" data-line="4">
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">vida</span> <span style="color: #e0e2ea;">&lt;=</span> <span style="color: #e0e2ea;">20</span> <span style="color: #e0e2ea;">and</span> <span style="color: #e0e2ea;">mana</span> <span style="color: #e0e2ea;">==</span> <span style="color: #e0e2ea;">0</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;⚠️ Situação crítica! Vida baixa e sem mana.&quot;</span>)
</div><div class="line" data-line="7"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">vida</span> <span style="color: #e0e2ea;">&lt;=</span> <span style="color: #e0e2ea;">20</span>:
</div><div class="line" data-line="8">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;❤️ Vida baixa! Vá se curar.&quot;</span>)
</div><div class="line" data-line="9"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">mana</span> <span style="color: #e0e2ea;">==</span> <span style="color: #e0e2ea;">0</span>:
</div><div class="line" data-line="10">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;🔵 Sem mana! Descanse para recuperar.&quot;</span>)
</div><div class="line" data-line="11"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="12">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;✅ Personagem em boas condições.&quot;</span>)
</div></code></pre>
<hr />
<h3><a href="#exemplo-4--sistema-de-conquistas" aria-hidden="true" class="anchor" id="exemplo-4--sistema-de-conquistas"></a>Exemplo 4 — Sistema de conquistas</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">inimigos_derrotados</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">150</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">chefe_derrotado</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">True</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">mortes</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">0</span>
</div><div class="line" data-line="4">
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">inimigos_derrotados</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">100</span> <span style="color: #e0e2ea;">and</span> <span style="color: #e0e2ea;">chefe_derrotado</span> <span style="color: #e0e2ea;">and</span> <span style="color: #e0e2ea;">mortes</span> <span style="color: #e0e2ea;">==</span> <span style="color: #e0e2ea;">0</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;🏆 Conquista desbloqueada: Guerreiro Implacável!&quot;</span>)
</div><div class="line" data-line="7"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">chefe_derrotado</span> <span style="color: #e0e2ea;">and</span> <span style="color: #e0e2ea;">mortes</span> <span style="color: #e0e2ea;">==</span> <span style="color: #e0e2ea;">0</span>:
</div><div class="line" data-line="8">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;🥇 Conquista desbloqueada: Vitória Perfeita!&quot;</span>)
</div><div class="line" data-line="9"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">chefe_derrotado</span>:
</div><div class="line" data-line="10">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;⚔️ Conquista desbloqueada: Caçador de Chefes.&quot;</span>)
</div><div class="line" data-line="11"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="12">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Continue jogando para desbloquear conquistas.&quot;</span>)
</div></code></pre>
<hr />
<h2><a href="#erros-comuns--aprenda-com-eles" aria-hidden="true" class="anchor" id="erros-comuns--aprenda-com-eles"></a>Erros comuns — aprenda com eles</h2>
<h3><a href="#-erro-1-usar--em-vez-de-" aria-hidden="true" class="anchor" id="-erro-1-usar--em-vez-de-"></a>❌ Erro 1: usar <code>=</code> em vez de <code>==</code></h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #9b9ea4;"># Errado — isso causa um SyntaxError</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">vida</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">0</span>:
</div><div class="line" data-line="3">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Game Over&quot;</span>)
</div><div class="line" data-line="4">
</div><div class="line" data-line="5"><span style="color: #9b9ea4;"># Correto</span>
</div><div class="line" data-line="6"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">vida</span> <span style="color: #e0e2ea;">==</span> <span style="color: #e0e2ea;">0</span>:
</div><div class="line" data-line="7">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Game Over&quot;</span>)
</div></code></pre>
<p><code>=</code> é atribuição (guarda um valor). <code>==</code> é comparação (verifica se são iguais).</p>
<h3><a href="#-erro-2-esquecer-os-dois-pontos-" aria-hidden="true" class="anchor" id="-erro-2-esquecer-os-dois-pontos-"></a>❌ Erro 2: esquecer os dois pontos <code>:</code></h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #9b9ea4;"># Errado</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">10</span>
</div><div class="line" data-line="3">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Level up!&quot;</span>)
</div><div class="line" data-line="4">
</div><div class="line" data-line="5"><span style="color: #9b9ea4;"># Correto</span>
</div><div class="line" data-line="6"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">10</span>:
</div><div class="line" data-line="7">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Level up!&quot;</span>)
</div></code></pre>
<h3><a href="#-erro-3-esquecer-a-indentação" aria-hidden="true" class="anchor" id="-erro-3-esquecer-a-indentação"></a>❌ Erro 3: esquecer a indentação</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #9b9ea4;"># Errado — IndentationError</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">10</span>:
</div><div class="line" data-line="3"><span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Level up!&quot;</span>)
</div><div class="line" data-line="4">
</div><div class="line" data-line="5"><span style="color: #9b9ea4;"># Correto</span>
</div><div class="line" data-line="6"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">10</span>:
</div><div class="line" data-line="7">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Level up!&quot;</span>)
</div></code></pre>
<h3><a href="#-erro-4-ordem-errada-nas-condições" aria-hidden="true" class="anchor" id="-erro-4-ordem-errada-nas-condições"></a>❌ Erro 4: ordem errada nas condições</h3>
<p>Sempre teste as condições mais específicas (valores maiores ou mais restritos) <strong>antes</strong> das mais gerais.</p>
<hr />
<h2><a href="#fluxo-mental-para-criar-uma-decisão" aria-hidden="true" class="anchor" id="fluxo-mental-para-criar-uma-decisão"></a>Fluxo mental para criar uma decisão</h2>
<p>Quando for escrever um <code>if</code>, siga esse raciocínio:</p>
<ol>
<li><strong>O que eu quero verificar?</strong> (qual é a condição?)</li>
<li><strong>Quais são as possibilidades?</strong> (quantos caminhos existem?)</li>
<li><strong>Qual condição deve ser testada primeiro?</strong> (a mais restritiva!)</li>
<li><strong>O que deve acontecer em cada caso?</strong> (qual código executar?)</li>
</ol>
<hr />
<h2><a href="#interagindo-com-o-usuário" aria-hidden="true" class="anchor" id="interagindo-com-o-usuário"></a>Interagindo com o usuário</h2>
<p>Para tornar o programa dinâmico, podemos usar <code>input()</code> para receber dados do usuário.</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome_personagem</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">input</span>(<span style="color: #b3f6c0;">&quot;Digite o nome do seu personagem: &quot;</span>)
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">int</span>(<span style="color: #8cf8f7;">input</span>(<span style="color: #b3f6c0;">&quot;Digite o nível do personagem: &quot;</span>))
</div><div class="line" data-line="3">
</div><div class="line" data-line="4"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">50</span>:
</div><div class="line" data-line="5">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">f&quot;</span><span style="color: #8cf8f7;">&lbrace;</span><span style="color: #e0e2ea;">nome_personagem</span><span style="color: #8cf8f7;">&rbrace;</span><span style="color: #b3f6c0;"> é um veterano de elite!&quot;</span>)
</div><div class="line" data-line="6"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">nivel</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">20</span>:
</div><div class="line" data-line="7">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">f&quot;</span><span style="color: #8cf8f7;">&lbrace;</span><span style="color: #e0e2ea;">nome_personagem</span><span style="color: #8cf8f7;">&rbrace;</span><span style="color: #b3f6c0;"> está progredindo bem.&quot;</span>)
</div><div class="line" data-line="8"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="9">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">f&quot;</span><span style="color: #8cf8f7;">&lbrace;</span><span style="color: #e0e2ea;">nome_personagem</span><span style="color: #8cf8f7;">&rbrace;</span><span style="color: #b3f6c0;"> ainda está começando sua jornada.&quot;</span>)
</div></code></pre>
<blockquote>
<p><strong>Importante:</strong> <code>input()</code> sempre retorna texto. Se quiser um número, use <code>int()</code> para inteiro ou <code>float()</code> para decimal.</p>
</blockquote>
<hr />
<h2><a href="#resumo-da-aula" aria-hidden="true" class="anchor" id="resumo-da-aula"></a>Resumo da aula</h2>
<p>Nesta aula você aprendeu que:</p>
<ul>
<li>estruturas de decisão permitem que o programa escolha um caminho baseado em condições;</li>
<li><code>if</code> executa um bloco quando a condição é verdadeira;</li>
<li><code>else</code> executa um bloco alternativo quando a condição é falsa;</li>
<li><code>elif</code> permite testar novas condições entre o <code>if</code> e o <code>else</code>;</li>
<li>operadores de comparação (<code>==</code>, <code>!=</code>, <code>&gt;</code>, <code>&lt;</code>, <code>&gt;=</code>, <code>&lt;=</code>, <code>in</code>, <code>not in</code>) constroem as condições;</li>
<li>operadores lógicos (<code>and</code>, <code>or</code>, <code>not</code>) combinam múltiplas condições;</li>
<li><code>True</code> e <code>False</code> são valores booleanos usados o tempo todo em decisões;</li>
<li>a <strong>ordem das condições</strong> e a <strong>indentação</strong> são regras fundamentais do Python.</li>
</ul>
<hr />
<h2><a href="#fechamento" aria-hidden="true" class="anchor" id="fechamento"></a>Fechamento</h2>
<p>Com as estruturas de decisão, seus programas deixam de ser sequências fixas e passam a <strong>reagir</strong> a situações diferentes — como um game que responde às escolhas do jogador.</p>
<p>Na próxima aula, você vai aprender sobre <strong>estruturas de repetição</strong>, que permitirão executar blocos de código várias vezes. Combinadas com decisões, elas são a base para criar lógicas de jogo, menus, sistemas de pontuação e muito mais.</p>
<hr />
<h2><a href="#quiz-rápido" aria-hidden="true" class="anchor" id="quiz-rápido"></a>Quiz rápido</h2>
<ol>
<li>Qual é a diferença entre <code>=</code> e <code>==</code> em Python?</li>
<li>O que acontece se você esquecer a indentação dentro de um <code>if</code>?</li>
<li>Quando devemos usar <code>elif</code> em vez de vários <code>if</code> separados?</li>
<li>O operador <code>and</code> exige que quantas condições sejam verdadeiras?</li>
<li>O que <code>not True</code> retorna?</li>
<li>Por que a ordem das condições em um <code>if/elif/else</code> importa?</li>
<li>Se uma variável booleana se chama <code>conectado</code>, como você escreve o <code>if</code> corretamente?</li>
</ol>
<hr />
<h2><a href="#gabarito-do-quiz" aria-hidden="true" class="anchor" id="gabarito-do-quiz"></a>Gabarito do quiz</h2>
<ol>
<li><code>=</code> atribui um valor a uma variável; <code>==</code> compara dois valores.</li>
<li>O Python lança um <code>IndentationError</code> e o programa não executa.</li>
<li>Quando as condições são mutuamente exclusivas e fazem parte da mesma verificação — o <code>elif</code> garante que apenas um bloco seja executado.</li>
<li>Todas — o <code>and</code> só retorna <code>True</code> quando todas as partes são verdadeiras.</li>
<li><code>False</code> — o <code>not</code> inverte o valor lógico.</li>
<li>O Python testa de cima para baixo e para na primeira condição verdadeira; se a ordem estiver errada, uma condição mais genérica pode &quot;capturar&quot; casos que deveriam ir para outra.</li>
<li><code>if conectado:</code> — variáveis booleanas não precisam de <code>== True</code>.</li>
</ol>
<hr />
<h2><a href="#exercícios-resolvidos" aria-hidden="true" class="anchor" id="exercícios-resolvidos"></a>Exercícios resolvidos</h2>
<h3><a href="#exercício-1--verificando-tipo-de-movimento-em-xadrez" aria-hidden="true" class="anchor" id="exercício-1--verificando-tipo-de-movimento-em-xadrez"></a>Exercício 1 — Verificando tipo de movimento em xadrez</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">peca</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Bispo&quot;</span>
</div><div class="line" data-line="2">
</div><div class="line" data-line="3"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">peca</span> <span style="color: #e0e2ea;">==</span> <span style="color: #b3f6c0;">&quot;Torre&quot;</span>:
</div><div class="line" data-line="4">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;A Torre se move em linha reta.&quot;</span>)
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">peca</span> <span style="color: #e0e2ea;">==</span> <span style="color: #b3f6c0;">&quot;Bispo&quot;</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;O Bispo se move na diagonal.&quot;</span>)
</div><div class="line" data-line="7"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">peca</span> <span style="color: #e0e2ea;">==</span> <span style="color: #b3f6c0;">&quot;Cavalo&quot;</span>:
</div><div class="line" data-line="8">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;O Cavalo se move em L.&quot;</span>)
</div><div class="line" data-line="9"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="10">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Peça desconhecida.&quot;</span>)
</div></code></pre>
<hr />
<h3><a href="#exercício-2--sistema-de-temperatura-de-um-servidor" aria-hidden="true" class="anchor" id="exercício-2--sistema-de-temperatura-de-um-servidor"></a>Exercício 2 — Sistema de temperatura de um servidor</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">temperatura</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">85</span>
</div><div class="line" data-line="2">
</div><div class="line" data-line="3"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">temperatura</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">90</span>:
</div><div class="line" data-line="4">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;🔴 CRÍTICO: Desligando servidor imediatamente!&quot;</span>)
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">temperatura</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">75</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;🟡 ALERTA: Temperatura elevada, verificar resfriamento.&quot;</span>)
</div><div class="line" data-line="7"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="8">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;🟢 OK: Temperatura normal.&quot;</span>)
</div></code></pre>
<hr />
<h3><a href="#exercício-3--classificação-de-personagem-por-atributos" aria-hidden="true" class="anchor" id="exercício-3--classificação-de-personagem-por-atributos"></a>Exercício 3 — Classificação de personagem por atributos</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">forca</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">70</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">inteligencia</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">40</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">agilidade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">55</span>
</div><div class="line" data-line="4">
</div><div class="line" data-line="5"><span style="color: #e0e2ea; font-weight: bold;">if</span> <span style="color: #e0e2ea;">forca</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">70</span> <span style="color: #e0e2ea;">and</span> <span style="color: #e0e2ea;">inteligencia</span> <span style="color: #e0e2ea;">&lt;</span> <span style="color: #e0e2ea;">50</span>:
</div><div class="line" data-line="6">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Classe recomendada: Guerreiro Bárbaro&quot;</span>)
</div><div class="line" data-line="7"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">inteligencia</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">70</span>:
</div><div class="line" data-line="8">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Classe recomendada: Mago Arcano&quot;</span>)
</div><div class="line" data-line="9"><span style="color: #e0e2ea; font-weight: bold;">elif</span> <span style="color: #e0e2ea;">agilidade</span> <span style="color: #e0e2ea;">&gt;=</span> <span style="color: #e0e2ea;">70</span>:
</div><div class="line" data-line="10">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Classe recomendada: Assassino das Sombras&quot;</span>)
</div><div class="line" data-line="11"><span style="color: #e0e2ea; font-weight: bold;">else</span>:
</div><div class="line" data-line="12">    <span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Classe recomendada: Aventureiro Genérico&quot;</span>)
</div></code></pre>
<hr />
<h2><a href="#exercícios-para-praticar" aria-hidden="true" class="anchor" id="exercícios-para-praticar"></a>Exercícios para praticar</h2>
<div class=" quiz-block not-prose my-8 max-w-2xl rounded border-2 border-retro-cyan bg-retro-indigo/40 p-5 shadow-neon-cyan " x-data="{ selections: [null, null, null, null, null, null, null, null, null, null], correctIdxs: [1, 1, 2, 1, 1, 2, 1, 1, 2, 0] }" role="region" aria-label="Quiz de fixação (10 perguntas)" > <section class="" aria-label="Pergunta 1"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Qual será a saída do código abaixo?</p><div class="quiz-code-wrap my-3 overflow-hidden rounded border border-retro-purple/50"><div class="flex items-center justify-between bg-retro-bg/80 px-3 py-1 text-xs text-retro-purple/80"><span class="quiz-code-lang">python</span><span>code</span></div><pre class="not-prose m-0 overflow-x-auto bg-black/60 p-3 text-xs leading-relaxed"><code class="language-python">energia = 30&#10;escudo = True&#10;&#10;if energia &gt; 50 and escudo:&#10;    print(&quot;Atacar!&quot;)&#10;elif energia &gt; 50 or escudo:&#10;    print(&quot;Defender!&quot;)&#10;else:&#10;    print(&quot;Fugir!&quot;)</code></pre></div> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[0] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[0] !== null && 0 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[0] !== null && selections[0] === 0 && 0 !== 1, 'border-retro-purple/50 text-white/50': selections[0] !== null && selections[0] !== 0 && 0 !== 1 }" @click="selections[0] = 0" ><span class="block">Atacar!</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[0] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[0] !== null && 1 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[0] !== null && selections[0] === 1 && 1 !== 1, 'border-retro-purple/50 text-white/50': selections[0] !== null && selections[0] !== 1 && 1 !== 1 }" @click="selections[0] = 1" ><span class="block">Defender!</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[0] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[0] !== null && 2 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[0] !== null && selections[0] === 2 && 2 !== 1, 'border-retro-purple/50 text-white/50': selections[0] !== null && selections[0] !== 2 && 2 !== 1 }" @click="selections[0] = 2" ><span class="block">Fugir!</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[0] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[0] !== null && 3 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[0] !== null && selections[0] === 3 && 3 !== 1, 'border-retro-purple/50 text-white/50': selections[0] !== null && selections[0] !== 3 && 3 !== 1 }" @click="selections[0] = 3" ><span class="block">O código dá erro.</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[0] !== null && selections[0] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Para entrar no primeiro bloco, <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">energia &gt; 50</code> precisaria ser verdadeiro. Como energia é 30, essa condição é falsa — e o <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">and</code> exige que todas sejam verdadeiras.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[0] !== null && selections[0] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Correto! O primeiro <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">if</code> falha porque <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">energia &gt; 50</code> é falso. No <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">elif</code>, o <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">or</code> só precisa que uma seja verdadeira — e <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">escudo</code> é <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">True</code>. Então entra no <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">elif</code>.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[0] !== null && selections[0] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. O <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">else</code> só seria executado se nenhuma condição anterior fosse verdadeira. Como <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">escudo</code> é <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">True</code>, o <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">elif</code> já captura o caso.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[0] !== null && selections[0] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. O código está sintaticamente correto e executa normalmente.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 2"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Um jogo precisa verificar se um personagem pode usar a habilidade &quot;Teletransporte&quot;. A regra é: o personagem precisa ser da classe &quot;Mago&quot; OU ter o item &quot;Cristal Arcano&quot;, E em ambos os casos precisa ter pelo menos 60 de mana. Qual código implementa isso corretamente?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[1] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[1] !== null && 0 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[1] !== null && selections[1] === 0 && 0 !== 1, 'border-retro-purple/50 text-white/50': selections[1] !== null && selections[1] !== 0 && 0 !== 1 }" @click="selections[1] = 0" ><span class="mt-1 block overflow-x-auto rounded border border-retro-purple/40 bg-black/50 p-3"><span class="mb-1 block text-[10px] uppercase text-retro-purple/80">python</span><code class="block whitespace-pre font-mono text-retro-cyan">if classe == &quot;Mago&quot; or tem_cristal and mana &gt;= 60:</code></span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[1] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[1] !== null && 1 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[1] !== null && selections[1] === 1 && 1 !== 1, 'border-retro-purple/50 text-white/50': selections[1] !== null && selections[1] !== 1 && 1 !== 1 }" @click="selections[1] = 1" ><span class="mt-1 block overflow-x-auto rounded border border-retro-purple/40 bg-black/50 p-3"><span class="mb-1 block text-[10px] uppercase text-retro-purple/80">python</span><code class="block whitespace-pre font-mono text-retro-cyan">if (classe == &quot;Mago&quot; or tem_cristal) and mana &gt;= 60:</code></span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[1] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[1] !== null && 2 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[1] !== null && selections[1] === 2 && 2 !== 1, 'border-retro-purple/50 text-white/50': selections[1] !== null && selections[1] !== 2 && 2 !== 1 }" @click="selections[1] = 2" ><span class="mt-1 block overflow-x-auto rounded border border-retro-purple/40 bg-black/50 p-3"><span class="mb-1 block text-[10px] uppercase text-retro-purple/80">python</span><code class="block whitespace-pre font-mono text-retro-cyan">if classe == &quot;Mago&quot; and tem_cristal or mana &gt;= 60:</code></span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[1] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[1] !== null && 3 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[1] !== null && selections[1] === 3 && 3 !== 1, 'border-retro-purple/50 text-white/50': selections[1] !== null && selections[1] !== 3 && 3 !== 1 }" @click="selections[1] = 3" ><span class="mt-1 block overflow-x-auto rounded border border-retro-purple/40 bg-black/50 p-3"><span class="mb-1 block text-[10px] uppercase text-retro-purple/80">python</span><code class="block whitespace-pre font-mono text-retro-cyan">if classe == &quot;Mago&quot; and mana &gt;= 60 or tem_cristal and mana &gt;= 60:</code></span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[1] !== null && selections[1] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Cuidado! Em Python, <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">and</code> tem precedência sobre <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">or</code>. Esse código seria interpretado como <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">classe == &quot;Mago&quot; or (tem_cristal and mana &gt;= 60)</code>, o que permite um Mago sem mana usar a habilidade.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[1] !== null && selections[1] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Correto! Os parênteses garantem que o <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">or</code> seja avaliado primeiro, exigindo que a condição de mana se aplique a ambos os casos.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[1] !== null && selections[1] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Esse código permitiria qualquer personagem com 60 de mana usar a habilidade, independente da classe ou item.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[1] !== null && selections[1] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Essa lógica funciona, mas é redundante e desnecessariamente complexa. A opção com parênteses é mais clara e elegante.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 3"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Analise o código abaixo e diga qual mensagem será impressa:</p><div class="quiz-code-wrap my-3 overflow-hidden rounded border border-retro-purple/50"><div class="flex items-center justify-between bg-retro-bg/80 px-3 py-1 text-xs text-retro-purple/80"><span class="quiz-code-lang">python</span><span>code</span></div><pre class="not-prose m-0 overflow-x-auto bg-black/60 p-3 text-xs leading-relaxed"><code class="language-python">pontos = 7500&#10;vidas = 0&#10;chefe_derrotado = True&#10;&#10;if pontos &gt;= 10000 and chefe_derrotado:&#10;    print(&quot;Rank SS&quot;)&#10;elif pontos &gt;= 5000 and chefe_derrotado and vidas &gt; 0:&#10;    print(&quot;Rank S&quot;)&#10;elif pontos &gt;= 5000 and chefe_derrotado:&#10;    print(&quot;Rank A&quot;)&#10;else:&#10;    print(&quot;Rank B&quot;)</code></pre></div> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[2] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[2] !== null && 0 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[2] !== null && selections[2] === 0 && 0 !== 2, 'border-retro-purple/50 text-white/50': selections[2] !== null && selections[2] !== 0 && 0 !== 2 }" @click="selections[2] = 0" ><span class="block">Rank SS</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[2] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[2] !== null && 1 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[2] !== null && selections[2] === 1 && 1 !== 2, 'border-retro-purple/50 text-white/50': selections[2] !== null && selections[2] !== 1 && 1 !== 2 }" @click="selections[2] = 1" ><span class="block">Rank S</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[2] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[2] !== null && 2 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[2] !== null && selections[2] === 2 && 2 !== 2, 'border-retro-purple/50 text-white/50': selections[2] !== null && selections[2] !== 2 && 2 !== 2 }" @click="selections[2] = 2" ><span class="block">Rank A</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[2] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[2] !== null && 3 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[2] !== null && selections[2] === 3 && 3 !== 2, 'border-retro-purple/50 text-white/50': selections[2] !== null && selections[2] !== 3 && 3 !== 2 }" @click="selections[2] = 3" ><span class="block">Rank B</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[2] !== null && selections[2] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Para Rank SS, <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">pontos &gt;= 10000</code> precisaria ser verdadeiro. 7500 não satisfaz essa condição.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[2] !== null && selections[2] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Para Rank S, todas as três condições precisam ser verdadeiras: pontos &gt;= 5000 (✅), chefe_derrotado (✅), e vidas &gt; 0 (❌). Como <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">vidas</code> é 0, essa condição falha.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[2] !== null && selections[2] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Correto! O Rank S falha porque <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">vidas &gt; 0</code> é falso. O próximo <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">elif</code> exige apenas pontos &gt;= 5000 e chefe_derrotado — ambos verdadeiros. Então imprime Rank A.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[2] !== null && selections[2] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. O <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">else</code> só executaria se nenhuma condição anterior fosse verdadeira. O terceiro <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">elif</code> já captura esse caso.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 4"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">O código abaixo tem um bug lógico. Qual é o problema?</p><div class="quiz-code-wrap my-3 overflow-hidden rounded border border-retro-purple/50"><div class="flex items-center justify-between bg-retro-bg/80 px-3 py-1 text-xs text-retro-purple/80"><span class="quiz-code-lang">python</span><span>code</span></div><pre class="not-prose m-0 overflow-x-auto bg-black/60 p-3 text-xs leading-relaxed"><code class="language-python">hp = 45&#10;&#10;if hp &gt;= 0:&#10;    print(&quot;Vivo&quot;)&#10;elif hp &gt;= 50:&#10;    print(&quot;Saudável&quot;)&#10;elif hp &gt;= 80:&#10;    print(&quot;Ótimo&quot;)&#10;else:&#10;    print(&quot;Morto&quot;)</code></pre></div> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[3] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[3] !== null && 0 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[3] !== null && selections[3] === 0 && 0 !== 1, 'border-retro-purple/50 text-white/50': selections[3] !== null && selections[3] !== 0 && 0 !== 1 }" @click="selections[3] = 0" ><span class="block">Falta o <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">else</code> no final.</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[3] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[3] !== null && 1 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[3] !== null && selections[3] === 1 && 1 !== 1, 'border-retro-purple/50 text-white/50': selections[3] !== null && selections[3] !== 1 && 1 !== 1 }" @click="selections[3] = 1" ><span class="block">As condições estão na ordem errada — a mais genérica vem primeiro e captura todos os casos.</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[3] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[3] !== null && 2 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[3] !== null && selections[3] === 2 && 2 !== 1, 'border-retro-purple/50 text-white/50': selections[3] !== null && selections[3] !== 2 && 2 !== 1 }" @click="selections[3] = 2" ><span class="block">O operador <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">&gt;=</code> está errado, deveria ser <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">&gt;</code>.</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[3] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[3] !== null && 3 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[3] !== null && selections[3] === 3 && 3 !== 1, 'border-retro-purple/50 text-white/50': selections[3] !== null && selections[3] !== 3 && 3 !== 1 }" @click="selections[3] = 3" ><span class="block">Falta um <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">and</code> entre as condições.</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[3] !== null && selections[3] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. O <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">else</code> está presente e trataria o caso <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">hp &lt; 0</code>. O problema é outro.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[3] !== null && selections[3] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Correto! <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">hp &gt;= 0</code> é verdadeiro para qualquer valor positivo de hp, então o programa sempre imprime &quot;Vivo&quot; e nunca chega aos outros blocos. As condições mais específicas (&gt;= 80, &gt;= 50) deveriam vir antes.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[3] !== null && selections[3] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. O operador em si não é o problema. A lógica e a ordem das condições é que estão incorretas.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[3] !== null && selections[3] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Cada condição é independente e não precisa de <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">and</code>. O problema é a ordem em que são testadas.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 5"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Qual é a saída do código abaixo?</p><div class="quiz-code-wrap my-3 overflow-hidden rounded border border-retro-purple/50"><div class="flex items-center justify-between bg-retro-bg/80 px-3 py-1 text-xs text-retro-purple/80"><span class="quiz-code-lang">python</span><span>code</span></div><pre class="not-prose m-0 overflow-x-auto bg-black/60 p-3 text-xs leading-relaxed"><code class="language-python">item = &quot;Espada de Fogo&quot;&#10;durabilidade = 100&#10;&#10;if &quot;Veneno&quot; in item and durabilidade &gt; 50:&#10;    print(&quot;Item mágico e resistente.&quot;)&#10;elif &quot;Fogo&quot; in item and durabilidade == 100:&#10;    print(&quot;Item elemental perfeito!&quot;)&#10;elif &quot;Fogo&quot; in item:&#10;    print(&quot;Item elemental danificado.&quot;)&#10;else:&#10;    print(&quot;Item comum.&quot;)</code></pre></div> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[4] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[4] !== null && 0 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[4] !== null && selections[4] === 0 && 0 !== 1, 'border-retro-purple/50 text-white/50': selections[4] !== null && selections[4] !== 0 && 0 !== 1 }" @click="selections[4] = 0" ><span class="block">Item mágico e resistente.</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[4] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[4] !== null && 1 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[4] !== null && selections[4] === 1 && 1 !== 1, 'border-retro-purple/50 text-white/50': selections[4] !== null && selections[4] !== 1 && 1 !== 1 }" @click="selections[4] = 1" ><span class="block">Item elemental perfeito!</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[4] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[4] !== null && 2 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[4] !== null && selections[4] === 2 && 2 !== 1, 'border-retro-purple/50 text-white/50': selections[4] !== null && selections[4] !== 2 && 2 !== 1 }" @click="selections[4] = 2" ><span class="block">Item elemental danificado.</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[4] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[4] !== null && 3 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[4] !== null && selections[4] === 3 && 3 !== 1, 'border-retro-purple/50 text-white/50': selections[4] !== null && selections[4] !== 3 && 3 !== 1 }" @click="selections[4] = 3" ><span class="block">Item comum.</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[4] !== null && selections[4] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">&quot;Veneno&quot; in &quot;Espada de Fogo&quot;</code> é falso — a palavra &quot;Veneno&quot; não está no nome do item.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[4] !== null && selections[4] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Correto! O primeiro <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">if</code> falha porque &quot;Veneno&quot; não está no nome. O segundo <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">elif</code> verifica se &quot;Fogo&quot; está no nome (✅) e se a durabilidade é 100 (✅). Ambas verdadeiras, então imprime essa mensagem.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[4] !== null && selections[4] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Esse <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">elif</code> só seria atingido se o anterior fosse falso. Como <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">durabilidade == 100</code> é verdadeiro, o segundo <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">elif</code> já resolve o caso.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[4] !== null && selections[4] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. O <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">else</code> só executaria se nenhuma condição anterior fosse verdadeira.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 6"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Você quer escrever um código que verifica se um personagem está &quot;furtivo&quot;. A variável <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">furtivo</code> já é booleana. Qual das opções abaixo é a forma MAIS correta em Python?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[5] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[5] !== null && 0 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[5] !== null && selections[5] === 0 && 0 !== 2, 'border-retro-purple/50 text-white/50': selections[5] !== null && selections[5] !== 0 && 0 !== 2 }" @click="selections[5] = 0" ><span class="mt-1 block overflow-x-auto rounded border border-retro-purple/40 bg-black/50 p-3"><span class="mb-1 block text-[10px] uppercase text-retro-purple/80">python</span><code class="block whitespace-pre font-mono text-retro-cyan">if furtivo == True:&#10;    print(&quot;Invisível!&quot;)</code></span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[5] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[5] !== null && 1 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[5] !== null && selections[5] === 1 && 1 !== 2, 'border-retro-purple/50 text-white/50': selections[5] !== null && selections[5] !== 1 && 1 !== 2 }" @click="selections[5] = 1" ><span class="mt-1 block overflow-x-auto rounded border border-retro-purple/40 bg-black/50 p-3"><span class="mb-1 block text-[10px] uppercase text-retro-purple/80">python</span><code class="block whitespace-pre font-mono text-retro-cyan">if furtivo != False:&#10;    print(&quot;Invisível!&quot;)</code></span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[5] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[5] !== null && 2 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[5] !== null && selections[5] === 2 && 2 !== 2, 'border-retro-purple/50 text-white/50': selections[5] !== null && selections[5] !== 2 && 2 !== 2 }" @click="selections[5] = 2" ><span class="mt-1 block overflow-x-auto rounded border border-retro-purple/40 bg-black/50 p-3"><span class="mb-1 block text-[10px] uppercase text-retro-purple/80">python</span><code class="block whitespace-pre font-mono text-retro-cyan">if furtivo:&#10;    print(&quot;Invisível!&quot;)</code></span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[5] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[5] !== null && 3 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[5] !== null && selections[5] === 3 && 3 !== 2, 'border-retro-purple/50 text-white/50': selections[5] !== null && selections[5] !== 3 && 3 !== 2 }" @click="selections[5] = 3" ><span class="mt-1 block overflow-x-auto rounded border border-retro-purple/40 bg-black/50 p-3"><span class="mb-1 block text-[10px] uppercase text-retro-purple/80">python</span><code class="block whitespace-pre font-mono text-retro-cyan">if furtivo = True:&#10;    print(&quot;Invisível!&quot;)</code></span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[5] !== null && selections[5] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Funciona, mas não é a forma idiomática do Python. Comparar uma variável booleana com <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">== True</code> é redundante.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[5] !== null && selections[5] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Funciona, mas é desnecessariamente complexo. Verificar <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">!= False</code> é o mesmo que verificar se é verdadeiro, mas de forma tortuosa.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[5] !== null && selections[5] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Correto! Variáveis booleanas já são, por si só, uma condição. Usar <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">if furtivo:</code> é a forma mais clara, direta e pythonica de escrever isso.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[5] !== null && selections[5] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Isso causa um <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">SyntaxError</code>. Dentro de um <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">if</code>, nunca usamos <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">=</code> (atribuição). O correto seria <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">==</code> — ou simplesmente <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">if furtivo:</code>.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 7"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Qual será a saída do código abaixo?</p><div class="quiz-code-wrap my-3 overflow-hidden rounded border border-retro-purple/50"><div class="flex items-center justify-between bg-retro-bg/80 px-3 py-1 text-xs text-retro-purple/80"><span class="quiz-code-lang">python</span><span>code</span></div><pre class="not-prose m-0 overflow-x-auto bg-black/60 p-3 text-xs leading-relaxed"><code class="language-python">nome = &quot;Zelda&quot;&#10;&#10;if nome == &quot;zelda&quot;:&#10;    print(&quot;Princesa encontrada!&quot;)&#10;elif nome.lower() == &quot;zelda&quot;:&#10;    print(&quot;Personagem identificado com normalização.&quot;)&#10;else:&#10;    print(&quot;Personagem não encontrado.&quot;)</code></pre></div> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[6] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[6] !== null && 0 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[6] !== null && selections[6] === 0 && 0 !== 1, 'border-retro-purple/50 text-white/50': selections[6] !== null && selections[6] !== 0 && 0 !== 1 }" @click="selections[6] = 0" ><span class="block">Princesa encontrada!</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[6] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[6] !== null && 1 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[6] !== null && selections[6] === 1 && 1 !== 1, 'border-retro-purple/50 text-white/50': selections[6] !== null && selections[6] !== 1 && 1 !== 1 }" @click="selections[6] = 1" ><span class="block">Personagem identificado com normalização.</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[6] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[6] !== null && 2 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[6] !== null && selections[6] === 2 && 2 !== 1, 'border-retro-purple/50 text-white/50': selections[6] !== null && selections[6] !== 2 && 2 !== 1 }" @click="selections[6] = 2" ><span class="block">Personagem não encontrado.</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[6] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[6] !== null && 3 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[6] !== null && selections[6] === 3 && 3 !== 1, 'border-retro-purple/50 text-white/50': selections[6] !== null && selections[6] !== 3 && 3 !== 1 }" @click="selections[6] = 3" ><span class="block">O código dá erro.</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[6] !== null && selections[6] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Python diferencia maiúsculas de minúsculas. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">&quot;Zelda&quot; == &quot;zelda&quot;</code> é falso.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[6] !== null && selections[6] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Correto! O primeiro <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">if</code> falha porque &quot;Zelda&quot; ≠ &quot;zelda&quot;. No <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">elif</code>, <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">nome.lower()</code> converte &quot;Zelda&quot; para &quot;zelda&quot;, e aí a comparação <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">== &quot;zelda&quot;</code> é verdadeira.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[6] !== null && selections[6] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. O <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">else</code> só executaria se nenhum <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">if</code> ou <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">elif</code> fosse verdadeiro. O <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">elif</code> com <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">.lower()</code> captura o caso.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[6] !== null && selections[6] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. O código está correto. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">.lower()</code> é um método válido de strings em Python.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 8"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Um sistema de login de um jogo verifica usuário e senha. O código abaixo tem um problema de segurança lógico. Qual é?</p><div class="quiz-code-wrap my-3 overflow-hidden rounded border border-retro-purple/50"><div class="flex items-center justify-between bg-retro-bg/80 px-3 py-1 text-xs text-retro-purple/80"><span class="quiz-code-lang">python</span><span>code</span></div><pre class="not-prose m-0 overflow-x-auto bg-black/60 p-3 text-xs leading-relaxed"><code class="language-python">usuario = input(&quot;Usuário: &quot;)&#10;senha = input(&quot;Senha: &quot;)&#10;&#10;if usuario == &quot;admin&quot; or senha == &quot;1234&quot;:&#10;    print(&quot;Acesso concedido.&quot;)&#10;else:&#10;    print(&quot;Acesso negado.&quot;)</code></pre></div> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[7] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[7] !== null && 0 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[7] !== null && selections[7] === 0 && 0 !== 1, 'border-retro-purple/50 text-white/50': selections[7] !== null && selections[7] !== 0 && 0 !== 1 }" @click="selections[7] = 0" ><span class="block">O <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">input()</code> não funciona para senha.</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[7] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[7] !== null && 1 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[7] !== null && selections[7] === 1 && 1 !== 1, 'border-retro-purple/50 text-white/50': selections[7] !== null && selections[7] !== 1 && 1 !== 1 }" @click="selections[7] = 1" ><span class="block">O uso de <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">or</code> permite acesso com apenas o usuário correto OU apenas a senha correta, sem precisar das duas.</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[7] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[7] !== null && 2 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[7] !== null && selections[7] === 2 && 2 !== 1, 'border-retro-purple/50 text-white/50': selections[7] !== null && selections[7] !== 2 && 2 !== 1 }" @click="selections[7] = 2" ><span class="block">Falta um <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">elif</code> para tratar tentativas inválidas.</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[7] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[7] !== null && 3 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[7] !== null && selections[7] === 3 && 3 !== 1, 'border-retro-purple/50 text-white/50': selections[7] !== null && selections[7] !== 3 && 3 !== 1 }" @click="selections[7] = 3" ><span class="block">A variável <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">senha</code> deveria ser do tipo inteiro.</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[7] !== null && selections[7] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">input()</code> funciona normalmente para qualquer texto. O problema não é técnico, é lógico.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[7] !== null && selections[7] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Exatamente! Com <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">or</code>, basta que uma das condições seja verdadeira. Alguém que digitar apenas <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">usuario = &quot;admin&quot;</code> (com qualquer senha) já teria acesso. O correto seria usar <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">and</code>.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[7] !== null && selections[7] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. O <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">else</code> já trata o caso de negação. O problema está no operador lógico escolhido.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[7] !== null && selections[7] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Senhas são normalmente tratadas como strings. O problema é lógico, não de tipo de dado.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 9"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Qual das alternativas abaixo representa corretamente uma estrutura <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">if/elif/else</code> com indentação e sintaxe corretas?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[8] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[8] !== null && 0 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[8] !== null && selections[8] === 0 && 0 !== 2, 'border-retro-purple/50 text-white/50': selections[8] !== null && selections[8] !== 0 && 0 !== 2 }" @click="selections[8] = 0" ><span class="mt-1 block overflow-x-auto rounded border border-retro-purple/40 bg-black/50 p-3"><span class="mb-1 block text-[10px] uppercase text-retro-purple/80">python</span><code class="block whitespace-pre font-mono text-retro-cyan">if xp &gt;= 1000&#10;    print(&quot;Nível máximo!&quot;)&#10;elif xp &gt;= 500:&#10;    print(&quot;Meio caminho.&quot;)&#10;else:&#10;    print(&quot;Iniciante.&quot;)</code></span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[8] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[8] !== null && 1 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[8] !== null && selections[8] === 1 && 1 !== 2, 'border-retro-purple/50 text-white/50': selections[8] !== null && selections[8] !== 1 && 1 !== 2 }" @click="selections[8] = 1" ><span class="mt-1 block overflow-x-auto rounded border border-retro-purple/40 bg-black/50 p-3"><span class="mb-1 block text-[10px] uppercase text-retro-purple/80">python</span><code class="block whitespace-pre font-mono text-retro-cyan">if xp &gt;= 1000:&#10;print(&quot;Nível máximo!&quot;)&#10;elif xp &gt;= 500:&#10;    print(&quot;Meio caminho.&quot;)&#10;else:&#10;    print(&quot;Iniciante.&quot;)</code></span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[8] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[8] !== null && 2 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[8] !== null && selections[8] === 2 && 2 !== 2, 'border-retro-purple/50 text-white/50': selections[8] !== null && selections[8] !== 2 && 2 !== 2 }" @click="selections[8] = 2" ><span class="mt-1 block overflow-x-auto rounded border border-retro-purple/40 bg-black/50 p-3"><span class="mb-1 block text-[10px] uppercase text-retro-purple/80">python</span><code class="block whitespace-pre font-mono text-retro-cyan">if xp &gt;= 1000:&#10;    print(&quot;Nível máximo!&quot;)&#10;elif xp &gt;= 500:&#10;    print(&quot;Meio caminho.&quot;)&#10;else:&#10;    print(&quot;Iniciante.&quot;)</code></span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[8] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[8] !== null && 3 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[8] !== null && selections[8] === 3 && 3 !== 2, 'border-retro-purple/50 text-white/50': selections[8] !== null && selections[8] !== 3 && 3 !== 2 }" @click="selections[8] = 3" ><span class="mt-1 block overflow-x-auto rounded border border-retro-purple/40 bg-black/50 p-3"><span class="mb-1 block text-[10px] uppercase text-retro-purple/80">python</span><code class="block whitespace-pre font-mono text-retro-cyan">if xp &gt;= 1000:&#10;    print(&quot;Nível máximo!&quot;)&#10;elif xp &gt;= 500:&#10;    print(&quot;Meio caminho.&quot;)&#10;else&#10;    print(&quot;Iniciante.&quot;)</code></span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[8] !== null && selections[8] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Falta o <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">:</code> no final da linha do <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">if</code>. Isso causaria um <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">SyntaxError</code>.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[8] !== null && selections[8] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. O <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">print</code> do primeiro bloco não está indentado. Isso causaria um <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">IndentationError</code>.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[8] !== null && selections[8] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Correto! Todos os blocos têm <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">:</code> ao final da condição e 4 espaços de indentação. Estrutura perfeita.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[8] !== null && selections[8] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Falta o <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">:</code> na linha do <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">else</code>. Isso causaria um <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">SyntaxError</code>.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 10"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Analise o código abaixo. O programador queria imprimir &quot;Lendário&quot; apenas para personagens acima do nível 90. O que será impresso com <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">nivel = 95</code>?</p><div class="quiz-code-wrap my-3 overflow-hidden rounded border border-retro-purple/50"><div class="flex items-center justify-between bg-retro-bg/80 px-3 py-1 text-xs text-retro-purple/80"><span class="quiz-code-lang">python</span><span>code</span></div><pre class="not-prose m-0 overflow-x-auto bg-black/60 p-3 text-xs leading-relaxed"><code class="language-python">nivel = 95&#10;&#10;if nivel &gt;= 50:&#10;    print(&quot;Veterano&quot;)&#10;elif nivel &gt;= 70:&#10;    print(&quot;Elite&quot;)&#10;elif nivel &gt;= 90:&#10;    print(&quot;Lendário&quot;)&#10;else:&#10;    print(&quot;Iniciante&quot;)</code></pre></div> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[9] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[9] !== null && 0 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[9] !== null && selections[9] === 0 && 0 !== 0, 'border-retro-purple/50 text-white/50': selections[9] !== null && selections[9] !== 0 && 0 !== 0 }" @click="selections[9] = 0" ><span class="block">Veterano</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[9] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[9] !== null && 1 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[9] !== null && selections[9] === 1 && 1 !== 0, 'border-retro-purple/50 text-white/50': selections[9] !== null && selections[9] !== 1 && 1 !== 0 }" @click="selections[9] = 1" ><span class="block">Elite</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[9] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[9] !== null && 2 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[9] !== null && selections[9] === 2 && 2 !== 0, 'border-retro-purple/50 text-white/50': selections[9] !== null && selections[9] !== 2 && 2 !== 0 }" @click="selections[9] = 2" ><span class="block">Lendário</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[9] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[9] !== null && 3 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[9] !== null && selections[9] === 3 && 3 !== 0, 'border-retro-purple/50 text-white/50': selections[9] !== null && selections[9] !== 3 && 3 !== 0 }" @click="selections[9] = 3" ><span class="block">Iniciante</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[9] !== null && selections[9] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Correto — mas errado para a intenção do programador! Como <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">nivel &gt;= 50</code> é testado primeiro, e 95 satisfaz essa condição, o programa imprime &quot;Veterano&quot; e para. As condições mais específicas (&gt;= 70 e &gt;= 90) nunca são testadas. Para corrigir, a ordem deveria ser: &gt;= 90, &gt;= 70, &gt;= 50.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[9] !== null && selections[9] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. O Python para na primeira condição verdadeira. Como <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">nivel &gt;= 50</code> já é verdadeiro para 95, o programa nunca chega a testar <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">&gt;= 70</code>.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[9] !== null && selections[9] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Esse seria o resultado desejado pelo programador, mas não é o que acontece. A condição <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">&gt;= 50</code> é testada primeiro e já captura o valor 95.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[9] !== null && selections[9] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. O <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">else</code> só executaria se nenhuma condição anterior fosse verdadeira. Como <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">nivel &gt;= 50</code> é verdadeiro, nunca chega ao <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">else</code>.</p></div> </div> </section> <div class="mt-8 border-t-2 border-retro-yellow/50 pt-5 text-center font-retro-mono" x-show="selections.every(s => s !== null)" x-cloak role="status" > <p class="text-sm uppercase tracking-wide text-retro-cyan">Resultado</p> <p class="mt-2 text-2xl font-bold uppercase text-retro-yellow"> <span x-text="correctIdxs.filter((c, i) => selections[i] === c).length"></span> <span class="text-retro-cyan/90"> / </span> <span>10</span> </p> <p class="mt-1 text-sm uppercase text-white/70">acertos</p> </div> </div>
<hr /> ]]></description>
    </item>
    <item>
       <title>Python 02 - Tipos de dados primitivos</title>
       <link>https://zulian.dev/python-02-tipos-de-dados-primitivos/</link>
       <pubDate>Sun, 05 Apr 2026 01:00:00 -04</pubDate>
       <guid>https://zulian.dev/python-02-tipos-de-dados-primitivos/</guid>
       <description><![CDATA[ <script type="module">
  import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
  mermaid.initialize({ startOnLoad: true });
</script>
<h1><a href="#python-02---tipos-de-dados-primitivos" aria-hidden="true" class="anchor" id="python-02---tipos-de-dados-primitivos"></a>Python 02 - Tipos de dados primitivos</h1>
<h2><a href="#objetivo-da-aula" aria-hidden="true" class="anchor" id="objetivo-da-aula"></a>Objetivo da aula</h2>
<p>Nesta aula vamos entender os tipos de dados primitivos em Python e aprender como
a linguagem trata números, textos e valores lógicos.</p>
<p>Ao final da aula, você deverá conseguir:</p>
<ul>
<li>identificar os principais tipos primitivos do Python;</li>
<li>criar variáveis com <code>int</code>, <code>float</code>, <code>str</code> e <code>bool</code>;</li>
<li>usar a função <code>type()</code> para descobrir o tipo de um dado;</li>
<li>converter valores entre tipos quando possível;</li>
<li>resolver pequenos problemas usando esses tipos.</li>
</ul>
<hr />
<h2><a href="#relembrando-o-que-são-dados" aria-hidden="true" class="anchor" id="relembrando-o-que-são-dados"></a>Relembrando: o que são dados?</h2>
<p>Dados são informações que serão processadas pelo programa. Para que o programa
consiga trabalhar com essas informações da forma correta, ele precisa saber
<strong>qual é o tipo de dado</strong> que está recebendo.</p>
<p>Pense assim:</p>
<ul>
<li>um número pode ser usado em contas;</li>
<li>um texto pode ser exibido na tela;</li>
<li>um valor verdadeiro ou falso pode ser usado para tomar decisões.</li>
</ul>
<p>Em outras palavras: o tipo do dado ajuda o Python a entender <strong>como ele deve
tratar aquela informação</strong>.</p>
<h3><a href="#exemplo-do-mundo-real" aria-hidden="true" class="anchor" id="exemplo-do-mundo-real"></a>Exemplo do mundo real</h3>
<p>Imagine um cadastro de heróis:</p>
<ul>
<li>
<p><code>nome = &quot;Homem-Aranha&quot;</code> → texto;</p>
</li>
<li>
<p><code>idade = 18</code> → número inteiro;</p>
</li>
<li>
<p><code>altura = 1.78</code> → número decimal;</p>
</li>
<li>
<p><code>identidade_secreta = True</code> → verdadeiro ou falso.</p>
</li>
<li>
<p><code>nome = &quot;Homem de Ferro&quot;</code> → texto;</p>
</li>
<li>
<p><code>idade = 45</code> → número inteiro;</p>
</li>
<li>
<p><code>altura = 1.85</code> → número decimal;</p>
</li>
<li>
<p><code>identidade_secreta = False</code> → verdadeiro ou falso.</p>
</li>
</ul>
<p>Cada informação tem uma natureza diferente. Por isso, cada uma usa um tipo de
dado diferente.</p>
<hr />
<h2><a href="#variáveis-e-tipos-de-dados" aria-hidden="true" class="anchor" id="variáveis-e-tipos-de-dados"></a>Variáveis e tipos de dados</h2>
<p>Uma variável é como uma gaveta onde guardamos informações para usar depois.</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Luke Skywalker&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">19</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">altura</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">1.72</span>
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">jedi</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">True</span>
</div></code></pre>
<p>Nesse exemplo:</p>
<ul>
<li><code>nome</code> guarda uma string;</li>
<li><code>idade</code> guarda um inteiro;</li>
<li><code>altura</code> guarda um decimal;</li>
<li><code>jedi</code> guarda um booleano.</li>
</ul>
<hr />
<h2><a href="#os-principais-tipos-primitivos-em-python" aria-hidden="true" class="anchor" id="os-principais-tipos-primitivos-em-python"></a>Os principais tipos primitivos em Python</h2>
<p>Nesta aula vamos focar em quatro tipos muito importantes:</p>
<ul>
<li><code>int</code> → números inteiros;</li>
<li><code>float</code> → números decimais;</li>
<li><code>str</code> → textos;</li>
<li><code>bool</code> → verdadeiro ou falso.</li>
</ul>
<p>Esses são chamados de <strong>tipos primitivos</strong>, porque são alguns dos tipos mais
básicos e mais usados em Python.</p>
<hr />
<h2><a href="#1-números-inteiros-int" aria-hidden="true" class="anchor" id="1-números-inteiros-int"></a>1. Números inteiros: <code>int</code></h2>
<p>O tipo <code>int</code> é usado para representar números inteiros, ou seja, números sem
casas decimais.</p>
<h3><a href="#exemplos" aria-hidden="true" class="anchor" id="exemplos"></a>Exemplos</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">vidas</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">3</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">pontos</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">1500</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">ano</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">2026</span>
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">temperatura</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">-</span><span style="color: #e0e2ea;">5</span>
</div></code></pre>
<p>Todos esses valores são inteiros.</p>
<h3><a href="#onde-usamos-int" aria-hidden="true" class="anchor" id="onde-usamos-int"></a>Onde usamos <code>int</code>?</h3>
<ul>
<li>quantidade de vidas em um jogo;</li>
<li>idade de uma pessoa;</li>
<li>número de episódios de uma série;</li>
<li>pontuação;</li>
<li>número de itens no inventário.</li>
</ul>
<h3><a href="#operações-com-inteiros" aria-hidden="true" class="anchor" id="operações-com-inteiros"></a>Operações com inteiros</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">x</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">10</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">y</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">3</span>
</div><div class="line" data-line="3">
</div><div class="line" data-line="4"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">x</span> <span style="color: #e0e2ea;">+</span> <span style="color: #e0e2ea;">y</span>)  <span style="color: #9b9ea4;"># soma </span>
</div><div class="line" data-line="5"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">x</span> <span style="color: #e0e2ea;">-</span> <span style="color: #e0e2ea;">y</span>)  <span style="color: #9b9ea4;"># subtração </span>
</div><div class="line" data-line="6"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">x</span> <span style="color: #e0e2ea;">*</span> <span style="color: #e0e2ea;">y</span>)  <span style="color: #9b9ea4;"># multiplicação </span>
</div><div class="line" data-line="7"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">x</span> <span style="color: #e0e2ea;">//</span> <span style="color: #e0e2ea;">y</span>) <span style="color: #9b9ea4;"># divisão inteira</span>
</div></code></pre>
<h3><a href="#atenção" aria-hidden="true" class="anchor" id="atenção"></a>Atenção</h3>
<p>Se você escrever:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">numero</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;10&quot;</span>
</div></code></pre>
<p>isso <strong>não</strong> é um inteiro. Isso é uma string, porque está entre aspas.</p>
<hr />
<h2><a href="#2-números-decimais-float" aria-hidden="true" class="anchor" id="2-números-decimais-float"></a>2. Números decimais: <code>float</code></h2>
<p>O tipo <code>float</code> é usado para números com casas decimais.</p>
<h3><a href="#exemplos-1" aria-hidden="true" class="anchor" id="exemplos-1"></a>Exemplos</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">altura</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">1.75</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">preco</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">19.90</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">nota</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">8.5</span>
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">pi</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">3.14159</span>
</div></code></pre>
<h3><a href="#onde-usamos-float" aria-hidden="true" class="anchor" id="onde-usamos-float"></a>Onde usamos <code>float</code>?</h3>
<ul>
<li>altura e peso;</li>
<li>preços;</li>
<li>notas;</li>
<li>velocidade;</li>
<li>porcentagens;</li>
<li>médias.</li>
</ul>
<h3><a href="#operações-com-float" aria-hidden="true" class="anchor" id="operações-com-float"></a>Operações com <code>float</code></h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">preco1</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">10.50</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">preco2</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">2.75</span>
</div><div class="line" data-line="3">
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">total</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">preco1</span> <span style="color: #e0e2ea;">+</span> <span style="color: #e0e2ea;">preco2</span>
</div><div class="line" data-line="5"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">total</span>)
</div></code></pre>
<h3><a href="#misturando-int-e-float" aria-hidden="true" class="anchor" id="misturando-int-e-float"></a>Misturando <code>int</code> e <code>float</code></h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">20</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">altura</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">1.80</span>
</div><div class="line" data-line="3">
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">resultado</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">+</span> <span style="color: #e0e2ea;">altura</span>
</div><div class="line" data-line="5"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">resultado</span>)
</div></code></pre>
<p>Quando misturamos <code>int</code> com <code>float</code>, o resultado normalmente será <code>float</code>.</p>
<hr />
<h2><a href="#3-strings-str" aria-hidden="true" class="anchor" id="3-strings-str"></a>3. Strings: <code>str</code></h2>
<p>Strings são usadas para representar textos.</p>
<p>Você pode criar strings com aspas simples ou duplas.</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Alice&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">sobrenome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&#39;Silva&#39;</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">filme</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;O Senhor dos Anéis&quot;</span>
</div></code></pre>
<h3><a href="#onde-usamos-strings" aria-hidden="true" class="anchor" id="onde-usamos-strings"></a>Onde usamos strings?</h3>
<ul>
<li>nomes;</li>
<li>mensagens;</li>
<li>títulos de filmes;</li>
<li>diálogos;</li>
<li>nomes de personagens;</li>
<li>textos digitados pelo usuário.</li>
</ul>
<h3><a href="#juntando-textos" aria-hidden="true" class="anchor" id="juntando-textos"></a>Juntando textos</h3>
<p>Podemos juntar strings com o operador <code>+</code>, que é chamado de concatenação.</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Tony&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">sobrenome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Stark&quot;</span>
</div><div class="line" data-line="3">
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">nome_completo</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">+</span> <span style="color: #b3f6c0;">&quot; &quot;</span> <span style="color: #e0e2ea;">+</span> <span style="color: #e0e2ea;">sobrenome</span>
</div><div class="line" data-line="5"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">nome_completo</span>)
</div></code></pre>
<h3><a href="#repetindo-textos" aria-hidden="true" class="anchor" id="repetindo-textos"></a>Repetindo textos</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">risada</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;ha&quot;</span> <span style="color: #e0e2ea;">*</span> <span style="color: #e0e2ea;">3</span>
</div><div class="line" data-line="2"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">risada</span>)  <span style="color: #9b9ea4;"># hahaha</span>
</div></code></pre>
<h3><a href="#acessando-texto" aria-hidden="true" class="anchor" id="acessando-texto"></a>Acessando texto</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">frase</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Python&quot;</span>
</div><div class="line" data-line="2"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">frase</span>[<span style="color: #e0e2ea;">0</span>])  <span style="color: #9b9ea4;"># P</span>
</div><div class="line" data-line="3"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">frase</span>[<span style="color: #e0e2ea;">1</span>])  <span style="color: #9b9ea4;"># y</span>
</div></code></pre>
<h3><a href="#tamanho-da-string" aria-hidden="true" class="anchor" id="tamanho-da-string"></a>Tamanho da string</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Goku&quot;</span>
</div><div class="line" data-line="2"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">len</span>(<span style="color: #e0e2ea;">nome</span>))
</div></code></pre>
<h3><a href="#atenção-importante" aria-hidden="true" class="anchor" id="atenção-importante"></a>Atenção importante</h3>
<p>Mesmo que pareça número, se estiver entre aspas, continua sendo texto:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">poder_luta_goku</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;9000&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">poder_luta_vegeta</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;8500&quot;</span>
</div><div class="line" data-line="3">
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">poder_total</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">poder_luta_goku</span> <span style="color: #e0e2ea;">+</span> <span style="color: #e0e2ea;">poder_luta_vegeta</span> 
</div><div class="line" data-line="5"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">poder_total</span>) <span style="color: #9b9ea4;"># 90008500</span>
</div></code></pre>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">quanto_custa_uma_pokebola</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;59.90&quot;</span>
</div><div class="line" data-line="2">
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">valor_3_pokebolas</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">quanto_custa_uma_pokebola</span> <span style="color: #e0e2ea;">*</span> <span style="color: #e0e2ea;">3</span> 
</div><div class="line" data-line="4"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">valor_3_pokebolas</span>) <span style="color: #9b9ea4;"># 59.9059.9059.90</span>
</div></code></pre>
<p>O que aconteceu?</p>
<ul>
<li>somando as strings, o resultado é a junção dos textos, não a soma dos números.</li>
<li>multiplicando a string por um número, o resultado é a repetição do texto, não a multiplicação dos números.</li>
</ul>
<hr />
<h2><a href="#4-booleanos-bool" aria-hidden="true" class="anchor" id="4-booleanos-bool"></a>4. Booleanos: <code>bool</code></h2>
<p>Booleanos representam apenas dois valores:</p>
<ul>
<li><code>True</code> → verdadeiro</li>
<li><code>False</code> → falso</li>
</ul>
<p>Eles são muito usados em comparações e decisões no programa.</p>
<p>Eles sempre são respostas de perguntas ou condições. Por exemplo:</p>
<h3><a href="#exemplos-2" aria-hidden="true" class="anchor" id="exemplos-2"></a>Exemplos</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">ligado</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">True</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">deu_game_over</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">False</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">tem_chave</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">True</span>
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">porta_esta_aberta</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">False</span>
</div></code></pre>
<h3><a href="#onde-usamos-booleanos" aria-hidden="true" class="anchor" id="onde-usamos-booleanos"></a>Onde usamos booleanos?</h3>
<ul>
<li>o jogador venceu?</li>
<li>a porta está aberta?</li>
<li>o personagem tem item suficiente?</li>
<li>o inimigo foi derrotado?</li>
<li>o usuario digitou a senha correta?</li>
<li>o usuario é maior de idade?</li>
<li>o usuario esta logado?</li>
</ul>
<h3><a href="#comparações-geram-booleanos" aria-hidden="true" class="anchor" id="comparações-geram-booleanos"></a>Comparações geram booleanos</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">10</span> <span style="color: #e0e2ea;">&gt;</span> <span style="color: #e0e2ea;">5</span>)   <span style="color: #9b9ea4;"># True</span>
</div><div class="line" data-line="2"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">3</span> <span style="color: #e0e2ea;">==</span> <span style="color: #e0e2ea;">7</span>)   <span style="color: #9b9ea4;"># False</span>
</div><div class="line" data-line="3"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">8</span> <span style="color: #e0e2ea;">!=</span> <span style="color: #e0e2ea;">2</span>)   <span style="color: #9b9ea4;"># True</span>
</div></code></pre>
<h3><a href="#exemplo-prático" aria-hidden="true" class="anchor" id="exemplo-prático"></a>Exemplo prático</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">vidas</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">0</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">game_over</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">vidas</span> <span style="color: #e0e2ea;">==</span> <span style="color: #e0e2ea;">0</span>
</div><div class="line" data-line="3">
</div><div class="line" data-line="4"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">game_over</span>)
</div></code></pre>
<hr />
<h2><a href="#descobrindo-o-tipo-de-um-valor-com-type" aria-hidden="true" class="anchor" id="descobrindo-o-tipo-de-um-valor-com-type"></a>Descobrindo o tipo de um valor com <code>type()</code></h2>
<p>Em Python, podemos usar a função <code>type()</code> para descobrir o tipo de um dado.</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">10</span>))
</div><div class="line" data-line="2"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">3.14</span>))
</div><div class="line" data-line="3"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #b3f6c0;">&quot;Olá&quot;</span>))
</div><div class="line" data-line="4"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #8cf8f7;">True</span>))
</div></code></pre>
<h3><a href="#exemplo-completo" aria-hidden="true" class="anchor" id="exemplo-completo"></a>Exemplo completo</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Darth Vader&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">45</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">altura</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">2.02</span>
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">vilao</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">True</span>
</div><div class="line" data-line="5">
</div><div class="line" data-line="6"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">nome</span>))
</div><div class="line" data-line="7"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">idade</span>))
</div><div class="line" data-line="8"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">altura</span>))
</div><div class="line" data-line="9"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">vilao</span>))
</div></code></pre>
<p>Isso ajuda muito quando estamos aprendendo ou quando ficamos em dúvida sobre o
tipo de uma variável.</p>
<hr />
<h2><a href="#conversão-de-tipos" aria-hidden="true" class="anchor" id="conversão-de-tipos"></a>Conversão de tipos</h2>
<p>Às vezes precisamos transformar um tipo em outro.</p>
<h3><a href="#de-string-para-inteiro" aria-hidden="true" class="anchor" id="de-string-para-inteiro"></a>De string para inteiro</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">idade_texto</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;25&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">idade_numero</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">int</span>(<span style="color: #e0e2ea;">idade_texto</span>)
</div><div class="line" data-line="3">
</div><div class="line" data-line="4"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">idade_numero</span>)
</div><div class="line" data-line="5"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">idade_numero</span>))
</div></code></pre>
<h3><a href="#de-inteiro-para-float" aria-hidden="true" class="anchor" id="de-inteiro-para-float"></a>De inteiro para float</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">numero</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">10</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">decimal</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">float</span>(<span style="color: #e0e2ea;">numero</span>)
</div><div class="line" data-line="3">
</div><div class="line" data-line="4"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">decimal</span>)
</div><div class="line" data-line="5"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">decimal</span>))
</div></code></pre>
<h3><a href="#de-número-para-string" aria-hidden="true" class="anchor" id="de-número-para-string"></a>De número para string</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">fase</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">3</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">mensagem</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Você está na fase &quot;</span> <span style="color: #e0e2ea;">+</span> <span style="color: #8cf8f7;">str</span>(<span style="color: #e0e2ea;">fase</span>)
</div><div class="line" data-line="3">
</div><div class="line" data-line="4"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">mensagem</span>)
</div></code></pre>
<h3><a href="#cuidado-com-conversões-inválidas" aria-hidden="true" class="anchor" id="cuidado-com-conversões-inválidas"></a>Cuidado com conversões inválidas</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">texto</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Olá&quot;</span>
</div><div class="line" data-line="2"><span style="color: #9b9ea4;"># int(texto)  # isso gera erro</span>
</div></code></pre>
<p>Nem todo texto pode virar número.</p>
<hr />
<h2><a href="#comparando-tipos-na-prática" aria-hidden="true" class="anchor" id="comparando-tipos-na-prática"></a>Comparando tipos na prática</h2>
<p>Veja a diferença entre estes valores:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">valor1</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">10</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">valor2</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">10.0</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">valor3</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;10&quot;</span>
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">valor4</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">True</span>
</div></code></pre>
<p>Agora observe:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">valor1</span>))  <span style="color: #9b9ea4;"># int</span>
</div><div class="line" data-line="2"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">valor2</span>))  <span style="color: #9b9ea4;"># float</span>
</div><div class="line" data-line="3"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">valor3</span>))  <span style="color: #9b9ea4;"># str</span>
</div><div class="line" data-line="4"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">valor4</span>))  <span style="color: #9b9ea4;"># bool</span>
</div></code></pre>
<p>Embora alguns pareçam parecidos, são tipos diferentes e são tratados de formas
diferentes pelo Python.</p>
<hr />
<h2><a href="#exemplo-guiado-ficha-de-personagem" aria-hidden="true" class="anchor" id="exemplo-guiado-ficha-de-personagem"></a>Exemplo guiado: ficha de personagem</h2>
<p>Vamos criar uma mini ficha de personagem com tipos diferentes.</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Dr. Strange&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">55</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">nota_em_feiticos</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">9.5</span>
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">usa_varinha</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">False</span>
</div><div class="line" data-line="5">
</div><div class="line" data-line="6"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">nome</span>)
</div><div class="line" data-line="7"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">idade</span>)
</div><div class="line" data-line="8"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">nota_em_feiticos</span>)
</div><div class="line" data-line="9"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">usa_varinha</span>)
</div><div class="line" data-line="10">
</div><div class="line" data-line="11"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">nome</span>))
</div><div class="line" data-line="12"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">idade</span>))
</div><div class="line" data-line="13"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">nota_em_feiticos</span>))
</div><div class="line" data-line="14"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">type</span>(<span style="color: #e0e2ea;">usa_varinha</span>))
</div></code></pre>
<h3><a href="#o-que-esse-exemplo-mostra" aria-hidden="true" class="anchor" id="o-que-esse-exemplo-mostra"></a>O que esse exemplo mostra?</h3>
<ul>
<li><code>nome</code> é texto;</li>
<li><code>idade</code> é inteiro;</li>
<li><code>nota_em_feiticos</code> é decimal;</li>
<li><code>usa_varinha</code> é booleano.</li>
</ul>
<hr />
<h2><a href="#exemplo-guiado-sistema-simples-de-game" aria-hidden="true" class="anchor" id="exemplo-guiado-sistema-simples-de-game"></a>Exemplo guiado: sistema simples de game</h2>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome_jogador</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Link&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">rupees</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">125</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">energia</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">87.5</span>
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">tem_espada_mestra</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">True</span>
</div><div class="line" data-line="5">
</div><div class="line" data-line="6"><span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Jogador:&quot;</span>, <span style="color: #e0e2ea;">nome_jogador</span>)
</div><div class="line" data-line="7"><span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Rupias:&quot;</span>, <span style="color: #e0e2ea;">rupees</span>)
</div><div class="line" data-line="8"><span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Energia:&quot;</span>, <span style="color: #e0e2ea;">energia</span>)
</div><div class="line" data-line="9"><span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Possui a Espada Mestra?&quot;</span>, <span style="color: #e0e2ea;">tem_espada_mestra</span>)
</div></code></pre>
<p>Esse tipo de estrutura aparece o tempo todo em jogos.</p>
<hr />
<h2><a href="#erros-comuns-de-iniciantes" aria-hidden="true" class="anchor" id="erros-comuns-de-iniciantes"></a>Erros comuns de iniciantes</h2>
<h3><a href="#1-confundir-número-com-texto" aria-hidden="true" class="anchor" id="1-confundir-número-com-texto"></a>1. Confundir número com texto</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;20&quot;</span>
</div></code></pre>
<p>Isso é texto, não número.</p>
<h3><a href="#2-esquecer-as-aspas-em-strings" aria-hidden="true" class="anchor" id="2-esquecer-as-aspas-em-strings"></a>2. Esquecer as aspas em strings</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">Goku</span>
</div></code></pre>
<p>Isso gera erro, porque o Python vai achar que <code>Goku</code> é o nome de uma variável.</p>
<p>O correto é:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Goku&quot;</span>
</div></code></pre>
<h3><a href="#3-escrever-booleanos-errado" aria-hidden="true" class="anchor" id="3-escrever-booleanos-errado"></a>3. Escrever booleanos errado</h3>
<p>O correto em Python é:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #8cf8f7;">True</span>
</div><div class="line" data-line="2"><span style="color: #8cf8f7;">False</span>
</div></code></pre>
<p>Não é:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">true</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">false</span>
</div></code></pre>
<h3><a href="#4-tentar-juntar-texto-com-número-sem-converter" aria-hidden="true" class="anchor" id="4-tentar-juntar-texto-com-número-sem-converter"></a>4. Tentar juntar texto com número sem converter</h3>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">18</span>
</div><div class="line" data-line="2"><span style="color: #9b9ea4;"># print(&quot;Idade: &quot; + idade)  # gera erro</span>
</div></code></pre>
<p>O correto:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Idade: &quot;</span> <span style="color: #e0e2ea;">+</span> <span style="color: #8cf8f7;">str</span>(<span style="color: #e0e2ea;">idade</span>))
</div></code></pre>
<hr />
<h2><a href="#resumo-rápido" aria-hidden="true" class="anchor" id="resumo-rápido"></a>Resumo rápido</h2>
<table>
<thead>
<tr>
<th>Tipo</th>
<th>Nome</th>
<th>Exemplo</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>int</code></td>
<td>inteiro</td>
<td><code>10</code></td>
</tr>
<tr>
<td><code>float</code></td>
<td>decimal</td>
<td><code>3.14</code></td>
</tr>
<tr>
<td><code>str</code></td>
<td>texto</td>
<td><code>&quot;Olá&quot;</code></td>
</tr>
<tr>
<td><code>bool</code></td>
<td>booleano</td>
<td><code>True</code></td>
</tr>
</tbody>
</table>
<hr />
<h2><a href="#exercícios" aria-hidden="true" class="anchor" id="exercícios"></a>Exercícios</h2>
<h2><a href="#1-raio-x-dos-dados" aria-hidden="true" class="anchor" id="1-raio-x-dos-dados"></a>1. Raio-x dos dados</h2>
<p>Descubra o tipo de cada valor abaixo usando <code>type()</code>:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">42</span>
</div><div class="line" data-line="2"><span style="color: #b3f6c0;">&quot;42&quot;</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">4.2</span>
</div><div class="line" data-line="4"><span style="color: #8cf8f7;">False</span>
</div><div class="line" data-line="5"><span style="color: #b3f6c0;">&quot;Homem de Ferro&quot;</span>
</div><div class="line" data-line="6"><span style="color: #b3f6c0;">&quot;3.14&quot;</span>
</div><div class="line" data-line="7"><span style="color: #e0e2ea;">100</span>
</div><div class="line" data-line="8"><span style="color: #b3f6c0;">&quot;True&quot;</span>
</div></code></pre>
<p><strong>Desafio:</strong> antes de rodar, tente adivinhar todos.</p>
<hr />
<h2><a href="#2-cadastro-do-multiverso" aria-hidden="true" class="anchor" id="2-cadastro-do-multiverso"></a>2. Cadastro do multiverso</h2>
<p>Durante a guerra civil, a SHIELD fez um cadastro de heróis de diferentes
universos.</p>
<p>Crie variáveis para representar as seguintes informações de um personagem:</p>
<ul>
<li>nome_heroi;</li>
<li>nome_real;</li>
<li>idade;</li>
<li>altura;</li>
<li>tem_identidade_secreta;</li>
</ul>
<p>Exemplo de personagens:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome_heroi</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Batman&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">nome_real</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Bruce Wayne&quot;</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">35</span>
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">altura</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">1.88</span>
</div><div class="line" data-line="5"><span style="color: #e0e2ea;">tem_identidade_secreta</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">True</span>
</div><div class="line" data-line="6"><span style="color: #e0e2ea;">poder</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Inteligência e dinheiro&quot;</span>
</div></code></pre>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome_heroi</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Naruto&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">nome_real</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Uzumaki Naruto&quot;</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">17</span>
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">altura</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">1.80</span>
</div><div class="line" data-line="5"><span style="color: #e0e2ea;">tem_identidade_secreta</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">False</span>
</div><div class="line" data-line="6"><span style="color: #e0e2ea;">poder</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Ninjutsu&quot;</span>
</div></code></pre>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome_heroi</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Bob Esponja&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">nome_real</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Bob Esponja Calça Quadrada&quot;</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">20</span>
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">altura</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">0.95</span>
</div><div class="line" data-line="5"><span style="color: #e0e2ea;">tem_identidade_secreta</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">False</span>
</div><div class="line" data-line="6"><span style="color: #e0e2ea;">poder</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Otimismo&quot;</span>
</div></code></pre>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome_heroi</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Xitãozinho e Xororó&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">nome_real</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;José Lima Sobrinho e Durval de Lima&quot;</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">50</span>
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">altura</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">1.75</span>
</div><div class="line" data-line="5"><span style="color: #e0e2ea;">tem_identidade_secreta</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">True</span>
</div><div class="line" data-line="6"><span style="color: #e0e2ea;">poder</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Embalar os casais apaixonados&quot;</span>
</div></code></pre>
<hr />
<h2><a href="#3-loja-do-multiverso" aria-hidden="true" class="anchor" id="3-loja-do-multiverso"></a>3. Loja do multiverso</h2>
<p>Crie um programa com estas variáveis:</p>
<ul>
<li>nome do produto;</li>
<li>preço;</li>
<li>quantidade;</li>
<li>produto disponível ou não.</li>
</ul>
<p>Sugestões de produtos:</p>
<ul>
<li>sabre de luz;</li>
<li>escudo do Capitão América;</li>
<li>pokébola;</li>
<li>Anel do Poder;</li>
</ul>
<p>Depois, mostre uma frase parecida com esta:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">produto</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Pokébola&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">preco</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">59.90</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">quantidade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">3</span>
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">disponivel</span> <span style="color: #e0e2ea;">=</span> <span style="color: #8cf8f7;">True</span>
</div><div class="line" data-line="5"><span style="color: #e0e2ea;">valol_total</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">preco</span> <span style="color: #e0e2ea;">*</span> <span style="color: #e0e2ea;">quantidade</span>
</div></code></pre>
<p>Tente imprimir:</p>
<p><code>Produto: Pokébola</code></p>
<p><code>Preço: 59.9</code></p>
<p><code>Quantidade: 3</code></p>
<p><code>Disponível: True</code></p>
<p><code>Valor total: 179.7</code></p>
<hr />
<h2><a href="#4-conversão-de-poder" aria-hidden="true" class="anchor" id="4-conversão-de-poder"></a>4. Conversão de poder</h2>
<p>Quando Goku se transforma em Super Saiyajin, seu poder de luta é dobrado</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">poder_goku_normal</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;9000&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">poder_goku_super_saiyajin</span> <span style="color: #e0e2ea;">=</span> ???
</div></code></pre>
<p>Converta esse valor para inteiro e depois multiplique por 2 para descobrir o
poder de Goku em Super Saiyajin.</p>
<p>No final, imprima o resultado.</p>
<hr />
<h2><a href="#fechamento-da-aula" aria-hidden="true" class="anchor" id="fechamento-da-aula"></a>Fechamento da aula</h2>
<p>Hoje você aprendeu que Python trabalha com diferentes tipos de dados, e que cada
tipo serve para representar uma categoria de informação.</p>
<p>Você viu:</p>
<ul>
<li>números inteiros com <code>int</code>;</li>
<li>números decimais com <code>float</code>;</li>
<li>textos com <code>str</code>;</li>
<li>valores lógicos com <code>bool</code>.</li>
</ul>
<p>Também viu como:</p>
<ul>
<li>descobrir tipos com <code>type()</code>;</li>
<li>converter alguns valores;</li>
<li>evitar erros comuns.</li>
</ul>
<p>Esses conceitos parecem simples, mas são a base de praticamente todo programa.</p>
<p>Na próxima aula, você já poderá usar esses tipos para receber dados do usuário,
fazer comparações e começar a tomar decisões dentro do programa.</p>
<hr />
<h2><a href="#quiz" aria-hidden="true" class="anchor" id="quiz"></a>Quiz</h2>
<div class=" quiz-block not-prose my-8 max-w-2xl rounded border-2 border-retro-cyan bg-retro-indigo/40 p-5 shadow-neon-cyan " x-data="{ selections: [null, null, null, null, null, null, null, null, null, null], correctIdxs: [0, 2, 2, 2, 1, 2, 2, 2, 0, 0] }" role="region" aria-label="Quiz de fixação (10 perguntas)" > <section class="" aria-label="Pergunta 1"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Qual tipo de dado é usado para representar números inteiros em Python?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[0] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[0] !== null && 0 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[0] !== null && selections[0] === 0 && 0 !== 0, 'border-retro-purple/50 text-white/50': selections[0] !== null && selections[0] !== 0 && 0 !== 0 }" @click="selections[0] = 0" ><span class="block">int</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[0] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[0] !== null && 1 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[0] !== null && selections[0] === 1 && 1 !== 0, 'border-retro-purple/50 text-white/50': selections[0] !== null && selections[0] !== 1 && 1 !== 0 }" @click="selections[0] = 1" ><span class="block">float</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[0] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[0] !== null && 2 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[0] !== null && selections[0] === 2 && 2 !== 0, 'border-retro-purple/50 text-white/50': selections[0] !== null && selections[0] !== 2 && 2 !== 0 }" @click="selections[0] = 2" ><span class="block">str</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[0] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[0] !== null && 3 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[0] !== null && selections[0] === 3 && 3 !== 0, 'border-retro-purple/50 text-white/50': selections[0] !== null && selections[0] !== 3 && 3 !== 0 }" @click="selections[0] = 3" ><span class="block">bool</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[0] !== null && selections[0] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Isso mesmo. O tipo <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">int</code> representa números inteiros, como 1, 10 e -5.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[0] !== null && selections[0] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Quase. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">float</code> é usado para números com casas decimais.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[0] !== null && selections[0] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">str</code> representa textos.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[0] !== null && selections[0] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">bool</code> representa valores lógicos.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 2"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Em Python, qual valor abaixo é um número decimal?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[1] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[1] !== null && 0 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[1] !== null && selections[1] === 0 && 0 !== 2, 'border-retro-purple/50 text-white/50': selections[1] !== null && selections[1] !== 0 && 0 !== 2 }" @click="selections[1] = 0" ><span class="block">42</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[1] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[1] !== null && 1 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[1] !== null && selections[1] === 1 && 1 !== 2, 'border-retro-purple/50 text-white/50': selections[1] !== null && selections[1] !== 1 && 1 !== 2 }" @click="selections[1] = 1" ><span class="block">&quot;42&quot;</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[1] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[1] !== null && 2 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[1] !== null && selections[1] === 2 && 2 !== 2, 'border-retro-purple/50 text-white/50': selections[1] !== null && selections[1] !== 2 && 2 !== 2 }" @click="selections[1] = 2" ><span class="block">42.0</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[1] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[1] !== null && 3 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[1] !== null && selections[1] === 3 && 3 !== 2, 'border-retro-purple/50 text-white/50': selections[1] !== null && selections[1] !== 3 && 3 !== 2 }" @click="selections[1] = 3" ><span class="block">True</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[1] !== null && selections[1] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">42</code> é um número inteiro.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[1] !== null && selections[1] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">&quot;42&quot;</code> está entre aspas, então é texto.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[1] !== null && selections[1] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Correto. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">42.0</code> é um <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">float</code>, ou seja, um número decimal.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[1] !== null && selections[1] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">True</code> é um valor booleano.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 3"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Qual das opções abaixo é uma string?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[2] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[2] !== null && 0 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[2] !== null && selections[2] === 0 && 0 !== 2, 'border-retro-purple/50 text-white/50': selections[2] !== null && selections[2] !== 0 && 0 !== 2 }" @click="selections[2] = 0" ><span class="block">100</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[2] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[2] !== null && 1 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[2] !== null && selections[2] === 1 && 1 !== 2, 'border-retro-purple/50 text-white/50': selections[2] !== null && selections[2] !== 1 && 1 !== 2 }" @click="selections[2] = 1" ><span class="block">9.9</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[2] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[2] !== null && 2 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[2] !== null && selections[2] === 2 && 2 !== 2, 'border-retro-purple/50 text-white/50': selections[2] !== null && selections[2] !== 2 && 2 !== 2 }" @click="selections[2] = 2" ><span class="block">&quot;Homem-Aranha&quot;</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[2] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[2] !== null && 3 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[2] !== null && selections[2] === 3 && 3 !== 2, 'border-retro-purple/50 text-white/50': selections[2] !== null && selections[2] !== 3 && 3 !== 2 }" @click="selections[2] = 3" ><span class="block">False</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[2] !== null && selections[2] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">100</code> é um inteiro.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[2] !== null && selections[2] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">9.9</code> é um número decimal.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[2] !== null && selections[2] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Perfeito. Tudo que está entre aspas é uma string.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[2] !== null && selections[2] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">False</code> é um booleano.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 4"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Quais são os dois valores possíveis do tipo booleano em Python?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[3] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[3] !== null && 0 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[3] !== null && selections[3] === 0 && 0 !== 2, 'border-retro-purple/50 text-white/50': selections[3] !== null && selections[3] !== 0 && 0 !== 2 }" @click="selections[3] = 0" ><span class="block">yes e no</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[3] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[3] !== null && 1 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[3] !== null && selections[3] === 1 && 1 !== 2, 'border-retro-purple/50 text-white/50': selections[3] !== null && selections[3] !== 1 && 1 !== 2 }" @click="selections[3] = 1" ><span class="block">0 e 1</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[3] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[3] !== null && 2 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[3] !== null && selections[3] === 2 && 2 !== 2, 'border-retro-purple/50 text-white/50': selections[3] !== null && selections[3] !== 2 && 2 !== 2 }" @click="selections[3] = 2" ><span class="block">True e False</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[3] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[3] !== null && 3 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[3] !== null && selections[3] === 3 && 3 !== 2, 'border-retro-purple/50 text-white/50': selections[3] !== null && selections[3] !== 3 && 3 !== 2 }" @click="selections[3] = 3" ><span class="block">verdadeiro e falso</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[3] !== null && selections[3] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Python usa palavras específicas para booleanos.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[3] !== null && selections[3] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Embora possam se relacionar em algumas situações, os booleanos em Python são representados de outra forma.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[3] !== null && selections[3] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Certo. Os valores booleanos em Python são <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">True</code> e <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">False</code>.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[3] !== null && selections[3] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">A ideia está certa, mas em Python os termos corretos são <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">True</code> e <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">False</code>.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 5"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">O que a função <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">type()</code> faz?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[4] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[4] !== null && 0 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[4] !== null && selections[4] === 0 && 0 !== 1, 'border-retro-purple/50 text-white/50': selections[4] !== null && selections[4] !== 0 && 0 !== 1 }" @click="selections[4] = 0" ><span class="block">Soma dois valores</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[4] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[4] !== null && 1 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[4] !== null && selections[4] === 1 && 1 !== 1, 'border-retro-purple/50 text-white/50': selections[4] !== null && selections[4] !== 1 && 1 !== 1 }" @click="selections[4] = 1" ><span class="block">Descobre o tipo de um valor</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[4] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[4] !== null && 2 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[4] !== null && selections[4] === 2 && 2 !== 1, 'border-retro-purple/50 text-white/50': selections[4] !== null && selections[4] !== 2 && 2 !== 1 }" @click="selections[4] = 2" ><span class="block">Converte texto em número</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[4] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[4] !== null && 3 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[4] !== null && selections[4] === 3 && 3 !== 1, 'border-retro-purple/50 text-white/50': selections[4] !== null && selections[4] !== 3 && 3 !== 1 }" @click="selections[4] = 3" ><span class="block">Imprime uma mensagem bonita na tela</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[4] !== null && selections[4] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">type()</code> não faz contas.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[4] !== null && selections[4] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Exato. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">type()</code> mostra se o dado é <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">int</code>, <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">float</code>, <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">str</code>, <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">bool</code> e assim por diante.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[4] !== null && selections[4] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Para isso usamos funções como <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">int()</code> e <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">float()</code>.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[4] !== null && selections[4] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Quem exibe mensagens é o <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">print()</code>.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 6"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Qual é o tipo do valor <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">&quot;18&quot;</code>?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[5] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[5] !== null && 0 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[5] !== null && selections[5] === 0 && 0 !== 2, 'border-retro-purple/50 text-white/50': selections[5] !== null && selections[5] !== 0 && 0 !== 2 }" @click="selections[5] = 0" ><span class="block">int</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[5] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[5] !== null && 1 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[5] !== null && selections[5] === 1 && 1 !== 2, 'border-retro-purple/50 text-white/50': selections[5] !== null && selections[5] !== 1 && 1 !== 2 }" @click="selections[5] = 1" ><span class="block">float</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[5] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[5] !== null && 2 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[5] !== null && selections[5] === 2 && 2 !== 2, 'border-retro-purple/50 text-white/50': selections[5] !== null && selections[5] !== 2 && 2 !== 2 }" @click="selections[5] = 2" ><span class="block">str</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[5] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[5] !== null && 3 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[5] !== null && selections[5] === 3 && 3 !== 2, 'border-retro-purple/50 text-white/50': selections[5] !== null && selections[5] !== 3 && 3 !== 2 }" @click="selections[5] = 3" ><span class="block">bool</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[5] !== null && selections[5] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Apesar de parecer número, está entre aspas.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[5] !== null && selections[5] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Não é decimal, e continua sendo texto.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[5] !== null && selections[5] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Isso mesmo. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">&quot;18&quot;</code> é uma string porque está entre aspas.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[5] !== null && selections[5] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Não é um valor lógico.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 7"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Qual comando converte um texto numérico em inteiro?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[6] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[6] !== null && 0 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[6] !== null && selections[6] === 0 && 0 !== 2, 'border-retro-purple/50 text-white/50': selections[6] !== null && selections[6] !== 0 && 0 !== 2 }" @click="selections[6] = 0" ><span class="block">type(&quot;25&quot;)</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[6] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[6] !== null && 1 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[6] !== null && selections[6] === 1 && 1 !== 2, 'border-retro-purple/50 text-white/50': selections[6] !== null && selections[6] !== 1 && 1 !== 2 }" @click="selections[6] = 1" ><span class="block">str(25)</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[6] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[6] !== null && 2 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[6] !== null && selections[6] === 2 && 2 !== 2, 'border-retro-purple/50 text-white/50': selections[6] !== null && selections[6] !== 2 && 2 !== 2 }" @click="selections[6] = 2" ><span class="block">int(&quot;25&quot;)</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[6] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[6] !== null && 3 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[6] !== null && selections[6] === 3 && 3 !== 2, 'border-retro-purple/50 text-white/50': selections[6] !== null && selections[6] !== 3 && 3 !== 2 }" @click="selections[6] = 3" ><span class="block">bool(&quot;25&quot;)</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[6] !== null && selections[6] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">type()</code> apenas informa o tipo do valor.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[6] !== null && selections[6] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">str()</code> faz o contrário: transforma em texto.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[6] !== null && selections[6] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Correto. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">int(&quot;25&quot;)</code> converte o texto <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">&quot;25&quot;</code> no número inteiro <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">25</code>.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[6] !== null && selections[6] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">bool()</code> não é usada para esse objetivo aqui.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 8"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Qual alternativa mostra um booleano escrito corretamente em Python?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[7] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[7] !== null && 0 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[7] !== null && selections[7] === 0 && 0 !== 2, 'border-retro-purple/50 text-white/50': selections[7] !== null && selections[7] !== 0 && 0 !== 2 }" @click="selections[7] = 0" ><span class="block">true</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[7] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[7] !== null && 1 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[7] !== null && selections[7] === 1 && 1 !== 2, 'border-retro-purple/50 text-white/50': selections[7] !== null && selections[7] !== 1 && 1 !== 2 }" @click="selections[7] = 1" ><span class="block">FALSE</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[7] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[7] !== null && 2 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[7] !== null && selections[7] === 2 && 2 !== 2, 'border-retro-purple/50 text-white/50': selections[7] !== null && selections[7] !== 2 && 2 !== 2 }" @click="selections[7] = 2" ><span class="block">True</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[7] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[7] !== null && 3 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[7] !== null && selections[7] === 3 && 3 !== 2, 'border-retro-purple/50 text-white/50': selections[7] !== null && selections[7] !== 3 && 3 !== 2 }" @click="selections[7] = 3" ><span class="block">verdadeiro</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[7] !== null && selections[7] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Em Python, a primeira letra deve ser maiúscula.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[7] !== null && selections[7] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Esse formato está incorreto em Python.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[7] !== null && selections[7] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Perfeito. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">True</code> é a forma correta.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[7] !== null && selections[7] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Python usa <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">True</code> e <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">False</code>.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 9"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">O que acontece quando somamos um <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">int</code> com um <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">float</code>?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[8] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[8] !== null && 0 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[8] !== null && selections[8] === 0 && 0 !== 0, 'border-retro-purple/50 text-white/50': selections[8] !== null && selections[8] !== 0 && 0 !== 0 }" @click="selections[8] = 0" ><span class="block">O resultado normalmente será um float</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[8] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[8] !== null && 1 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[8] !== null && selections[8] === 1 && 1 !== 0, 'border-retro-purple/50 text-white/50': selections[8] !== null && selections[8] !== 1 && 1 !== 0 }" @click="selections[8] = 1" ><span class="block">O Python transforma tudo em string</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[8] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[8] !== null && 2 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[8] !== null && selections[8] === 2 && 2 !== 0, 'border-retro-purple/50 text-white/50': selections[8] !== null && selections[8] !== 2 && 2 !== 0 }" @click="selections[8] = 2" ><span class="block">O programa sempre dá erro</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[8] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[8] !== null && 3 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[8] !== null && selections[8] === 3 && 3 !== 0, 'border-retro-purple/50 text-white/50': selections[8] !== null && selections[8] !== 3 && 3 !== 0 }" @click="selections[8] = 3" ><span class="block">O resultado sempre será bool</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[8] !== null && selections[8] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Exatamente. Ao misturar inteiro e decimal, o resultado costuma ser decimal.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[8] !== null && selections[8] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Isso não acontece em uma soma numérica.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[8] !== null && selections[8] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Essa operação é permitida.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[8] !== null && selections[8] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Booleano não é o resultado esperado aqui.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 10"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Qual opção abaixo contém apenas tipos primitivos apresentados nesta aula?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[9] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[9] !== null && 0 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[9] !== null && selections[9] === 0 && 0 !== 0, 'border-retro-purple/50 text-white/50': selections[9] !== null && selections[9] !== 0 && 0 !== 0 }" @click="selections[9] = 0" ><span class="block">int, float, str e bool</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[9] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[9] !== null && 1 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[9] !== null && selections[9] === 1 && 1 !== 0, 'border-retro-purple/50 text-white/50': selections[9] !== null && selections[9] !== 1 && 1 !== 0 }" @click="selections[9] = 1" ><span class="block">lista, dicionário e tupla</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[9] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[9] !== null && 2 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[9] !== null && selections[9] === 2 && 2 !== 0, 'border-retro-purple/50 text-white/50': selections[9] !== null && selections[9] !== 2 && 2 !== 0 }" @click="selections[9] = 2" ><span class="block">print, input e len</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[9] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[9] !== null && 3 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[9] !== null && selections[9] === 3 && 3 !== 0, 'border-retro-purple/50 text-white/50': selections[9] !== null && selections[9] !== 3 && 3 !== 0 }" @click="selections[9] = 3" ><span class="block">if, else e while</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[9] !== null && selections[9] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Muito bem. Esses são os quatro tipos primitivos estudados nesta aula.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[9] !== null && selections[9] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Esses também são tipos em Python, mas não foram os tipos primitivos foco desta aula.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[9] !== null && selections[9] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Esses são funções, não tipos de dados.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[9] !== null && selections[9] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Esses são comandos da linguagem, não tipos.</p></div> </div> </section> <div class="mt-8 border-t-2 border-retro-yellow/50 pt-5 text-center font-retro-mono" x-show="selections.every(s => s !== null)" x-cloak role="status" > <p class="text-sm uppercase tracking-wide text-retro-cyan">Resultado</p> <p class="mt-2 text-2xl font-bold uppercase text-retro-yellow"> <span x-text="correctIdxs.filter((c, i) => selections[i] === c).length"></span> <span class="text-retro-cyan/90"> / </span> <span>10</span> </p> <p class="mt-1 text-sm uppercase text-white/70">acertos</p> </div> </div>
<hr /> ]]></description>
    </item>
    <item>
       <title>Python 01 Variaveis</title>
       <link>https://zulian.dev/python-01-variaveis/</link>
       <pubDate>Mon, 30 Mar 2026 01:00:00 -04</pubDate>
       <guid>https://zulian.dev/python-01-variaveis/</guid>
       <description><![CDATA[ <script type="module">
  import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
  mermaid.initialize({ startOnLoad: true });
</script>
<h1><a href="#python-01---variáveis" aria-hidden="true" class="anchor" id="python-01---variáveis"></a>Python 01 - Variáveis</h1>
<p>Nesta aula vamos aprender o que são variáveis em Python, para que servem e como
utilizá-las no dia a dia.</p>
<h2><a href="#objetivo-da-aula" aria-hidden="true" class="anchor" id="objetivo-da-aula"></a>Objetivo da aula</h2>
<p>Ao final desta aula, você será capaz de:</p>
<ul>
<li>entender o que é uma variável;</li>
<li>criar variáveis em Python;</li>
<li>dar nomes corretos para variáveis;</li>
<li>alterar valores armazenados;</li>
<li>usar variáveis em operações e mensagens.</li>
</ul>
<hr />
<h2><a href="#o-que-é-uma-variável" aria-hidden="true" class="anchor" id="o-que-é-uma-variável"></a>O que é uma variável?</h2>
<p>Variáveis são como <strong>caixas com nome</strong> onde guardamos informações para usar
depois.</p>
<p>Variáveis são um dos conceitos mais fundamentais em programação, elas permitem
que os programas sejam dinâmicos e flexíveis, pois podemos armazenar e manipular
dados de forma eficiente.</p>
<p>Pense assim:</p>
<ul>
<li>o <strong>nome da variável</strong> é a etiqueta da caixa;</li>
<li>o <strong>valor</strong> é o conteúdo guardado nela.</li>
</ul>
<p>Exemplo:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Guido&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">20</span>
</div></code></pre>
<p>Nesse caso:</p>
<ul>
<li>nome guarda o texto &quot;Guido&quot;;</li>
<li>idade guarda o número 20.</li>
</ul>
<hr />
<h2><a href="#por-que-usamos-variáveis" aria-hidden="true" class="anchor" id="por-que-usamos-variáveis"></a>Por que usamos variáveis?</h2>
<p>Usamos variáveis para armazenar informações que o programa vai precisar durante
a execução.</p>
<p>Por exemplo:</p>
<ul>
<li>nome de uma pessoa;</li>
<li>idade;</li>
<li>saldo de uma conta;</li>
<li>nota de um aluno;</li>
<li>resultado de um cálculo.</li>
</ul>
<p>Sem variáveis, teríamos que escrever tudo manualmente o tempo todo.</p>
<hr />
<h2><a href="#criando-variáveis-em-python" aria-hidden="true" class="anchor" id="criando-variáveis-em-python"></a>Criando variáveis em Python</h2>
<p>Em Python, criamos uma variável com o sinal de igual =.</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;John Carmack&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">30</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">cidade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Passos Maia&quot;</span>
</div></code></pre>
<p>Aqui estamos dizendo:</p>
<ul>
<li>guarde &quot;John Carmack&quot; em nome;</li>
<li>guarde 30 em idade;</li>
<li>guarde &quot;Passos Maia&quot; em cidade.</li>
</ul>
<hr />
<h2><a href="#lendo-uma-variável" aria-hidden="true" class="anchor" id="lendo-uma-variável"></a>Lendo uma variável</h2>
<p>Depois de criar uma variável, podemos acessar seu valor usando o nome dela.</p>
<p>Código:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Linus Torvalds&quot;</span>
</div><div class="line" data-line="2"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">nome</span>)
</div></code></pre>
<p>Saída:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #8cf8f7;">Linus</span> <span style="color: #8cf8f7;">Torvalds</span>
</div></code></pre>
<hr />
<h2><a href="#variáveis-podem-variar" aria-hidden="true" class="anchor" id="variáveis-podem-variar"></a>Variáveis podem variar</h2>
<p>O nome “variável” vem do fato de que o valor pode mudar.</p>
<p>Código:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">20</span>
</div><div class="line" data-line="2"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">idade</span>)
</div><div class="line" data-line="3">
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">21</span>
</div><div class="line" data-line="5"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">idade</span>)
</div></code></pre>
<p>Saída:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">20</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">21</span>
</div></code></pre>
<p>A variável continua com o mesmo nome, mas agora guarda outro valor.</p>
<hr />
<h2><a href="#regras-para-nomes-de-variáveis" aria-hidden="true" class="anchor" id="regras-para-nomes-de-variáveis"></a>Regras para nomes de variáveis</h2>
<p>Em Python, os nomes das variáveis seguem algumas regras.</p>
<p>Pode:</p>
<ul>
<li>começar com letra;</li>
<li>começar com _;</li>
<li>conter letras, números e _.</li>
</ul>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Dennis&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">idade2</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">18</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">_nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Ritchie&quot;</span>
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">nome_completo</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Dennis Ritchie&quot;</span>
</div></code></pre>
<p>Não pode:</p>
<ul>
<li>começar com número;</li>
<li>ter espaços;</li>
<li>usar símbolos como -, @, #, %.</li>
</ul>
<p>Exemplos inválidos:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">2</span><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Ritchie&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">completo</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Dennis Ritchie&quot;</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">meu</span><span style="color: #e0e2ea;">-</span><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Dennis&quot;</span>
</div></code></pre>
<h2><a href="#boas-práticas-para-nomes-de-variáveis" aria-hidden="true" class="anchor" id="boas-práticas-para-nomes-de-variáveis"></a>Boas práticas para nomes de variáveis</h2>
<p>Além de funcionar, o nome da variável deve ser claro e fácil de entender, ele
deve refletir o que a variável representa.</p>
<p>É muito comum nossos códigos serem lidos por outras pessoas, ou por nós mesmos
no futuro, então é importante escolher nomes que facilitem a compreensão do
código.</p>
<p>Exemplos de nomes ruins:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">x</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">10000</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">y</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Grace Hopper&quot;</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">z</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">3.14</span> 
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">x3</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">18</span>
</div></code></pre>
<p>Exemplos de nomes bons:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">limite_de_saque</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">10000</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">nome_banido</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Grace Hopper&quot;</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">pi</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">3.14</span>
</div><div class="line" data-line="4"><span style="color: #e0e2ea;">maioriddade_penal</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">18</span>
</div></code></pre>
<p>Nomes claros deixam o código mais fácil de entender.</p>
<hr />
<h2><a href="#atribuindo-valores-a-várias-variáveis" aria-hidden="true" class="anchor" id="atribuindo-valores-a-várias-variáveis"></a>Atribuindo valores a várias variáveis</h2>
<p>Também podemos criar várias variáveis em sequência:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Steve Wozniak&quot;</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">75</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">altura</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">1.75</span>
</div></code></pre>
<p>Ou podemos criar várias variáveis em uma linha só:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome</span>, <span style="color: #e0e2ea;">idade</span>, <span style="color: #e0e2ea;">altura</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Steve Wozniak&quot;</span>, <span style="color: #e0e2ea;">75</span>, <span style="color: #e0e2ea;">1.75</span>
</div></code></pre>
<hr />
<h2><a href="#copiando-valores-entre-variáveis" aria-hidden="true" class="anchor" id="copiando-valores-entre-variáveis"></a>Copiando valores entre variáveis</h2>
<p>Uma variável também pode receber o valor de outra.</p>
<p>Código:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">a</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">10</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">b</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">a</span>
</div><div class="line" data-line="3">
</div><div class="line" data-line="4"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">a</span>)
</div><div class="line" data-line="5"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">b</span>)
</div></code></pre>
<p>Saída:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">10</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">10</span>
</div></code></pre>
<p>Nesse caso, b recebe o valor de a, então ambos guardam o número 10.</p>
<hr />
<h2><a href="#alterando-valores-com-base-no-valor-atual" aria-hidden="true" class="anchor" id="alterando-valores-com-base-no-valor-atual"></a>Alterando valores com base no valor atual</h2>
<p>Código:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">20</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">idade</span> <span style="color: #e0e2ea;">+</span> <span style="color: #e0e2ea;">1</span>
</div><div class="line" data-line="3">
</div><div class="line" data-line="4"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">idade</span>)
</div></code></pre>
<p>Saída:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">21</span>
</div></code></pre>
<p>Aqui estamos dizendo:</p>
<ul>
<li>pegue o valor atual de idade;</li>
<li>some 1;</li>
<li>guarde o novo resultado em idade.</li>
</ul>
<p>Outro exemplo:</p>
<p>Código:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">pontos</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">100</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">pontos</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">pontos</span> <span style="color: #e0e2ea;">+</span> <span style="color: #e0e2ea;">50</span>
</div><div class="line" data-line="3">
</div><div class="line" data-line="4"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">pontos</span>)
</div></code></pre>
<p>Saída:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">150</span>
</div></code></pre>
<h2><a href="#erros-comuns-com-variáveis" aria-hidden="true" class="anchor" id="erros-comuns-com-variáveis"></a>Erros comuns com variáveis</h2>
<ol>
<li>Usar variável que não foi criada</li>
</ol>
<p>Código:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #8cf8f7;">print</span>(<span style="color: #e0e2ea;">nome</span>)
</div></code></pre>
<p>Saída:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #8cf8f7;">NameError</span>: <span style="color: #e0e2ea;">name</span> <span style="color: #b3f6c0;">&#39;nome&#39;</span> <span style="color: #e0e2ea;">is</span> <span style="color: #e0e2ea;">not</span> <span style="color: #e0e2ea;">defined</span> 
</div></code></pre>
<p>Nesse caso, o erro acontece porque estamos tentando acessar a variável nome
antes de criá-la. Se isso acontecer, o Python não sabe o que nome significa e
gera um erro.</p>
<ol start="2">
<li>Escrever o nome errado</li>
</ol>
<p>Código:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">nome</span> <span style="color: #e0e2ea;">=</span> <span style="color: #b3f6c0;">&quot;Dorothy Vaughan&quot;</span>
</div><div class="line" data-line="2"><span style="color: #8cf8f7;">print</span>(<span style="color: #8cf8f7;">Nome</span>)
</div></code></pre>
<p>Saída:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #8cf8f7;">NameError</span>: <span style="color: #e0e2ea;">name</span> <span style="color: #b3f6c0;">&#39;Nome&#39;</span> <span style="color: #e0e2ea;">is</span> <span style="color: #e0e2ea;">not</span> <span style="color: #e0e2ea;">defined</span> 
</div></code></pre>
<p>Nesse caso, o erro acontece porque o nome da variável é nome, com n minúsculo, e
estamos tentando acessar Nome, com N maiúsculo. Python é case-sensitive, ou
seja, diferencia maiúsculas de minúsculas, então nome e Nome são variáveis
diferentes. Se tentarmos acessar Nome, que não existe, o Python gera um erro.</p>
<ol start="3">
<li>Escolher nomes confusos</li>
</ol>
<p>Código:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">a</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">10.99</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">b</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">32</span> 
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">c</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">a</span> <span style="color: #e0e2ea;">*</span> <span style="color: #e0e2ea;">b</span>
</div></code></pre>
<p>Nesse caso, os nomes a, b e c não dizem nada sobre o que eles representam. Se
alguém ler esse código, não vai entender o que a, b e c significam. É melhor
escolher nomes mais descritivos, como:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #e0e2ea;">preco_produto</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">10.99</span>
</div><div class="line" data-line="2"><span style="color: #e0e2ea;">quantidade</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">32</span>
</div><div class="line" data-line="3"><span style="color: #e0e2ea;">total</span> <span style="color: #e0e2ea;">=</span> <span style="color: #e0e2ea;">preco_produto</span> <span style="color: #e0e2ea;">*</span> <span style="color: #e0e2ea;">quantidade</span>
</div></code></pre>
<hr />
<h2><a href="#quiz-interativo" aria-hidden="true" class="anchor" id="quiz-interativo"></a>Quiz interativo</h2>
<div class=" quiz-block not-prose my-8 max-w-2xl rounded border-2 border-retro-cyan bg-retro-indigo/40 p-5 shadow-neon-cyan " x-data="{ selections: [null, null, null, null, null, null, null, null, null, null], correctIdxs: [0, 0, 0, 0, 2, 2, 0, 1, 0, 0] }" role="region" aria-label="Quiz de fixação (10 perguntas)" > <section class="" aria-label="Pergunta 1"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">O que é uma variável em Python?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[0] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[0] !== null && 0 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[0] !== null && selections[0] === 0 && 0 !== 0, 'border-retro-purple/50 text-white/50': selections[0] !== null && selections[0] !== 0 && 0 !== 0 }" @click="selections[0] = 0" ><span class="block">Uma caixa com nome que guarda um valor</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[0] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[0] !== null && 1 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[0] !== null && selections[0] === 1 && 1 !== 0, 'border-retro-purple/50 text-white/50': selections[0] !== null && selections[0] !== 1 && 1 !== 0 }" @click="selections[0] = 1" ><span class="block">Um comando usado apenas para imprimir textos</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[0] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[0] !== null && 2 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[0] !== null && selections[0] === 2 && 2 !== 0, 'border-retro-purple/50 text-white/50': selections[0] !== null && selections[0] !== 2 && 2 !== 0 }" @click="selections[0] = 2" ><span class="block">Um tipo de erro do Python</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[0] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[0] !== null && 3 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[0] !== null && selections[0] === 3 && 3 !== 0, 'border-retro-purple/50 text-white/50': selections[0] !== null && selections[0] !== 3 && 3 !== 0 }" @click="selections[0] = 3" ><span class="block">Um comentário dentro do código</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[0] !== null && selections[0] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Correto. Variáveis funcionam como caixas com etiqueta, onde guardamos informações para usar depois.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[0] !== null && selections[0] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Para imprimir textos, normalmente usamos <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">print()</code>.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[0] !== null && selections[0] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Variável não é erro, e sim um conceito fundamental da programação.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[0] !== null && selections[0] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Comentários servem para explicar o código, não para armazenar valores.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 2"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Qual das alternativas mostra corretamente a criação de uma variável?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[1] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[1] !== null && 0 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[1] !== null && selections[1] === 0 && 0 !== 0, 'border-retro-purple/50 text-white/50': selections[1] !== null && selections[1] !== 0 && 0 !== 0 }" @click="selections[1] = 0" ><span class="block">nome = &quot;Guido&quot;</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[1] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[1] !== null && 1 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[1] !== null && selections[1] === 1 && 1 !== 0, 'border-retro-purple/50 text-white/50': selections[1] !== null && selections[1] !== 1 && 1 !== 0 }" @click="selections[1] = 1" ><span class="block">&quot;Guido&quot; = nome</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[1] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[1] !== null && 2 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[1] !== null && selections[1] === 2 && 2 !== 0, 'border-retro-purple/50 text-white/50': selections[1] !== null && selections[1] !== 2 && 2 !== 0 }" @click="selections[1] = 2" ><span class="block">nome == &quot;Guido&quot;</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[1] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[1] !== null && 3 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[1] !== null && selections[1] === 3 && 3 !== 0, 'border-retro-purple/50 text-white/50': selections[1] !== null && selections[1] !== 3 && 3 !== 0 }" @click="selections[1] = 3" ><span class="block">var nome = &quot;Guido&quot;</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[1] !== null && selections[1] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Isso mesmo. Em Python, criamos variáveis usando o sinal de igual.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[1] !== null && selections[1] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. O valor fica do lado direito e o nome da variável do lado esquerdo.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[1] !== null && selections[1] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">==</code> é usado para comparação, não para atribuição.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[1] !== null && selections[1] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Em Python, não usamos <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">var</code> para declarar variáveis.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 3"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Depois de criar uma variável chamada <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">nome</code>, como mostramos seu valor na tela?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[2] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[2] !== null && 0 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[2] !== null && selections[2] === 0 && 0 !== 0, 'border-retro-purple/50 text-white/50': selections[2] !== null && selections[2] !== 0 && 0 !== 0 }" @click="selections[2] = 0" ><span class="block">print(nome)</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[2] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[2] !== null && 1 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[2] !== null && selections[2] === 1 && 1 !== 0, 'border-retro-purple/50 text-white/50': selections[2] !== null && selections[2] !== 1 && 1 !== 0 }" @click="selections[2] = 1" ><span class="block">print(&quot;nome&quot;)</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[2] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[2] !== null && 2 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[2] !== null && selections[2] === 2 && 2 !== 0, 'border-retro-purple/50 text-white/50': selections[2] !== null && selections[2] !== 2 && 2 !== 0 }" @click="selections[2] = 2" ><span class="block">nome(print)</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[2] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[2] !== null && 3 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[2] !== null && selections[2] === 3 && 3 !== 0, 'border-retro-purple/50 text-white/50': selections[2] !== null && selections[2] !== 3 && 3 !== 0 }" @click="selections[2] = 3" ><span class="block">show(nome)</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[2] !== null && selections[2] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Perfeito. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">print(nome)</code> exibe o valor guardado na variável.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[2] !== null && selections[2] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não exatamente. Isso imprime o texto literal <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">nome</code>, e não o valor da variável.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[2] !== null && selections[2] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Essa não é a sintaxe correta em Python.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[2] !== null && selections[2] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">show()</code> não é a função padrão do Python para exibir valores.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 4"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">O que acontece neste código?</p><div class="quiz-code-wrap my-3 overflow-hidden rounded border border-retro-purple/50"><div class="flex items-center justify-between bg-retro-bg/80 px-3 py-1 text-xs text-retro-purple/80"><span class="quiz-code-lang">python</span><span>code</span></div><pre class="not-prose m-0 overflow-x-auto bg-black/60 p-3 text-xs leading-relaxed"><code class="language-python">idade = 20&#10;idade = 21</code></pre></div> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[3] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[3] !== null && 0 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[3] !== null && selections[3] === 0 && 0 !== 0, 'border-retro-purple/50 text-white/50': selections[3] !== null && selections[3] !== 0 && 0 !== 0 }" @click="selections[3] = 0" ><span class="block">A variável <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">idade</code> passa a guardar o valor 21</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[3] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[3] !== null && 1 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[3] !== null && selections[3] === 1 && 1 !== 0, 'border-retro-purple/50 text-white/50': selections[3] !== null && selections[3] !== 1 && 1 !== 0 }" @click="selections[3] = 1" ><span class="block">O Python guarda os dois valores ao mesmo tempo</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[3] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[3] !== null && 2 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[3] !== null && selections[3] === 2 && 2 !== 0, 'border-retro-purple/50 text-white/50': selections[3] !== null && selections[3] !== 2 && 2 !== 0 }" @click="selections[3] = 2" ><span class="block">O código gera erro</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[3] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[3] !== null && 3 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[3] !== null && selections[3] === 3 && 3 !== 0, 'border-retro-purple/50 text-white/50': selections[3] !== null && selections[3] !== 3 && 3 !== 0 }" @click="selections[3] = 3" ><span class="block">A variável deixa de existir</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[3] !== null && selections[3] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Exato. A variável pode mudar de valor, por isso se chama variável.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[3] !== null && selections[3] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. No final, <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">idade</code> fica com o valor mais recente.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[3] !== null && selections[3] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Reatribuir valores a variáveis é totalmente válido.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[3] !== null && selections[3] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Ela continua existindo, apenas com um novo valor.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 5"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Qual nome de variável é inválido em Python?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[4] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[4] !== null && 0 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[4] !== null && selections[4] === 0 && 0 !== 2, 'border-retro-purple/50 text-white/50': selections[4] !== null && selections[4] !== 0 && 0 !== 2 }" @click="selections[4] = 0" ><span class="block">nome_completo</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[4] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[4] !== null && 1 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[4] !== null && selections[4] === 1 && 1 !== 2, 'border-retro-purple/50 text-white/50': selections[4] !== null && selections[4] !== 1 && 1 !== 2 }" @click="selections[4] = 1" ><span class="block">_idade</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[4] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[4] !== null && 2 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[4] !== null && selections[4] === 2 && 2 !== 2, 'border-retro-purple/50 text-white/50': selections[4] !== null && selections[4] !== 2 && 2 !== 2 }" @click="selections[4] = 2" ><span class="block">2nome</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[4] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[4] !== null && 3 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[4] !== null && selections[4] === 3 && 3 !== 2, 'border-retro-purple/50 text-white/50': selections[4] !== null && selections[4] !== 3 && 3 !== 2 }" @click="selections[4] = 3" ><span class="block">idade2</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[4] !== null && selections[4] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Esse nome é válido e segue uma boa prática.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[4] !== null && selections[4] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Variáveis podem começar com <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">_</code>.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[4] !== null && selections[4] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Correto. Variáveis não podem começar com número.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[4] !== null && selections[4] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Esse nome é válido.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 6"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Qual das alternativas representa uma boa prática de nome de variável?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[5] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[5] !== null && 0 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[5] !== null && selections[5] === 0 && 0 !== 2, 'border-retro-purple/50 text-white/50': selections[5] !== null && selections[5] !== 0 && 0 !== 2 }" @click="selections[5] = 0" ><span class="block">x</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[5] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[5] !== null && 1 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[5] !== null && selections[5] === 1 && 1 !== 2, 'border-retro-purple/50 text-white/50': selections[5] !== null && selections[5] !== 1 && 1 !== 2 }" @click="selections[5] = 1" ><span class="block">a1</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[5] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[5] !== null && 2 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[5] !== null && selections[5] === 2 && 2 !== 2, 'border-retro-purple/50 text-white/50': selections[5] !== null && selections[5] !== 2 && 2 !== 2 }" @click="selections[5] = 2" ><span class="block">limite_de_saque</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[5] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[5] !== null && 3 === 2, 'border-red-400 bg-red-950/35 text-red-100': selections[5] !== null && selections[5] === 3 && 3 !== 2, 'border-retro-purple/50 text-white/50': selections[5] !== null && selections[5] !== 3 && 3 !== 2 }" @click="selections[5] = 3" ><span class="block">zzz</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[5] !== null && selections[5] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Nem sempre. Pode funcionar, mas não é um nome claro.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[5] !== null && selections[5] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Pode funcionar, mas não é descritivo.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[5] !== null && selections[5] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Isso mesmo. Esse nome deixa claro o que a variável representa.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[5] !== null && selections[5] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Esse nome é confuso e pouco descritivo.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 7"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">O que faz este código?</p><div class="quiz-code-wrap my-3 overflow-hidden rounded border border-retro-purple/50"><div class="flex items-center justify-between bg-retro-bg/80 px-3 py-1 text-xs text-retro-purple/80"><span class="quiz-code-lang">python</span><span>code</span></div><pre class="not-prose m-0 overflow-x-auto bg-black/60 p-3 text-xs leading-relaxed"><code class="language-python">a = 10&#10;b = a</code></pre></div> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[6] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[6] !== null && 0 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[6] !== null && selections[6] === 0 && 0 !== 0, 'border-retro-purple/50 text-white/50': selections[6] !== null && selections[6] !== 0 && 0 !== 0 }" @click="selections[6] = 0" ><span class="block">Faz <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">b</code> receber o valor guardado em <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">a</code></span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[6] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[6] !== null && 1 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[6] !== null && selections[6] === 1 && 1 !== 0, 'border-retro-purple/50 text-white/50': selections[6] !== null && selections[6] !== 1 && 1 !== 0 }" @click="selections[6] = 1" ><span class="block">Soma <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">a</code> com <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">b</code></span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[6] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[6] !== null && 2 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[6] !== null && selections[6] === 2 && 2 !== 0, 'border-retro-purple/50 text-white/50': selections[6] !== null && selections[6] !== 2 && 2 !== 0 }" @click="selections[6] = 2" ><span class="block">Apaga o valor de <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">a</code></span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[6] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[6] !== null && 3 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[6] !== null && selections[6] === 3 && 3 !== 0, 'border-retro-purple/50 text-white/50': selections[6] !== null && selections[6] !== 3 && 3 !== 0 }" @click="selections[6] = 3" ><span class="block">Cria um erro automaticamente</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[6] !== null && selections[6] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Certo. Nesse caso, <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">b</code> passa a guardar o valor 10.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[6] !== null && selections[6] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Não há soma nesse código.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[6] !== null && selections[6] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">a</code> continua guardando seu valor.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[6] !== null && selections[6] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Esse código é válido e bastante comum.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 8"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Qual será o valor final de <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">pontos</code> no código abaixo?</p><div class="quiz-code-wrap my-3 overflow-hidden rounded border border-retro-purple/50"><div class="flex items-center justify-between bg-retro-bg/80 px-3 py-1 text-xs text-retro-purple/80"><span class="quiz-code-lang">python</span><span>code</span></div><pre class="not-prose m-0 overflow-x-auto bg-black/60 p-3 text-xs leading-relaxed"><code class="language-python">pontos = 100&#10;pontos = pontos + 50</code></pre></div> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[7] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[7] !== null && 0 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[7] !== null && selections[7] === 0 && 0 !== 1, 'border-retro-purple/50 text-white/50': selections[7] !== null && selections[7] !== 0 && 0 !== 1 }" @click="selections[7] = 0" ><span class="block">100</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[7] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[7] !== null && 1 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[7] !== null && selections[7] === 1 && 1 !== 1, 'border-retro-purple/50 text-white/50': selections[7] !== null && selections[7] !== 1 && 1 !== 1 }" @click="selections[7] = 1" ><span class="block">150</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[7] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[7] !== null && 2 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[7] !== null && selections[7] === 2 && 2 !== 1, 'border-retro-purple/50 text-white/50': selections[7] !== null && selections[7] !== 2 && 2 !== 1 }" @click="selections[7] = 2" ><span class="block">50</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[7] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[7] !== null && 3 === 1, 'border-red-400 bg-red-950/35 text-red-100': selections[7] !== null && selections[7] === 3 && 3 !== 1, 'border-retro-purple/50 text-white/50': selections[7] !== null && selections[7] !== 3 && 3 !== 1 }" @click="selections[7] = 3" ><span class="block">200</span></button> </li> </ul> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[7] !== null && selections[7] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. O valor foi atualizado.</p></div> </div> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[7] !== null && selections[7] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Correto. O Python pega o valor atual, soma 50 e guarda o resultado.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[7] !== null && selections[7] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. O valor inicial não foi substituído por 50, mas somado com ele.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[7] !== null && selections[7] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. A conta correta é 100 + 50.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 9"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">O que causa um <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">NameError</code>?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[8] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[8] !== null && 0 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[8] !== null && selections[8] === 0 && 0 !== 0, 'border-retro-purple/50 text-white/50': selections[8] !== null && selections[8] !== 0 && 0 !== 0 }" @click="selections[8] = 0" ><span class="block">Tentar usar uma variável que não foi criada</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[8] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[8] !== null && 1 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[8] !== null && selections[8] === 1 && 1 !== 0, 'border-retro-purple/50 text-white/50': selections[8] !== null && selections[8] !== 1 && 1 !== 0 }" @click="selections[8] = 1" ><span class="block">Somar dois números</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[8] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[8] !== null && 2 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[8] !== null && selections[8] === 2 && 2 !== 0, 'border-retro-purple/50 text-white/50': selections[8] !== null && selections[8] !== 2 && 2 !== 0 }" @click="selections[8] = 2" ><span class="block">Criar uma variável com um nome claro</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[8] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[8] !== null && 3 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[8] !== null && selections[8] === 3 && 3 !== 0, 'border-retro-purple/50 text-white/50': selections[8] !== null && selections[8] !== 3 && 3 !== 0 }" @click="selections[8] = 3" ><span class="block">Usar <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">print()</code></span></button> </li> </ul> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[8] !== null && selections[8] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Exatamente. Se a variável não existe, o Python não sabe o que fazer com aquele nome.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[8] !== null && selections[8] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Somar números é algo normal em Python.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[8] !== null && selections[8] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Isso é uma boa prática, não um erro.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[8] !== null && selections[8] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">print()</code> é uma função válida do Python.</p></div> </div> </section> <section class="mb-8 border-t-2 border-retro-purple/40 pt-8" aria-label="Pergunta 10"> <div class="mb-4 font-retro-mono text-lg font-bold  tracking-wide text-retro-yellow"> <p class="mb-2 last:mb-0">Python diferencia letras maiúsculas e minúsculas nos nomes das variáveis?</p> </div> <ul class="flex flex-col gap-2.5" role="list"> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[9] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[9] !== null && 0 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[9] !== null && selections[9] === 0 && 0 !== 0, 'border-retro-purple/50 text-white/50': selections[9] !== null && selections[9] !== 0 && 0 !== 0 }" @click="selections[9] = 0" ><span class="block">Sim, <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">nome</code> e <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">Nome</code> são variáveis diferentes</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[9] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[9] !== null && 1 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[9] !== null && selections[9] === 1 && 1 !== 0, 'border-retro-purple/50 text-white/50': selections[9] !== null && selections[9] !== 1 && 1 !== 0 }" @click="selections[9] = 1" ><span class="block">Não, o Python considera tudo igual</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[9] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[9] !== null && 2 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[9] !== null && selections[9] === 2 && 2 !== 0, 'border-retro-purple/50 text-white/50': selections[9] !== null && selections[9] !== 2 && 2 !== 0 }" @click="selections[9] = 2" ><span class="block">Só em números, não em variáveis</span></button> </li> <li> <button type="button" class="w-full rounded border-2 px-3 py-2.5 text-left font-retro-mono text-sm tracking-wide transition-colors focus:outline-none focus:ring-2 focus:ring-retro-pink" :class="{ 'border-retro-purple bg-retro-bg/80 text-retro-cyan hover:border-retro-pink hover:text-retro-pink': selections[9] === null, 'border-green-400 bg-green-950/40 text-green-100': selections[9] !== null && 3 === 0, 'border-red-400 bg-red-950/35 text-red-100': selections[9] !== null && selections[9] === 3 && 3 !== 0, 'border-retro-purple/50 text-white/50': selections[9] !== null && selections[9] !== 3 && 3 !== 0 }" @click="selections[9] = 3" ><span class="block">Apenas quando usamos <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">print()</code></span></button> </li> </ul> <div class="mt-5 rounded border-2 border-green-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[9] !== null && selections[9] === 0" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-green-300">Resposta certa</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Perfeito. Python é case-sensitive, então maiúsculas e minúsculas fazem diferença.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[9] !== null && selections[9] === 1" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">nome</code> e <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">Nome</code> não são a mesma variável.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[9] !== null && selections[9] === 2" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Essa diferença vale para os nomes das variáveis.</p></div> </div> <div class="mt-5 rounded border-2 border-red-500/60 p-3 font-retro-mono text-sm leading-relaxed" x-show="selections[9] !== null && selections[9] === 3" x-cloak role="status" > <p class="mb-2 font-bold uppercase text-red-300">Resposta incorreta</p> <div class="text-white/95"><p class="mb-2 last:mb-0">Não. Isso vale sempre, independentemente de <code class="quiz-inline-code rounded bg-black/60 px-1.5 py-0.5 font-mono text-retro-cyan">print()</code>.</p></div> </div> </section> <div class="mt-8 border-t-2 border-retro-yellow/50 pt-5 text-center font-retro-mono" x-show="selections.every(s => s !== null)" x-cloak role="status" > <p class="text-sm uppercase tracking-wide text-retro-cyan">Resultado</p> <p class="mt-2 text-2xl font-bold uppercase text-retro-yellow"> <span x-text="correctIdxs.filter((c, i) => selections[i] === c).length"></span> <span class="text-retro-cyan/90"> / </span> <span>10</span> </p> <p class="mt-1 text-sm uppercase text-white/70">acertos</p> </div> </div>
<hr /> ]]></description>
    </item>
    <item>
       <title>Python 00 - Olá Mundo!</title>
       <link>https://zulian.dev/python-00-ola-mundo/</link>
       <pubDate>Wed, 05 Nov 2025 01:00:00 -04</pubDate>
       <guid>https://zulian.dev/python-00-ola-mundo/</guid>
       <description><![CDATA[ <script type="module">
  import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
  mermaid.initialize({ startOnLoad: true });
</script>
<p><img src="https://www.python.org/static/community_logos/python-logo.png" alt="logo do python" /></p>
<h2><a href="#come-com-o-que" aria-hidden="true" class="anchor" id="come-com-o-que"></a>Come com o que?</h2>
<p>Python é uma linguagem de programação de alto nível, ou seja, ela fica mais
próxima da linguagem humana do que da linguagem de máquina.</p>
<p>Ela é interpretada, o que significa que você pode escrever e executar código
Python sem precisar transformar o codigo python em codigo de maquina.</p>
<p>Ela é conhecida por sua sintaxe clara e legibilidade, o que a torna uma ótima
escolha para iniciantes.</p>
<p>Sua legibilidade é uma das principais razões pelas quais Python é tão popular.
graças a sua sintaxe simples e clara, ela se tornou popular entre programadores
de todos os níveis de experiência, cientistas de dados, engenheiros de software,
matemáticos, e muitos outros profissionais.</p>
<h2><a href="#quem-fez-isso" aria-hidden="true" class="anchor" id="quem-fez-isso"></a>Quem fez isso?</h2>
<p><img src="/imgs/posts/2026-03-30-python00/Guido_van_Rossum.jpeg" alt="Guido van Rossum" /></p>
<p>Python foi criado por Guido van Rossum e lançado em 1991. Ele queria criar uma
linguagem de programação que fosse fácil de aprender e usar, e que tivesse uma
sintaxe clara e legível.</p>
<p>Ele nomeou a linguagem de Python em homenagem ao grupo de comédia britânico
Monty Python, porque ele queria que a linguagem fosse divertida de usar.</p>
<p>Guido van Rossum continuou a liderar o desenvolvimento do Python por muitos
anos, e a linguagem cresceu em popularidade e se tornou uma das linguagens de
programação mais usadas no mundo. Hoje, o desenvolvimento do Python é mantido
por uma comunidade de voluntários e é gerenciado pela Python Software
Foundation.</p>
<h2><a href="#e-onde-mora" aria-hidden="true" class="anchor" id="e-onde-mora"></a>E onde mora</h2>
<p><a href="https://www.python.org/">Python.org</a></p>
<h2><a href="#olá-mundo" aria-hidden="true" class="anchor" id="olá-mundo"></a>Olá mundo!</h2>
<p>Vamos começar com o clássico &quot;Olá Mundo!&quot; em Python.</p>
<p>Podemos usar o shell gratuito do proprio site do Python.</p>
<p><a href="https://www.python.org/shell/">Shell do Python</a></p>
<p>Para isso, vamos escrever o seguinte código:</p>
<pre class="lumis" style="color: #e0e2ea; background-color: #14161b;"><code class="language-python" translate="no" tabindex="0"><div class="line" data-line="1"><span style="color: #8cf8f7;">print</span>(<span style="color: #b3f6c0;">&quot;Olá Mundo!&quot;</span>)
</div></code></pre>
<p>Quando você executar esse código, ele irá imprimir &quot;Olá Mundo!&quot; na tela.
Parabéns! Você acabou de escrever seu primeiro programa em Python!</p>
<h2><a href="#onde-python-foi-usado" aria-hidden="true" class="anchor" id="onde-python-foi-usado"></a>onde python foi usado?</h2>
<p>Python é uma linguagem de programação versátil e é usada em uma variedade de
campos, incluindo:</p>
<ul>
<li>Desenvolvimento web</li>
<li>Ciência de dados</li>
<li>Inteligência artificial</li>
<li>Automação de tarefas</li>
<li>Desenvolvimento de jogos</li>
<li>E muito mais!</li>
</ul>
<p>As empresas mais notáveis que usam Python incluem NASA, Google, Facebook,
Instagram, Spotify, Netflix e muitas outras.</p> ]]></description>
    </item>
  </channel>
</rss>
