Coletar entrada
Até agora, você aprendeu vários constructos da linguagem de programação Python. Você também criou alguns programas. No entanto, os programas operam com base em dados e esses dados vêm de algum lugar. Nesta unidade, você analisará mais detalhes de como é possível coletar entradas tanto da linha de comando quanto da entrada de usuário.
Entrada de linha de comando
Ao iniciar um programa usando o python3
, você atribui a ele o nome do arquivo a ser iniciado. Você também pode atribuir a ele um conjunto de argumentos: dados aos quais o programa terá acesso durante a execução. Veja como ele poderá ser:
python3 backup.py 2023-01-01
No código anterior, a cadeia de caracteres "2023-01-01" pode ser usada como uma instrução para o programa backup.py iniciar um backup a partir dessa data. Com os argumentos de linha de comando, você ganhará flexibilidade. O programa poderá se comportar de maneira diferente, dependendo da entrada externa dele.
Argumentos de linha de comando
Como esses comandos são capturados do ponto de vista da codificação? Usando o módulo sys
, você pode recuperar os argumentos de linha de comando e usá-los no programa. Examine o código a seguir:
import sys
print(sys.argv)
print(sys.argv[0]) # program name
print(sys.argv[1]) # first arg
sys.argv
é uma matriz, ou seja, uma estrutura de dados que contém vários itens. A primeira posição, indicada como 0
na matriz, contém o nome do programa. A segunda posição, 1
, contém seu primeiro argumento. Suponha que o programa backup.py contenha o código de exemplo e você o execute da seguinte maneira:
python3 backup.py 2023-01-01
O programa produzirá então o seguinte resultado:
['backup.py', '2023-01-01']
backup.py
2023-01-01
Entrada do usuário
Outra maneira de transmitir os dados para o programa é fazer com que o usuário insira os dados. É possível usar a codificação para que o programa instrua o usuário a inserir as informações. Salve os dados inseridos no programa e realize ações com base neles.
Use a função input()
para capturar informações do usuário. Veja um exemplo:
print("Welcome to the greeter program")
name = input("Enter your name: ")
print("Greetings " + name)
Suponha que o programa input.py contenha o código de exemplo e você o execute da seguinte maneira:
python3 input.py
A execução do programa convida você a inserir seu nome, por exemplo:
Welcome to the greeter program
Enter your name:
Depois que você inserir um valor e pressionar ENTER, a saudação será retornada:
Welcome to the greeter program
Enter your name: Picard
Greetings Picard
Trabalhando com números
A função input()
armazena um resultado como uma cadeia de caracteres, portanto, o seguinte código 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)
A execução desse programa convida você a inserir o primeiro número, digamos 3
:
calculator program
first number: 3
Depois de pressionar ENTER, você poderá inserir o segundo número, digamos 4
:
calculator program
first number: 3
second number: 4
Se você pressionar ENTER, obterá o seguinte resultado:
calculator program
first number: 3
second number: 4
34
Você provavelmente pretendia que esse programa respondesse a você com 7
em vez de 34
. O que deu errado?
A explicação é que first_number
e second_number
são cadeias de caracteres. Para que o cálculo funcione corretamente, é preciso transformar essas cadeias de caracteres em números usando a função int()
. Modificando a última linha do programa a usar int()
, é possível resolver o problema:
print(int(first_number) + int(second_number))
A nova execução do programa com os mesmos valores agora retorna 7
como a resposta:
calculator program
first number: 3
second number: 4
7