Primeiros (ou segundos) passos em Python#

O que você saberá se você ler todo este capítulo?#

  1. Você saberá usar as funções de entrada e saída de dados (input e print) em Python.

  2. Você saberá usar operadores aritméticos, de comparação e lógicos em Python.

  3. Você saberá formatar textos (strings) em Python.

  4. Você saberá como funcionam as variáveis em Python.

  5. Você também saberá como converter um tipo de dado em outro como, por exemplo, um número para texto e vice-versa.

Saindo do pseudocódigo para o Python#

Vamos supor que você quer construir uma casa. O pseudocódigo se aproxima à planta da casa: você não pode entrar nela e não pode fazer muita coisa de verdade com esta planta, mas ela serve como um bom ponto de partida e te dá uma boa ideia de como a casa deve funcionar, não é? Isto é: a planta te ajuda a entender o que falta/o que você precisaria pensar antes de construir a casa.

Já um algoritmo feito em Python se assemelha à casa construída. Você pode usar a casa (entrar e sair, morar, mobiliar, entre outros) como você quiser. Ela é um objeto real que existe e funciona. E, é claro: se você está aprendendo a montar casas, seria legal já seguir uma planta construída anteriormente, não é?

É por isso que comentamos antes sobre o pseudocódigo: colocar as suas ideias no papel com um pseudocódigo antes de trabalhar em Python o ajuda muito a pensar em algoritmos e a ganhar velocidade e aprendizagem. Além disso, ao conhecer o pseudocódigo é mais fácil de pensarmos em alguns exemplos antes de colocar a mão na massa no PyCharm. Para isso, vamos usar como base aquele pseudocódigo que soma dois números e mostra para o usuário o resultado dessa soma:

 1. Início
 2.   Inteiro: num1, num2, soma
 3. 
 4.   Escreva("Digite o primeiro número: ")
 5.   Leia(num1)
 6.   
 7.   Escreva("Digite o segundo número: ")
 8.   Leia(num2)
 9.   
10.   soma = num1 + num2
11.   Escreva("O resultado da soma é: ", soma)
12. Fim

Ora, como transcreveríamos este exemplo? O mesmíssimo algoritmo acima, mas escrito em Python, seria assim:

print("Digite o primeiro número: ")
num1 = int(input())

print("Digite o segundo número: ")
num2 = int(input())

soma = num1 + num2
print("A soma dos números é: ", soma)

Agora, quais são as semelhanças e diferenças entre os dois algoritmos? Comecemos pelas diferenças: as palavras Início e Fim saíram de cena. Além disso, a linha 2 do pseudocódigo que declarava as três variáveis deixou de existir: em Python, isto não é mais necessário. Finalmente, a função Escreva deu lugar à print, e a Leia deu lugar à int(input()). Existem outras formas de reescrever este código, e veremos mais sobre isto em breve.

Quanto às semelhanças, temos várias delas. Primeiro, a ordem do algoritmo é mantida. A organização também: veja como as linhas estão organizadas. O mesmo se aplica às mensagens e à operação de soma. Por isso que começar a escrever algoritmos em Python é mais simples do que parece a princípio: se você sabe como os algoritmos funcionam de forma geral e sabe interpretar pseudocódigo, então rapidamente você também conseguirá escrever algoritmos utilizando Python.

Mas, e aí? Como testamos isso usando o PyCharm? Vamos testar aqui por partes, beleza?

Variáveis#

Variáveis em Python são uma forma de armazenar dados em um programa, como números, textos, listas, entre outros. É como se fossem caixinhas onde podemos guardar valores que podem ser usados em diferentes partes do código. Podemos escolher um nome para cada variável e atribuir um valor a ela. Por exemplo, podemos criar uma variável chamada idade e atribuir o valor 21 a ela. Assim, sempre que quisermos saber a idade, podemos usar o nome da variável em vez de escrever o número 21 de novo.

Teste o seguinte no Python Console do PyCharm. Ao final de cada linha, aperte Enter.

idade = 21
nome = 'Beltrano'
cidade = 'São Paulo'
campeonatos = 1

Após digitar essas variáveis você irá perceber que elas vão sendo “salvas” na lista à esquerda. Isto quer dizer que estão armazenadas em memória e prontas para consultar e reaproveitar como quiser. Olha só:

Variáveis 'idade', 'nome', 'cidade' e 'campeonatos' armazenadas com os valores 21, 'Beltrano', 'São Paulo' e 1, respectivamente.
Variáveis armazenadas temporariamente no PyCharm.

Elas permanecerão salvas em memória até que você encerre o programa. Digite somente isso no console e aperte Enter:

idade

Você verá que aparecerá o valor guardado para aquela variável (no caso, 21). Você pode fazer isso quantas vezes quiser e para as outras variáveis também. O que acha de testar um pouco?

Ah! Como o nome é variável, você poderia também variar (mudar) o nome delas se quiser. Veja o que acontece naquela lista à esquerda se você fizer isso e logo após apertar Enter:

cidade = 'Salvador'

Viu que o nome da cidade mudou?

