Exercício 11 - Funções

42 views
Skip to first unread message

Daniel Luis Silva

unread,
May 9, 2023, 9:05:15 AM5/9/23
to Python Brasil
Boa noite pessoal.
Estou iniciando meus estudos em Python... estou bem no início mesmo. Estou com uma dificuldade pois não estou conseguindo puxar de dentro da função o mês após a conversão solicitada pelo exercício. Se puderem me dar uma dica. Agradeço. 

Eis o Exercício: 
Data com mês por extenso. Construa uma função que receba uma data no formato DD/MM/AAAA e devolva uma string no formato D de mesPorExtenso de AAAA. Opcionalmente, valide a data e retorne NULL caso a data seja inválida.

Minha Solução:

print("---------")
data = list(input("digite a data a ser tratada (dd/mm/aaaa): "))

dia = list()
mes = list()
ano = list()


def convert(data):
    dia.extend(data[0:2])
    mes = list(data[3:5])
    mes = [''.join(mes)]
    ano.extend(data[6:11])

    if mes[0] == "01":
        mes = "janeiro"
    elif mes[0] == "02":
        mes = "fevereiro"
    elif mes[0] == "03":
        mes = "março"
    elif mes[0] == "04":
        mes = "abril"
    elif mes[0] == "05":
        mes = "maio"
    elif mes[0] == "06":
        mes = "junho"
    elif mes[0] == "07":
        mes = "julho"
    elif mes[0] == "08":
        mes = "agosto"
    elif mes[0] == "09":
        mes = "setembro"
    elif mes[0] == "10":
        mes = "outubro"
    elif mes[0] == "11":
        mes = "novembro"
    elif mes[0] == "12":
        mes = "dezembro"
    else:
        mes = "Erro de digitação"

    mes = list(mes)
    print(*dia)
    print(*mes)
    print(*ano)
    return dia, mes, ano


convert(data)

print(dia, mes, ano)


Obs.: As saídas obtidas são as seguintes:

---------
digite a data a ser tratada (dd/mm/aaaa): 01/01/0001
0 1
j a n e i r o
0 0 0 1
['0', '1'] [] ['0', '0', '0', '1']







ACMM

unread,
May 9, 2023, 9:44:56 AM5/9/23
to python...@googlegroups.com
Eu não coloquei o código pra funcionar e levando em consideração o  que a função retorna, nesse caso, você poderia colocar da seguinte forma:

d, m, a = convert(data)
print(f'{d} de {m.title( )} de {a}')

Espero que isso ajude.

Sent from my AC&MM GalaxyaTab S7

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/6307de4b-1d61-46b2-9f8a-c2da2e86dd10n%40googlegroups.com.

Marcelo B Santos

unread,
May 9, 2023, 10:04:12 AM5/9/23
to python...@googlegroups.com
Bom dia a todos! 

Realizei alguns cursos de python e gostaria muito de ingressar no mercado como estagiário ou aprendiz na área de programação. Alguém poderia me dar uma dica de como conseguir uma colocação no mercado, não tenho nenhuma experiência.

Grato

Marcelo

Elton Senne

unread,
May 10, 2023, 5:59:08 PM5/10/23
to Python Brasil
Rapaz,

O código consegue ser mais simples.
Use uma tuple para os meses, não tem necessidade de usar if.

Ajustando seu código:
meses = ("Jan", "Fev", "Mar", "Abr", "Mai", . . .)
mes_ext = meses(int(mes)-1) #O indice inicial é 0

Usado a biblioteca datetime:
from datetime import date, datetime
import calendar

meses = ("Jan", "Fev", "Mar", "Abr", "Mai", . . .)
data_str = "2023-05-10"
data = datetime.strptime(data_str, "%Y-%m-%d")
mes_ext = meses(data.month - 1)

Estes artigos podem ajudar:

Leo

unread,
May 10, 2023, 7:04:48 PM5/10/23
to Python Brasil
Salve Daniel, bão?

Cara eu iniciei meus estudos em funções hoje. Mas acredito que posso contribuir com outras coisas que eu vi no seu código.

Se eu entendi corretamente, o exercício solicita que você entre apenas com 1 dado, DATA. Então acho que você não precisa criar um lista para cada elementado de uma DATA. Como você precisa escrever só por extenso o mês, você pode criar uma lista com os meses do ano meses = ['Janeiro', 'Fevereiro',...'Dezembro']

meses = ['Janeiro', 'Fevereiro','Março']

n = 3

print(f'{meses[n-1]}')

Então acho que sua função deva fazer isso acima.

Espero ter ajudado.

Atenciosamente.

Leonardo Sampaio.

Em terça-feira, 9 de maio de 2023 às 10:05:15 UTC-3, Daniel Luis Silva escreveu:

Jhonatan Piffer Siqueira

unread,
May 10, 2023, 8:21:44 PM5/10/23
to python...@googlegroups.com
Assim também dá:

from datetime import datetime
import locale


locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')


def trocaFormatoData(data_formato_entrada):
    try:
        date_obj = datetime.strptime(data_formato_entrada, "%d/%m/%Y")

    except ValueError:
        return "Por favor insira uma data no formato dd/mm/yyyy"

    final_format = date_obj.strftime("%d de %B de %Y")
    return final_format


print("---------")
data = input("digite a data a ser tratada (dd/mm/aaaa): ")


print(trocaFormatoData(data))



Leia esse dois links.
Entenda tudo ^^.
Não copie nada ^^.

"strptime" é uma função vinda do antigo e lendário C ^^ que recebe uma string e um formato, e com isso gera um objeto do tipo datetime.
"strftime" bla bla bla lendário C que recebe um objeto do tipo datetime e um formato e gera uma string de data para esse formato.


Vlw mano fica com deus.
Jhonatan Piffer


Reply all
Reply to author
Forward
0 new messages