Introdução
Neste projeto, você aprenderá como criar um script Python que imprime todos os domingos em um determinado ano. Esta é uma habilidade útil para qualquer pessoa que precise trabalhar com datas e tarefas relacionadas ao tempo em seus projetos de programação.
👀 Pré-visualização
python Sunday.py 2022
2022-01-02
2022-01-09
2022-01-16
2022-01-23
2022-01-30
2022-02-06
2022-02-13
2022-02-20
...
🎯 Tarefas
Neste projeto, você aprenderá:
- Como usar os módulos
datetimeecalendarem Python para lidar com datas - Como escrever uma função que calcula e retorna uma lista de todos os domingos em um determinado ano
- Como lidar com a entrada do usuário e argumentos de linha de comando em um script Python
- Como aprimorar e personalizar o script para torná-lo mais flexível e amigável ao usuário
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Entender como trabalhar com datas e tempo em Python
- Escrever um script que pode imprimir todos os domingos em um determinado ano
- Personalizar o script para lidar com diferentes anos e entrada do usuário
- Aplicar seu novo conhecimento a outras tarefas relacionadas a datas em seus projetos de programação
Criar o Arquivo Sunday.py
Nesta etapa, você criará o arquivo Sunday.py e configurará a estrutura inicial do script.
- Crie um arquivo
Sunday.pyno diretório~/project.
cd ~/project
touch Sunday.py
- Adicione o seguinte código ao arquivo:
import datetime
import sys
## Function to print all the Sundays in a given year
def print_sundays(year):
sundays = [] ## List to store the Sundays
date = datetime.date(year, 1, 1) ## Start with January 1st of the given year
delta = datetime.timedelta(days=1) ## Define a timedelta of 1 day
## Find the first Sunday of the year
while date.weekday() != 6: ## 6 represents Sunday (Monday is 0 and Sunday is 6)
date += delta ## Move to the next day
## Print all the Sundays in the year
while date.year == year: ## Loop until the year changes
sundays.append(
date.strftime("%Y-%m-%d")
) ## Add the Sunday to the list (formatted as YYYY-MM-DD)
date += datetime.timedelta(
weeks=1
) ## Move to the next Sunday (increment by 1 week)
return sundays ## Return the list of Sundays
## Read the year from the command line argument
if len(sys.argv) > 1:
year = int(sys.argv[1]) ## Convert the command-line argument to an integer
sundays = print_sundays(year) ## Call the function to get the list of Sundays
for sunday in sundays:
print(sunday) ## Print each Sunday
else:
print(
"Please provide a year as a command-line argument."
) ## Display an error message if no year is provided
Este código configura a estrutura básica do script Sunday.py, incluindo a função print_sundays() e o tratamento de argumentos de linha de comando.
Entender o Código
Nesta etapa, você entenderá o propósito e a funcionalidade do código no arquivo Sunday.py.
- A função
print_sundays()recebe um parâmetroyeare retorna uma lista de todos os domingos naquele ano. - A função começa criando um objeto
datetime.datecom oyearfornecido e o primeiro dia do ano (1º de janeiro). - Em seguida, ela encontra o primeiro domingo do ano iterando pelos dias até que o dia da semana seja 6 (domingo).
- Uma vez que o primeiro domingo é encontrado, a função entra em um loop que continua até o final do ano. Em cada iteração, ela adiciona o domingo atual à lista
sundayse avança para o próximo domingo (adicionando umtimedeltade 1 semana). - Finalmente, a função retorna a lista de domingos.
- A parte principal do script lê o ano do argumento da linha de comando e chama a função
print_sundays()com o ano fornecido. Em seguida, ele imprime cada domingo na lista. - Se nenhum argumento de linha de comando for fornecido, o script exibe uma mensagem de erro.
Executar o Script
Nesta etapa, você executará o script Sunday.py e observará a saída.
- Abra um terminal e navegue até o diretório
/home/labex/project. - Execute o script
Sunday.pycom um ano específico como um argumento de linha de comando:
python Sunday.py 2022
Você deve ver a seguinte saída:
2022-01-02
2022-01-09
2022-01-16
2022-01-23
2022-01-30
2022-02-06
2022-02-13
2022-02-20
2022-02-27
2022-03-06
2022-03-13
2022-03-20
2022-03-27
2022-04-03
2022-04-10
2022-04-17
2022-04-24
2022-05-01
2022-05-08
2022-05-15
2022-05-22
2022-05-29
2022-06-05
2022-06-12
2022-06-19
2022-06-26
2022-07-03
2022-07-10
2022-07-17
2022-07-24
2022-07-31
2022-08-07
2022-08-14
2022-08-21
2022-08-28
2022-09-04
2022-09-11
2022-09-18
2022-09-25
2022-10-02
2022-10-09
2022-10-16
2022-10-23
2022-10-30
2022-11-06
2022-11-13
2022-11-20
2022-11-27
2022-12-04
2022-12-11
2022-12-18
2022-12-25
A saída mostra todos os domingos do ano de 2022.
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