Variável `cidade` agora mostra o valor `Salvador` no PyCharm.
O valor da variável "cidade" mudou para "Salvador".

Quer testar outras variáveis? Teste algumas (ou todas) no PyCharm:

nome = 'Maria'
idade = 25
altura = 1.65
peso = 60.5
estudante = True
frutas = ["maçã", "banana", "laranja"]
idade_gato = 2
cor = "azul"
preco = 9.99
estado_civil = 'solteiro'
data_nascimento = "12/08/2001"
pais = "Brasil"
email = "exemplo@gmail.com"
endereco = "Rua das Flores, 123"
quantidade = 10
velocidade = 50.0
codigo = 12345
possui_cachorro = False
salario = 2500.00
usuario = "123"
linguagens = ["Python", "Java", "C++", "Scala"]

Percebeu algumas semelhanças e diferenças? Olha só:

  1. Variáveis que guardam strings (em Python, chamamos elas de tipo str, de string): nome, cor, estado_civil, data_nascimento, pais, email, endereco, usuario. Perceba que os valores são envoltos por aspas simples ou aspas duplas.

  2. Variáveis que guardam números inteiros (em Python, chamamos elas de tipo int, de integer): idade, idade_gato, quantidade, codigo. Perceba que são números sem casas decimais e sem aspas simples ou aspas duplas: somente dígitos.

  3. Variáveis que guardam números com casas decimais (em Python, chamamos elas de tipo float ou números em que o ponto muda/flutua de posição - floating point): altura, peso, preco, velocidade, salario. Veja que são números sem aspas simples e que possuem o ponto para mostrar onde começam as casas decimais. Em Python, não usamos a vírgula para separar as casas decimais.

  4. Variáveis que guardam valores binários/booleanos (em Python, chamamos elas de tipo bool): estudante, possui_cachorro. Ela guardaria valores do tipo True (verdadeiro) ou False (falso).

  5. Variáveis que guardam mais de um valor ao mesmo tempo: frutas e linguagens. Perceba que elas possuem mais de um valor armazenado e estão envoltas por colchetes. Os colchetes indicam que são listas de valores.

Finalmente, veja que os nomes das variáveis sempre seguem um padrão: sempre em minúsculas, sem acentos e sem espaços. Quando são palavras compostas, as separamos por underscores (_). Também perceba que armazenamos (atribuímos) o valor dentro de cada variável com o símbolo de =. Por isso, lemos pais = "Brasil" como “a variável chamada pais recebe o valor Brasil.

Constantes#

Se não quisermos que um valor seja alterado (como o valor de \(\pi\), que nunca mudaria) trabalharíamos com constantes. O uso de constantes é bem comum em outras linguagens de programação, como C e Java, mas o conceito de constantes não existe em Python.

Dito isso, por convenção e por boa prática é comum nomear variáveis que não devem ser alteradas e que deveriam ser entendidas como constantes usando letras maiúsculas e underscores (_). Essa convenção é mais uma forma de deixar o código mais legível para os desenvolvedores, indicando que determinada variável não deve ser alterada durante a execução do programa.

Veja os exemplos abaixo. Ainda são variáveis, mas devem ser interpretadas como desenvolvedores como sendo constantes.

PI = 3.14159265359
GRAV_ACCEL = 9.81
URL_BASE = "https://www.google.com.br"
TAXA_JUROS = 0.05
TAMANHO_MAXIMO = 1024

Dito isso, vale lembrar que essa convenção não impede que essas variáveis sejam alteradas por engano ou por uma falha no código.

Operadores#

Aquele sinal de = que acabamos de ver é um exemplo de operador: é um símbolo que existe para fazer algum tipo de operação (somar, guardar algum valor, subtrair, dividir, comparar, etc.) com valores e variáveis. Dito isso, existem outros operadores que podem ajudar a manipular diferentes variáveis.

Operadores aritméticos#

No seu Python Console do PyCharm, crie duas novas variáveis:

num1 = 3
num2 = 5
texto1 = 'Oi'
texto2 = 'Tchau'
texto3 = "Oi"

Os operadores aritméticos são usados para realizar operações matemáticas básicas, como adição (+), subtração (-), multiplicação (*), divisão (/), módulo (ou resto da divisão, símbolo %) e exponenciação (**).

Teste os seguintes comandos e veja os resultados. Não preciso dizer que você precisa apertar Enter no final de cada comando, né?

num1 + num2
num1 - num2
num1 * num2
num1 / num2
num1 % num2
num1 ** num2

Os resultados devem ser, respectivamente: 8, -2, 15, 0.6, 3 e 243. Faz sentido com a matemática básica, não é? Agora teste:

texto1 + texto2

Aparecerá OiTchau na tela. Em Python, é possível usarmos o símbolo de + para concatenar (juntar) textos, também.

Operadores de comparação#

Se os operadores aritméticos fazem operações aritméticas, então os de comparação… Adivinha? Exato: eles comparam. Esses operadores servem para fazer comparações entre valores e variáveis para retornar True se aquela comparação for verdadeira e False se não for. Vamos usar as mesmas variáveis acima para testar lá no Python Console:

