Aceitar entrada do utilizador

Concluído

Tip

Consulte a guia Texto e imagens para obter mais detalhes!

Os programas tornam-se verdadeiramente poderosos quando conseguem interagir com as pessoas que os utilizam. A função incorporada input() do Python permite-lhe pausar o seu programa, esperar que o utilizador escreva algo e capturar essa informação.

Usando input()

Pensa na input() função como um tema de pergunta. Quando o Python chega a esta linha, espera até que o utilizador escreva a sua resposta e pressione a tecla Enter antes de continuar com o resto do código.

Para guardar a resposta deles, tens de a "apanhar" usando uma variável:

favorite_color = input("What is your favorite color? ")
print("Oh, I love", favorite_color, "too!")

Neste código, favorite_color é uma variável que capta a resposta do utilizador. Se o utilizador escrever Blue e pressionar Enter, a saída é:

What is your favorite color? Blue
Oh, I love Blue too!

Podes tentar correr este código tu próprio num interpretador Python online em https://aka.ms/python-coder.

Tip

Repara no espaço em branco no final do prompt: "What is your favorite color? ". Ao aceitar entradas do utilizador, adicione um espaço ou uma nova linha antes de fechar as cotações. Se não o fizeres, a digitação do utilizador ficará colada diretamente ao teu texto, ficando desarrumada assim: What is your favorite color?Blue

Uma palavra rápida sobre os tipos de dados

Antes de avançares, ajuda saber que cada valor em Python tem um tipo de dado, que é um rótulo que indica ao Python com que tipo de valor está a trabalhar. Por exemplo, alguns tipos de dados comuns são:

  • String (str): Texto envolto em aspas, como "Blue" ou "25". Até um número se torna texto quando está entre aspas.
  • Integer (int): Um número inteiro sem aspas, como 25 ou 100. O Python consegue fazer matemática com estes.

Porque é que isso importa? O Python trata estes dois tipos de forma muito diferente. Podes somar números juntos (25 + 1 igual a 26), mas não podes adicionar um número ao texto ("25" + 1 causa um erro).

A entrada é sempre texto

Uma regra essencial a lembrar é que a input() função devolve sempre texto, mesmo que o utilizador escreva um número. Por exemplo:

age = input("How old are you? ")
print("Next year you will be", age + 1)

Se executares este código e escreveres 25, podes esperar que imprima 26. Em vez disso, o Python crasha e apresenta uma mensagem de erro na sua consola:

TypeError: can only concatenate str (not "int") to str

Como está age bloqueado como texto, ainda não podes fazer operações matemáticas nele.

Como ler este erro

Os erros são pistas sobre o que correu mal no código. Vamos analisar estas pistas:

  • TypeError: Está a tentar misturar dois tipos de dados que não pertencem um ao outro.
  • can only concatenate str (not "int") to str: "Concatenate" significa colar texto.

O Python está a dizer: "Deste-me o texto "25" e pediste-me para colar o número 1 nele. Consigo colar texto em texto, mas não sei colar um número de matemática a um texto!"

Como input() bloqueia a resposta do utilizador dentro de aspas, o Python vê o seu cálculo como "25" + 1, o que é uma equação matemática impossível.