Questão 3 (35pts). Observação: Para essa questão não é preciso desenvolver a função principal (main). Apenas as funções solicitadas nos itens a) e b).
Escreva uma função qué leia 2 valores inteiros representando, respectivamente, um dia e um mês do ano corrente (2023). Para simplificar, considere que todos os 12 meses do ano possuem 30 dias. A função deve verificar se a data informada é uma data válida. A função deve imprimir a data no formato dia/mês/2023, onde dia e mês correspondem aos valores lidos pela função. Além disso, caso seja uma data inválida, a função também deve imprimir que a data é inválida, informando o motivo (vide exemplos).
Exemplos:
Entrada
Saída
5
8
0
12
Data inválida para dia
25
20
Data inválida para mês
50
50
Data inválida para dia e mês
Escreva uma função qué leia 2 valores inteiros representando, respectivamente, um dia e um mês do ano corrente (2023). Para simplificar, considere que todos os 12 meses do ano possuem 30 dias. A função deve verificar se a data informada é uma data válida. A função deve imprimir a data no formato dia/mês/2023, onde dia e mês correspondem aos valores lidos pela função. Além disso, caso seja uma data inválida, a função também deve imprimir que a data é inválida, informando o motivo (vide exemplos).
Exemplos:
Entrada | Saída |
5 |
|
8 | |
0 |
|
12 | Data inválida para dia |
25 |
|
20 | Data inválida para mês |
50 |
|
50 | Data inválida para dia e mês |
Passo 1
Beleza! Vamos resolver essa questão juntos. O que a gente precisa fazer aqui é criar uma função que recebe dois números inteiros: um representando o dia e outro o mês de 2023. A gente vai verificar se essa data é válida, considerando que todos os meses têm 30 dias. Para resolver isso, vamos precisar entender como validar dias e meses e como estruturar uma função para fazer essas verificações.
Passo 2
Primeiro, vamos pensar em como a gente vai receber os valores. A função vai ler dois números inteiros: um para o dia e outro para o mês. Vamos chamar esses valores de
dia
e mes
.Passo 3
Agora, precisamos verificar se o dia e o mês são válidos. Como todo mês tem 30 dias, o dia deve estar entre 1 e 30, e o mês deve estar entre 1 e 12. Se qualquer um desses valores estiver fora desse intervalo, a data é inválida.
Passo 4
Para implementar isso, vamos usar estruturas condicionais (
if
, elif
e else
) para verificar cada caso:- Se o dia for menor que 1 ou maior que 30, a data é inválida por causa do dia.
- Se o mês for menor que 1 ou maior que 12, a data é inválida por causa do mês.
- Se ambos, dia e mês, estiverem fora dos intervalos, a data é inválida por ambos os motivos.
- Se tudo estiver dentro dos limites, a data é válida.
Passo 5
Vamos estruturar a função para imprimir a data no formato
dia/mês/2023
. Se a data for inválida, além de imprimir a data, também vamos informar o motivo da invalidação.Passo 6
Aqui está a função completa:
def verificar_data(dia, mes):
data_valida = True
motivo = ""
# Verificar o dia
if dia < 1 or dia > 30:
data_valida = False
motivo += "Data inválida para dia"
# Verificar o mês
if mes < 1 or mes > 12:
data_valida = False
if motivo:
motivo += " e mês"
else:
motivo += "Data inválida para mês"
# Imprimir a data
print(f"{dia} / {mes} / 2023")
# Se inválida, imprimir o motivo
if not data_valida:
print(motivo)
Resposta
Prontinho! Com essa função, você consegue verificar se uma data é válida considerando que todos os meses têm 30 dias. Ela imprime a data no formato
dia/mês/2023
e informa se a data é inválida, explicando o motivo. Por exemplo:verificar_data(5, 8)
# Saída:
# 5 / 8 / 2023
verificar_data(0, 12)
# Saída:
# 0 / 12 / 2023
# Data inválida para dia
verificar_data(25, 20)
# Saída:
# 25 / 20 / 2023
# Data inválida para mês
verificar_data(50, 50)
# Saída:
# 50 / 50 / 2023
# Data inválida para dia e mês