num1 == num2
num1 != num2
num1 > num2
num1 >= num2
num1 < num2
num1 <= num2
'au' in texto2
'Au' in texto2
'au' not in texto2

Você deve ter visto que para cada uma das linhas apareceu True ou False como resultado, não é? Vamos ver caso-a-caso o que cada um desses exemplos querem dizer.

num1 == num2

Nesse caso, o == é um operador de igualdade. Ele compara se num1 é exatamente igual a num2. Se forem números, compara se o valor deles é igual. Se forem strings, compara se o conteúdo do texto é exatamente igual, diferenciando maiúsculas de minúsculas. O resultado aqui foi False porque 3 é diferente de 5. Se eles fossem iguais, o resultado seria True.

num1 != num2

Já o != é um operador de desigualdade. Como você já deve imaginar, ele funciona ao contrário do ==. Ou seja: ele retornará True se as duas variáveis ou valores sendo comparados forem diferentes e False se forem iguais. Como 3 é diferente de 5 o resultado foi True.

num1 > num2
num1 >= num2
num1 < num2
num1 <= num2

Estes quatro operadores permitem comparar dois valores ou variáveis e retornar um resultado verdadeiro ou falso (booleano) dependendo do resultado da comparação.

O operador > é usado para verificar se o valor ou a variável do lado esquerdo é maior que o valor ou variável do lado direito. O operador >= verifica se o valor ou variável do lado esquerdo é maior ou igual ao valor ou variável do lado direito. O operador < verifica se o valor ou a variável do lado esquerdo é menor que o valor ou a variável do lado direito, enquanto o operador <= verifica se o valor ou a variável do lado esquerdo é menor ou igual ao valor ou variável do lado direito. Esses operadores são amplamente utilizados em estruturas de controle, como declarações condicionais e loops.

Como 3 é menor (e menor ou igual) a 5, os dois primeiros testes resultam em False e os dois últimos em True.

'au' in texto2
'Au' in texto2
'au' not in texto2

O in e not in são variáveis de pertencimento. O in poderia ser traduzido como “está dentro de”, enquanto que not in poderia ser traduzido como “não está dentro de”.

Como o texto au está dentro de Tchau, o primeiro comando retornou True. Como as comparações diferenciam letras maiúsculas de minúsculas, o segundo comando retornou False (afinal, a letra A em maiúsculo não está no texto). Finalmente, o último comando retornou False porque não é verdade que o au não esteja dentro de Tchau.

Operadores lógicos#

São operadores para realizarem comparações lógicas. Antes de pensarmos em alguns exemplos em Python vale pensarmos um pouco em exemplos de lógica booleana (ou lógica binária).

Negação (not)#

Vamos supor que você está seguindo uma receita de bolo que diz “adicione uma colher de açúcar”. Se você quer fazer uma negação dessa instrução, significa que você quer fazer o oposto do que está sendo dito. Nesse caso, a negação seria “não adicione uma colher de açúcar”. Isso significa que você vai ignorar a instrução original e não vai adicionar açúcar na massa do bolo.

Outro exemplo seria se a receita dissesse “pré-aqueça o forno a 180 graus Celsius”. A negação seria “não pré-aqueça o forno a 180 graus Celsius”, o que significa que você não deve aquecer o forno antes de colocar o bolo para assar.

A negação é um dos operadores booleanos em Python e é representada com a palavra-chave not. O not inverte o valor de uma expressão booleana, ou seja, se a expressão for verdadeira, ele a torna falsa e vice-versa.

Ou lógico (or)#

Agora, pensemos que você está seguindo uma receita de bolo e a receita diz que você pode usar açúcar cristal ou açúcar refinado para fazer a massa. Nesse caso, o “ou” lógico é utilizado, pois você pode escolher usar um tipo de açúcar ou outro para fazer a receita. Você pode fazer a receita sem problemas se tiver só açúcar cristal, se tiver só açúcar refinado, ou se tiver os dois. Agora, você não poderia fazer a receita se não tivesse nenhum desses dois tipos.

Outro exemplo de “ou” lógico seria em uma receita que diz para usar manteiga ou margarina. Nesse caso, você pode escolher usar uma das opções para fazer a receita. Você pode fazer o bolo com manteiga, o bolo com margarina, ou o bolo misturando os dois (apesar de que isso seria estranho).

Em Python, este “ou” lógico é representado pela palavra-chave or, que testa se pelo menos uma das expressões booleanas é verdadeira.

E lógico (and)#

Vamos supor que para preparar uma receita de bolo é necessário ter tanto açúcar quanto farinha de trigo. Se eu disser que é preciso ter açúcar e farinha de trigo para fazer a receita, isso significa que se faltar qualquer um desses ingredientes, o bolo não poderá ser feito. Ou seja, as duas condições precisam ser verdadeiras para que o resultado final seja verdadeiro.

Por exemplo, se eu disser que “para fazer a receita de bolo é necessário ter açúcar e farinha de trigo”, e se eu tiver apenas açúcar mas não tiver farinha de trigo, a condição não será satisfeita e o resultado será falso (ou seja: sem bolo). Apenas quando eu tiver ambos os ingredientes – açúcar e farinha de trigo – é que a condição será satisfeita e o resultado será verdadeiro, permitindo assim que eu faça o bolo.

