Coletar entrada
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 python3
o , 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