Coletar entrada

Concluído

Até agora, você aprendeu várias construções da linguagem de programação Python. Você também é autor de alguns programas. No entanto, os programas operam com base em dados, e esses dados vêm de algum lugar. Nesta unidade, você verá mais de perto como coletar entradas da linha de comando e da entrada do usuário.

Entrada de linha de comando

Quando inicia um programa utilizando python3o , dá-lhe o nome do ficheiro a iniciar. Você também pode dar-lhe um conjunto de argumentos: dados que o programa terá acesso quando estiver em execução. Veja como isso pode parecer:

python3 backup.py 2023-01-01

No código anterior, a string "2023-01-01" pode ser usada como instrução para o programa backup.py iniciar um backup a partir dessa data. O que você ganha usando argumentos de linha de comando é flexibilidade. O programa pode se comportar de forma diferente dependendo de sua entrada externa.

Argumentos de linha de comando

Como esses comandos são capturados no lado da codificação das coisas? Usando o sys módulo, você pode recuperar os argumentos de linha de comando e usá-los em seu programa. Observe o seguinte código:

import sys

print(sys.argv)
print(sys.argv[0]) # program name
print(sys.argv[1]) # first arg

sys.argv é uma matriz ou uma estrutura de dados que contém muitos itens. A primeira posição, indicada como 0 na matriz, contém o nome do programa. A segunda posição, 1, contém o seu primeiro argumento. Suponha que o programa backup.py contém o código de exemplo e executá-lo assim:

python3 backup.py 2023-01-01

O programa produz então o seguinte resultado:

['backup.py', '2023-01-01'] 
backup.py
2023-01-01

Entrada do utilizador

Outra maneira de passar dados para o programa é fazer com que o usuário insira os dados. Você pode codificá-lo para que o programa diga ao usuário para inserir informações. Você salva os dados inseridos no programa e, em seguida, age sobre ele.

Para capturar informações do usuário, você usará a input() função. Eis um exemplo:

print("Welcome to the greeter program")
name = input("Enter your name: ")
print("Greetings " + name)

Suponha que o programa input.py contém o código de exemplo e executá-lo assim:

python3 input.py

A execução do programa convida-o a introduzir o seu nome, por exemplo:

Welcome to the greeter program
Enter your name: 

Depois de inserir um valor e pressionar Enter, a saudação é retornada:

Welcome to the greeter program
Enter your name: Picard
Greetings Picard

Trabalhar com números

A input() função armazena um resultado como uma cadeia de caracteres, portanto, o código a seguir pode não fazer o que você deseja:

print("calculator program")
first_number = input("first number: ")
second_number = input("second number: ")
print(first_number + second_number)

Executar este programa convida você a inserir o primeiro número, digamos 3:

calculator program
first number: 3

Depois de pressionar Enter, você pode digitar o segundo número, digamos 4:

calculator program
first number: 3
second number: 4

Premir Enter obtém-se o seguinte resultado:

calculator program
first number: 3
second number: 4
34

Você provavelmente queria que este programa lhe respondesse com 7 em vez de 34. Então, o que correu mal?

A explicação é que first_number e second_number são strings. Para que o cálculo funcione corretamente, você precisa alterar essas cadeias de caracteres para números usando a int() função. Ao modificar a última linha do programa a ser usado int(), você pode resolver o problema:

print(int(first_number) + int(second_number))

Executar novamente o programa com os mesmos valores agora retorna 7 como a resposta:

calculator program
first number: 3
second number: 4
7