Em Python, o “e” lógico é representado pela palavra-chave and, e precisa que todas as condições sejam verdadeiras para que o resultado seja True. Caso contrário, retornará False.

Resumindo#

  • E lógico (and): True and False resulta em False.

  • Ou lógico (or): True or False resulta em True.

  • Não lógico (not): not True resulta em False.

Vamos voltar no Python Console lá do PyCharm? Teste as seguintes variáveis:

not num1 == num2
num1 != num2 and num1 > num2
num1 != num2 or num1 > num2
num1 != num2 and not num1 > num2
num1 != num2 and num1 < num2

A primeira resulta em True porque 3 é diferente de 5. Logo, num1 == num2 resultou em False. Como estamos invertendo o resultado com o not, este False vira True.

A segunda resulta em False porque a primeira comparação resulta em True (3 é diferente de 5), mas a segunda comparação resulta em False (3 não é maior do que 5). Como o and requer que ambos sejam verdadeiros para que o resultado também seja verdade, o resultado desta comparação deu False.

A terceira resulta em True porque somente uma das comparações precisa ser verdadeira para que o resultado seja True. A segunda comparação possui o resultado False, mas a primeira obedece é verdadeira e, por isso, o resultado da comparação é True.

A quarta comparação resulta em True porque a primeira parte da expressão é num1 != num2. Como o valor de num1 é 3 e o valor de num2 é 5, essa comparação resulta em True.

Em seguida, a expressão utiliza o operador and para combinar essa comparação com a próxima, que é not num1 > num2. Essa segunda parte compara se num1 não é maior que num2. Como num1 é menor que num2, essa comparação resulta em False. No entanto, a expressão utiliza o operador not para negar esse resultado e obter True.

Por fim, o operador and combina esses dois resultados. Como a primeira parte resultou em True e a segunda em True, o resultado final da expressão é True.

Já a quinta e última comparação resulta em True porque o resultado das duas comparações é True: num1 != num2 é verdade (3 é diferente de 5) e num1 < num2 também é verdade (3 é menor do que 5).

input e print#

Em termos simples, quando estamos escrevendo um código em Python, podemos querer que ele faça algumas coisas como, por exemplo, ler um arquivo, ler coisas que o usuário digitou, ou mostrar alguma informação na tela do computador. A leitura de informações que o usuário forneceu e a exibição de informações na tela são exemplos de entrada e saída (input e output, ou I/O) do nosso algoritmo.

Quando escrevemos um algoritmo, é importante que ele consiga se comunicar com o mundo exterior para coletar e enviar informações. Por exemplo, se quisermos fazer um programa que calcule a média de notas de um aluno, precisamos permitir que o usuário insira as notas. Isso é entrada (input) do programa. E quando o programa calcular a média, ele precisará exibir o resultado ao usuário, que é a saída (output) do programa.

Mensagem para agora: as funções básicas de I/O em Python são a input() e print(), e é com elas que você irá trabalhar inicialmente.

A função input() é uma função do Python que permite ao usuário inserir informações em um programa. Ela é como uma caixa de texto na qual o usuário pode digitar alguma coisa e, em seguida, o programa usa essa informação para realizar alguma ação. É como quando alguém te pede uma informação e você responde falando com essa pessoa. No caso da função input(), o programa é quem faz a pergunta e espera pela resposta do usuário. Depois que o usuário digita a resposta e pressiona Enter, o programa recebe essa informação e pode utilizá-la da forma que foi programada. É uma maneira muito útil de fazer com que o usuário interaja com o programa.

Já a função print() em Python é usada para mostrar mensagens na tela do computador. É como se fosse uma impressora que escreve na tela do seu computador em vez de em um pedaço de papel. Com ela, é possível imprimir (na tela ou em um arquivo) textos, números e até mesmo variáveis que foram definidas no seu programa.

Ela é utilizada para que o código possa exibir informações para o usuário, como resultados de cálculos, mensagens de erro, instruções de uso, entre outros. Essa função permite que o usuário possa visualizar os resultados gerados pelo código, tornando-o mais interativo e amigável. O resultado dessa função é a exibição das informações na tela ou em um arquivo de texto.

Lembra daquele exemplo da soma de dois números que vimos no início do capítulo? Vamos usar ele como base para estudarmos e testarmos as funções input() e print(), beleza?

👉 A partir de agora nós vamos deixar de usar o Python Console e vamos começar a trabalhar com um arquivo com o código em Python. Lembra quando estávamos trabalhando com o main.py nos capítulos anteriores para fazer aquele exemplo do Counter-Strike? Vamos voltar a usar aquele arquivo. Da mesma forma que você tem um arquivo chamado main.py você pode criar outros arquivos como teste.py, projeto.py e outros nomes.

No PyCharm, deixe o seu código somente com isso, e rode ele (lembra do Run que já tínhamos visto anteriormente, né?):

