João Vasconcelos
João Vasconcelos11/01/2024 00:08
Share

A função input do Python

    A função nativa do Python input(), é utilizada para receber a entrada do usuário a partir do terminal - "input" significa exatamente isso em inglês. Essa é uma função simples e muito utilizada em programas de linha de comando, onde não há uma interface gráfica para se interagir. Seu funcionamento ocorre da seguinte maneira:

    input("Digite algo: ")
    

    A função é invocada, assim como qualquer outra, com os parênteses ao final. Ao ser chamada, ela abre o programa para a entrada padrão - standard in - que é o terminal, permitindo que o usuário digite alguma coisa, e aquilo que ele digitar será passado para a função. Então, a função retornará esses dados como string para a saída padrão - standard output - que é o terminal na maioria das vezes, ou para outra função ou variável a que tenha sido associada. Assim, o programa consegue receber uma resposta do usuário e gravá-lo para utilizar em um fluxo posterior.

    Perceba, porém, que há um outro argumento sendo mostrado no exemplo acima, que é a frase "Digite algo: ". Esse argumento é chamado de prompt (conforme a documentação oficial da linguagem), e será impresso no terminal, mas não será retornado para o programa junto com a resposta do usuário. O prompt é uma string simples, que não aceita o f-string, logo, se for necessário incluir caracteres ou palavras de forma dinâmica, é necessário criar uma variável separada e depois inserí-la na função, como demonstrado abaixo:

    for i in range(10):
    numero = f'Insira o {i}º argumento'
    argumento = input(numero)
    

    Apesar dessa limitação, o prompt 'embutido' foi um diferencial da linguagem Python que, até hoje, pouquíssimas linguagems copiaram, como o JavaScript - com a função prompt(), e o Elixir - com sua função IO.gets(). Isso porque o fluxo normal do algoritmo de programação é primeiro imprimir na tela a mensagem de prompt, e depois abrir um canal para receber a entrada de dados do usuário, ou seja, são duas tarefas distintas que deveriam requerer duas funções distintas.

    A junção dessas duas atividades em uma única função gera uma facilidade a mais para o programador de Python na hora de criar um código, especialmente para os iniciantes ou aqueles que apenas querem criar um programa simples para resolver uma questão corriqueira. Porém não é muito elucidativo para o estudante que está colocando em prática os conhecimentos de lógica de programação, uma vez que abstrai os passos do algoritmo subjacente. Para esse último caso, seria melhor começar com uma linguagem como Java, por exemplo, que, embora mais verbosa, força o programador a criar uma função para cada passo do algoritmo.

    Mas, voltando ao Python, após o programa receber os dados do usuário, ele pode retê-los e realizar outras tarefas com eles, conforme o fluxo determinado pelo programador. Seguindo o último exemplo, pode-se inserir cada argumento em uma lista, por exemplo, como mostrado abaixo:

    argumentos = []
    for i in range(10):
    numero = f'Insira o {i}º argumento'
    argumento = input(numero)
    argumentos.append(argumento)
    

    Há que se lembrar, entretanto, que a função input retorna dados do tipo string, e se o próximo passo for uma conta aritmética ou qualquer operação com int ou float, é necessário convertê-los primeiro. Neste ponto, uma dica é não realizar a conversão diretamente na função, mas posteriormente, como demonstrado abaixo:

    Ao invés de:

    meu_numero = int(input("Digite o número: "))
    

    Faça:

    meu_numero = input("Digite um número: ")
    try:
      meu_numero = int(meu_numero)
      ...
    except:
      print("Digite um número")
    

    Assim, o seu programa não irá retornar um erro e terminar abruptamente se o usuário inserir, ao invés de um dígito, uma letra ou outro caracter.

    Outras transformações também podem não dar tão certo quanto imaginado. Se transformado diretamente em lista, o input irá retornar cada caracter digitado pelo usuário como elemento da lista, pois ele não tem um delimitador específico para isso nativamente.

    minha_lista = list(input("Digite os argumentos: "))
    print(minha_lista)
    #['b', 'a', 'n', 'a', 'n', 'a', ',', 'm', 'a', 'ç', 'ã', ',', 'l', 'i', 'm', 'ã', 'o']
    

    Para a construção de um código seguro, é necessário ter em mente qual o tipo de dado retornado pela função, quais argumentos ela aceita, e quais outras funções podem ser utilizadas em conjunto com ela. Por isso, o entendimento completo da função requer, além da teoria, a prática extensiva, os erros e os acertos. Este texto visa mostrar alguns desses para o melhor entendimento da função input do Python.

    Share
    Comments (0)