Variáveis, operadores e entrada

Tipos, atribuição, precedência, conversões, input e formatação de resultados.

Perguntar sobre esta página

ChatGPTClaudePerplexityGeminiCopiar e abrir

Brain rot

A seguirPara ti

@resumos.feup

som original ·

Definições

Leitura

Mudar de trecho
Legendas
Mostrar no vídeo
Vídeos de fundo

O texto, o áudio e os teus vídeos ficam neste dispositivo.

Créditos dos vídeos e da voz

Partilhar página

Uma variável associa um nome a um valor. Em quantidade = 3, o nome é quantidade e o valor é o inteiro 3. A instrução calcula primeiro o lado direito e só depois faz a associação.

Atribuição não é uma equação

quantidade = 3
quantidade = quantidade + 2

A segunda instrução lê o valor anterior, calcula 5 e associa esse valor ao nome. Não afirma que 3 é igual a 5. quantidade += 2 exprime a mesma atualização neste caso.

= atribui; == compara. 3 == 3 produz True. 3 == "3" produz False, porque o segundo valor é texto.

Tipos e conversões

TipoExemploUso
int3Contagens inteiras
float2.5Medidas e valores aproximados
str"Porto"Texto
boolTrueResultado de uma condição
NoneTypeNoneAusência de um valor definido

type(valor) identifica o tipo. int("12") converte texto num inteiro. float("2.5") converte texto num real aproximado. str(12) produz texto. int(2.9) produz 2, por truncatura em direção a zero; não arredonda.

Os tipos pertencem aos valores. Um nome pode receber valores de tipos diferentes, mas mudar o significado do mesmo nome dificulta seguir o programa.

Nomes e linhas do programa

Um nome pode conter letras, algarismos e _, mas não pode começar por um algarismo. total e Total são nomes diferentes. Palavras reservadas, como if e for, não podem ser nomes de variáveis.

# começa um comentário até ao fim da linha, exceto dentro de uma string. Uma instrução longa pode ocupar várias linhas físicas dentro de parênteses. A instrução continua a ser uma única linha lógica:

total = (
    quantidade * preco
    + portes
)

A indentação no início da linha define os blocos. Dentro de uma expressão entre parênteses, podes distribuir os operandos por linhas para facilitar a leitura.

Mais representações numéricas

1.2e3 significa 1,2 vezes 10 ao cubo e vale 1200.0. 1e-3 vale 0.001. A letra e indica uma potência de dez, não o número de Euler. Um complexo como 2 + 3j tem parte real 2 e parte imaginária 3; .real e .imag permitem lê-las. A unidade imaginária em Python escreve-se j, não i.

min e max escolhem extremos, abs calcula o valor absoluto ou módulo e round arredonda. O arredondamento de empates usa normalmente o valor par mais próximo, mas números decimais representados como float podem não ser empates exatos.

Operadores e precedência

OperaçãoExpressãoResultado
Potência2 ** 38
Divisão7 / 23.5
Divisão pelo chão7 // 23
Resto7 % 21
Multiplicação3 * 26
Texto repetido"ab" * 2"abab"
Texto concatenado"a" + "b""ab"

Com divisor positivo, // arredonda em direção a menos infinito: -7 // 2 vale -4 e -7 % 2 vale 1. Confere a identidade a == (a // b) * b + a % b, para b diferente de zero.

As potências precedem multiplicações e divisões, que precedem somas e subtrações. Parênteses tornam a intenção explícita. -2 ** 2 vale -4; (-2) ** 2 vale 4. 2 ** 3 ** 2 significa 2 ** (3 ** 2) e vale 512.

Ler valores e mostrar resultados

input devolve sempre uma string. Ler "3" não cria o inteiro 3. Converte antes de calcular. Nos dados de entrada do bloco, a quantidade ocupa a primeira linha e o preço a segunda.

Quantidade e preço
quantidade = int(input("Quantidade: "))
preco = float(input("Preço por unidade: "))
total = quantidade * preco
print(f"Total: {total:.2f} euros")
Dados de entrada

O cálculo é 3 × 2,5 = 7,5. A expressão :.2f escreve duas casas decimais, por isso o total aparece como 7.50 euros. Formatar não altera o valor guardado em total.

print(a, b) separa os valores por um espaço. print(a, b, sep=";") usa um ponto e vírgula. end="" evita a mudança de linha. Numa f-string, cada expressão entre chavetas é calculada e inserida no texto.

Valores aproximados

Os float usam uma representação binária finita. Algumas frações decimais não têm representação exata, por isso 0.1 + 0.2 == 0.3 é falso. Para conferir um resultado aproximado, escolhe uma tolerância adequada às unidades.

Conferir sem igualdade exata
from math import isclose
print(0.1 + 0.2)
print(isclose(0.1 + 0.2, 0.3, abs_tol=1e-12))
Dados de entrada

A primeira linha pode expor os dígitos da aproximação; a segunda escreve True. Para cálculos de cêntimos que exigem exatidão, uma alternativa é guardar quantias como inteiros de cêntimos. Não arredondes cada passo sem que o enunciado o peça, porque os erros de arredondamento podem acumular-se.

Exercícios

Prever uma expressão

Quanto vale 2 + 3 * 4 ** 2?

Primeira pista
A potência é calculada antes da multiplicação.
Mais uma pista

Calcula primeiro 4 ao quadrado, depois multiplica por 3.

Ver solução
4 ao quadrado é 16; 3 vezes 16 é 48; somar 2 dá 50.

Erros frequentes

Calcular tudo da esquerda para a direita ou usar 5 vezes 4 ao quadrado.

Voltar à explicação
Distinguir chão de truncatura

Quanto vale -7 // 2?

Primeira pista

A divisão pelo chão arredonda em direção a menos infinito.

Mais uma pista

O quociente real é -3,5. Qual é o inteiro imediatamente abaixo?

Ver solução

O resultado é -4. Com resto 1, a identidade é -7 = (-4) × 2 + 1.

Erros frequentes

Responder -3 por confundir // com int(-3.5).
Voltar à explicação
Converter antes de somar

Uma entrada é o texto 12. Queres acrescentar duas unidades e obter o número 14. Qual é a expressão adequada?

A tua resposta

Primeira pista
input devolve uma string.
Mais uma pista
O cálculo tem de acontecer entre dois números.
Ver solução

Converte com int e soma 2. A conversão exige que o texto represente um inteiro válido.

  • int(entrada) + 2. Converte o texto para inteiro antes da soma.
  • entrada + "2". Concatena texto e produz 122.
  • entrada + 2. Tenta somar string e inteiro e dá TypeError.

Erros frequentes

Confundir concatenar algarismos com somar quantidades.

Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.