num1 = input("Digite um número: ")
print(num1)
O algoritmo visto anteriormente deve estar agora dentro da tela 'main.py'.
O seu código deve estar dentro de um arquivo com final (extensão) .py, como você pode ver na área realçada em roxo. Você não precisa ter o código dentro do arquivo "main.py": você pode usar outros nomes sem problemas. O ponto aqui é que começaremos a trabalhar com esses arquivos ".py" a partir de agora, beleza?

Se você mandou rodar, provavelmente só verá esta mensagem. Ao usar a função input(), o programa pausa sua execução e aguarda a entrada de dados pelo usuário, que deve pressionar a tecla Enter para confirmar sua entrada. Ou seja: ele ficará parado aí até que você digite alguma coisa e aperte Enter.

PyCharm aberto. Aparece a frase 'Digite um número' na tela, indicando que o Python está esperando o usuário digitar algo.
Observe que a frase "Digite um número: " aparece na tela na parte inferior, e só. Isto indica que o código está "travado" e esperando você digitar alguma coisa.

Experimente digitar algum valor, como 2000. Em seguida, aperte Enter. Veja que apareceu exatamente o que você digitou na linha abaixo (no caso, o valor 2000) e, logo após isso, a frase Process finished with exit code 0. Em bom português, essa frase poderia ser interpretada como Seu programa finalizou de boas, sem erro nenhum.

PyCharm aberto. Aparece a frase 'Digite um número' na tela, indicando que o Python está esperando o usuário digitar algo. O usuário digitou 2000. Abaixo, o número 2000 aparece novamente, seguido pela mensagem 'Process finished with exit code 0'.
Observe que o código finalizou com sucesso (aquele "Process finished with exit code 0" comprova isso).

Agora, por que aquele 2000 apareceu repetido logo depois de você ter digitado ele? Esse algoritmo solicita que o usuário digite um número (com o uso da função input()) e guarda o valor digitado na variável chamada num1. Em seguida, o print() é utilizado para mostrar na tela o valor armazenado em num1.

Essas funções (a input() e print()) fazem parte ed um conjunto de instruções que o Python já tem prontas para realizar algumas tarefas, como receber uma entrada do usuário ou exibir informações na tela do computador. Dentro delas existem algoritmos especializados e prontos especialmente para estas tarefas.

Para utilizar essas funções, você pode ter percebido que fomos obrigados a escrever o nome delas seguido de parênteses. Os parênteses servem para indicar que estamos chamando a função, ou seja, pedindo para que ela seja executada. Além disso, dentro dos parênteses podemos passar informações para a função, como textos ou variáveis, para que ela possa realizar a tarefa que queremos.

Por exemplo, no código num1 = input("Digite um número: "), a função input() é chamada e o texto Digite um número: é passado como um argumento para ela, indicando que queremos que o usuário digite um número. A função retorna a entrada do usuário, que é armazenada na variável num1. Em seguida, a função print() é chamada, passando a variável num1 como argumento dentro dos parênteses para que ela exiba o valor armazenado nessa variável na tela do computador.

Que tal testarmos uma pequena mudança no print? Mude o código para isso:

num1 = input("Digite um número: ")
print(num1 + num1)

Agora, teste com o mesmo número 2000. 2000 + 2000 é igual a 4000, certo? Então teste aí. Você pode ter percebido que o resultado foi 20002000. Por que isso? Todos os dados que você digita e que o input() captura são tratados como uma string (texto), mesmo que sejam números. E, como vimos anteriormente, o + em textos possui a função de concatená-los. Ou seja: o Python entendeu que você estava querendo juntar um texto chamado “2000” com outro texto chamado “2000”, e ele não tinha nenhuma ideia de que isso, na verdade, era um número.

Para converter esses dados em outros tipos de dados, como int ou float, é necessário usar as funções de conversão de tipos de dados.

int, float e str#

O resultado da função input() é sempre um texto. Também pode ser que você esteja manipulando dados de outra fonte (como um arquivo) e que também aquilo seja lido como um texto. Por outro lado, você pode precisar converter aquele texto para um número para fazer operações como soma, divisão, comparações, e assim por diante.

É para isso que servem as funções int() (que converte um valor de outro tipo para um número inteiro), float() (que converte um valor de outro tipo para um número decimal), e str() (que converte um número ou um valor de outro tipo para um texto). Modifique o código que tínhamos para adicionar o int. O seu código deve parecer com o código abaixo. Rode ele e teste novamente com o número 2000.

num1 = int(input("Digite um número: "))
print(num1 + num1)

Agora apareceu corretamente o 4000 como resultado da soma, não é? Funciona assim: na primeira linha, a função input() exibe na tela a mensagem Digite um número: para que o usuário possa digitar o valor desejado. Sabemos disso porque o conteúdo dos parênteses mais internos é avaliado primeiro, e depois é avaliado o conteúdo dos parênteses mais externos. Isso ajuda a definir a ordem em que as operações matemáticas devem ser executadas em uma expressão, evitando assim ambiguidades. Assim que o usuário digita 2000, esse texto é convertido em um número inteiro pela função int() e armazenado na variável num1.

Na segunda linha, há uma exibição na tela do resultado da soma da variável num1 com ela mesma. Isso é feito com o uso da função print(), que exibe na tela o valor passado entre parênteses (ou seja: o resultado da soma).

Antes de avançarmos, teste este mesmo algoritmo com outro número. Primeiro, teste o algoritmo com 9.78 no lugar de 2000. Você verá que apareceu um erro assim:

ValueError: invalid literal for int() with base 10: '9.78'

Isto acontece porque ele esperava um número inteiro e você acabou digitando um número com casas decimais. Veja que o próprio erro te diz isso: que o número que você digitou não é um inteiro. Erros assim podem acontecer enquanto desenvolvemos e testamos algoritmos. Para te ajudar, também criei uma seção com os tratamentos mais comuns aos erros de código para você.

Se quiséssemos que o nosso código funcionasse com números decimais bastaria substituir o int() por float(), ficando assim:

num1 = float(input("Digite um número: "))
print(num1 + num1)

Teste de novo, e você verá a mágica acontecer. Da mesma forma, o str() pode ser útil em outros momentos para convertermos números de volta para texto. Agora, vamos continuar testando o uso do print() e do input(). Como seria para fazermos a soma de dois números diferentes digitados pelo usuário? Ora, bastaria criarmos uma segunda variável (num2) e pedirmos para o usuário digitar um segundo número. No final, teríamos a soma de num1 e num2. Olha só:

num1 = int(input("Digite o primeiro número: "))
num2 = int(input("Digite o segundo número: "))
print(num1 + num2)

Também poderíamos mostrar alguma mensagem antes de chamarmos o input(). O código abaixo faz a mesmíssima coisa do que o código anterior, mas com um uso um pouco diferente. Consegue ver as semelhanças e diferenças?

print("Digite o primeiro número: ")
num1 = int(input())

print("Digite o segundo número: ")
num2 = int(input())

print(num1 + num2)

Também poderíamos criar uma variável chamada soma para guardar o resultado da soma. Veja e teste:

num1 = int(input("Digite o primeiro número: "))
num2 = int(input("Digite o segundo número: "))

soma = num1 + num2
print(soma)

Formatação de strings#

Agora, e se quiséssemos mostrar um texto um pouco mais bonito do que somente aquele valor? E se quiséssemos mostrar uma mensagem personalizada dentro daquele print()? É aí que entra a formatação de texto. A formatação de texto serve mostrar informações de uma maneira organizada e legível, e que permite criar mensagens personalizadas e dinâmicas de acordo com as entradas do usuário ou resultados de cálculos.

Com a formatação de texto, poderíamos criar um modelo de mensagem com espaços reservados para as informações fornecidas pelo usuário, como Olá, $NOME. Você tem $IDADE anos!, onde $NOME e $IDADE são valores que podem variar de pessoa para pessoa. Durante a execução do seu código, as informações reais serão inseridas nos espaços reservados, criando uma mensagem personalizada para cada usuário.

Existem alguns jeitos de fazermos isso em Python. A formatação de texto em Python pode ser feita de algumas formas diferentes. Vamos usar o mesmo exemplo acima para continuar, beleza?

Vamos supor que queiramos mostrar uma mensagem chamada “A soma dos números $PRIMEIRONUMERO e $SEGUNDONUMERO é: $SOMA”. Por exemplo: se o usuário digitar 5 e 3, deve aparecer uma mensagem chamada “A soma dos números 3 e 5 é: 8. Se ele digitar 2000 e -10, deve aparecer “A soma dos números 2000 e -10 é: 1990. Bom, acho que você já pegou a ideia do que queremos, né?

Jeito 1: concatenando strings#

Lembra de que comentei que o + serve para concatenar strings? Teste o seguinte código:

num1 = int(input("Digite o primeiro número: "))
num2 = int(input("Digite o segundo número: "))

soma = num1 + num2
print("A soma dos números " + str(num1) + " e " + str(num2) + " é: "+ str(soma))

Veja que na última linha usamos o sinal de + para juntar pedaços diferentes do texto. Ou seja: começamos a montar uma frase chamada A soma dos números e, em seguida, juntamos com o valor que está dentro da variável num1. Depois, juntamos com mais um texto (e) e assim sucessivamente até chegar na frase completa.

Também perceba que usamos o str(). Isto é necessário converter as variáveis num1 e num2 em strings usando a função str() antes de concatená-las com as demais strings na função print(). Isto acontece porque o Python não permite juntar texto com números: ou juntamos número com número, ou texto com texto. Por isso, tivemos que converter os números das três variáveis de volta para um texto com o str().

Jeito 2: usando f-strings#

As f-strings permitem que você inclua valores de variáveis diretamente dentro de strings sem precisar concatenar (unir) vários elementos. Para criar uma f-string, basta inserir a letra f antes das aspas da string e, em seguida, colocar as chaves ({}) em torno do nome da variável que você deseja incluir.

Teste o seguinte código:

num1 = int(input("Digite o primeiro número: "))
num2 = int(input("Digite o segundo número: "))

soma = num1 + num2
print(f"A soma dos números {num1} e {num2} é: {soma}")

Neste exemplo, as variáveis num1, num2 e soma são colocadas dentro da string entre chaves {} na última linha, indicando que elas serão substituídas pelos seus respectivos valores assim que o Python executar aquela linha. Veja que só podemos usar variáveis que existem aqui: se tentarmos colocar também uma variável chamada num3 na última linha teremos um erro já que ela nunca apareceu em nenhum lugar antes do código.

Jeito 3: usando placeholders#

Agora, vamos usar a função format() para formatar uma string de saída que contém os valores das variáveis num1, num2 e soma. Os valores são inseridos na string usando chaves {} como marcadores de posição: é como se falássemos assim: “troque o valor das primeiras chaves com o primeiro valor que está lá no format (num1), as segundas chaves com o segundo valor (num2) e as terceiras chaves com o terceiro valor (soma)”. Por isso, a ordem das chaves determina a ordem dos argumentos passados para a função format().

num1 = int(input("Digite o primeiro número: "))
num2 = int(input("Digite o segundo número: "))

soma = num1 + num2
print("A soma dos números {} e {} é: {}".format(num1, num2, soma))

Experimente trocar a ordem do que está dentro do format(), colocando o soma em primeiro lugar. Veja que a frase final deixará de fazer sentido por isso.

Jeito 4: usando format()#

Também existe uma forma de “demarcar” a posição de cada elemento do format no texto. Teste o código abaixo:

num1 = int(input("Digite o primeiro número: "))
num2 = int(input("Digite o segundo número: "))

soma = num1 + num2
print("A soma dos números {1} e {2} é: {0}".format(soma, num1, num2))

A última linha desse código ainda usa a função format(). Veja que o que mudou foi a ordem do que está dentro do format(). As chaves ({}) ainda servem como marcadores de posição, e agora estão numeradas de 0 a 2. O primeiro argumento passado para a função format() é o valor que deve ser atribuído à posição 0, ou seja, o resultado da soma, representado pela variável soma. Em seguida, os valores das variáveis num1 e num2 são passados como segundo e terceiro argumentos, respectivamente, para serem atribuídos às posições 1 e 2 da mensagem.

Assim, o método format() faz a substituição dos marcadores de posição pelos valores passados como argumentos obedecendo a ordem que você determinou.

Exercícios#

O que acha de colocar a mão na massa e tentar resolver os problemas abaixo usando Python? Todos eles podem ser resolvidos somente com o que você aprendeu até o momento. Você também pode tentar inserir coisas a mais, como uma mensagem mais bonita usando técnicas de formatação de strings.

Ah, e reforçando: é provável que você encontre algum erro no caminho. Fique tranquilo! Procurei criar uma seção com os tratamentos mais comuns aos erros de código para você. Logo abaixo destes exercícios existem as respostas com as explicações. Lembrando: não existe uma solução única para estes problemas – o seu algoritmo pode também funcionar perfeitamente ainda que a sua implementação seja diferente da minha, beleza?

  1. Crie um algoritmo que solicita ao usuário que insira seu nome e exibe na tela uma mensagem de saudação

    • Exemplo: um usuário digita o seu nome (como Fulano de Tal). O algoritmo deve retornar uma mensagem chamada “Oi, Fulano de Tal! Espero que você tenha uma boa semana!”.

  2. Crie um algoritmo que solicita ao usuário que insira um número decimal e exibe o dobro desse número na tela.

    • Exemplo: um usuário digita o número 23.51. O algoritmo deve retornar 47.02.

  3. Crie um algoritmo que solicita ao usuário que insira um número inteiro e exibe na tela True se ele for par e False se for ímpar.

    • Exemplo: um usuário digita o número 7. O algoritmo deve retornar a mensagem False.

  4. Crie um algoritmo que solicita ao usuário que insira um número e exibe na tela True se ele for igual ou acima de zero ou False se menor do que zero.

    • Exemplo: um usuário digita o número -51.05. O algoritmo deve retornar a mensagem False.

  5. Crie um algoritmo que solicita ao usuário que insira a temperatura em graus Celsius e exibe na tela a temperatura em Fahrenheit.

    • Exemplo: um usuário digita o número 23. O algoritmo deve retornar 73.4.

  6. Crie um algoritmo que solicita ao usuário que insira a sua altura em metros e o seu peso em quilogramas e exibe na tela o seu índice de massa corporal (IMC).

    • Exemplo: um usuário digita a altura 1.75 e o peso 80.5. O algoritmo deve retornar 26.29.

  7. Crie um algoritmo que solicita ao usuário que insira dois números e exibe na tela o resultado da soma, subtração, multiplicação e divisão desses números.

    • Exemplo: um usuário digita o número -10.2 e, em seguida, 2. O algoritmo deve retornar o resultado da soma (-8.2), subtração (-12.2), multiplicação (-20.4) e divisão (-5.1).

Respostas#

1. Crie um algoritmo que solicita ao usuário que insira seu nome e exibe na tela uma mensagem de saudação

# Solicita que o usuário digite seu nome
nome = input("Digite seu nome: ")

# Exibe uma mensagem de saudação na tela
print("Oi, ", nome, "! Espero que você tenha uma boa semana!")

Explicando o código acima, na primeira linha é solicitado ao usuário que digite o seu nome e essa informação é armazenada na variável nome. Já na segunda linha, uma mensagem de saudação é exibida na tela utilizando a função print, que recebe uma string e a variável nome (que contém o nome do usuário) como argumentos.

Ao executar o programa, o usuário verá uma mensagem solicitando que ele digite o seu nome. Em seguida, o nome digitado será exibido na mensagem de saudação que aparecerá na tela.

2. Crie um algoritmo que solicita ao usuário que insira um número decimal e exibe o dobro desse número na tela.

# Solicita ao usuário que insira um número decimal e armazena na variável "num"
num = float(input("Insira um número decimal: "))

# Calcula o dobro do número e armazena na variável "dobro"
dobro = num * 2

# Exibe o resultado na tela
print(dobro)

Neste algoritmo, a função input() é utilizada para solicitar ao usuário que insira um número decimal, que é então convertido para um valor do tipo float. Em seguida, o dobro desse número é calculado e armazenado na variável dobro. Por fim, a função print() é utilizada para exibir na tela uma mensagem contendo o resultado do cálculo.

3. Crie um algoritmo que solicita ao usuário que insira um número inteiro e exibe na tela se ele é par ou ímpar.

num = int(input("Insira um número inteiro: "))
print(num % 2 == 0)

O algoritmo começa solicitando ao usuário que insira um número inteiro através da função input(), que lê a entrada do usuário como uma string. Em seguida, o número é convertido para um inteiro usando a função int(), e armazenado na variável num.

Depois disso, ele compara se o resto da divisão por 2 (num % 2) é igual a 0 ou não. Se for igual a 0, significa que o número é par e esta comparação é verdadeira (True). Caso contrário, esta comparação não é verdadeira (False).

4. Crie um algoritmo que solicita ao usuário que insira um número e exibe na tela se ele é positivo, negativo ou zero.

num = float(input("Digite um número: "))
print(num >= 0)

O programa começa pedindo para que o usuário digite um número, que é armazenado na variável num. A segunda linha compara se o que está armazenado em num é maior ou igual (representado por >=) a zero. Se for, o resultado desta comparação é True. Caso contrário, é False.

5. Crie um algoritmo que solicita ao usuário que insira a temperatura em graus Celsius e exibe na tela a temperatura em Fahrenheit.

# Solicita a temperatura em Celsius ao usuário
temp_celsius = float(input("Digite a temperatura em graus Celsius: "))

# Converte a temperatura para Fahrenheit
temp_fahrenheit = (temp_celsius * 9/5) + 32

# Exibe a temperatura em Fahrenheit
print("A temperatura em graus Fahrenheit é:", temp_fahrenheit)

A função input() solicita ao usuário que digite a temperatura em graus Celsius e a armazena na variável temp_celsius.

Em seguida, o algoritmo usa uma fórmula amplamente usada na Física (\(°C * {{9} \over {5}} + 32\)) para converter a temperatura de Celsius para Fahrenheit e armazena o resultado na variável temp_fahrenheit.

Por fim, a função print() exibe a temperatura em Fahrenheit na tela.

6. Crie um algoritmo que solicita ao usuário que insira a sua altura em metros e o seu peso em quilogramas e exibe na tela o seu índice de massa corporal (IMC).

altura = float(input("Digite sua altura em metros: "))
peso = float(input("Digite seu peso em quilogramas: "))

imc = peso / altura ** 2

print("Seu IMC é: ", imc)

O algoritmo acima solicita que o usuário digite sua altura em metros e seu peso em quilogramas. Em seguida, ele calcula o índice de massa corporal (IMC) usando a fórmula \({peso} \over {altura ^ 2}\), armazenando o resultado na variável de nome imc.

No caso, altura ** 2 tem o mesmo significado de \(altura ^2\). Por fim, exibe na tela o valor do IMC com a mensagem “Seu IMC é: ” seguido pelo valor da variável imc.

7. Crie um algoritmo que solicita ao usuário que insira dois números e exibe na tela o resultado da soma, subtração, multiplicação e divisão desses números.

# solicita ao usuário que insira dois números
num1 = float(input("Insira o primeiro número: "))
num2 = float(input("Insira o segundo número: "))

# realiza as operações matemáticas
soma = num1 + num2
subtracao = num1 - num2
multiplicacao = num1 * num2
divisao = num1 / num2

# exibe os resultados na tela
print("A soma é:", soma)
print("A subtração é:", subtracao)
print("A multiplicação é:", multiplicacao)
print("A divisão é:", divisao)

Nesse algoritmo, o usuário é solicitado a inserir dois números, que são armazenados nas variáveis num1 e num2. Em seguida, são realizadas as operações matemáticas de soma, subtração, multiplicação e divisão entre os números, que são armazenadas nas variáveis soma, subtracao, multiplicacao e divisao, respectivamente. Por fim, os resultados são exibidos na tela por meio da função print().

Referências bibliográficas#