Vim aqui porque travei no ex109, e realmente eu estava fazendo de outro jeito mais complicado. Ao invés de copiar o ex107 para o 108, eu importei o moeda107 para o 108, o que fez meu código ficar maior e mais complicado, por isso é sempre bom ver os vídeos de exercícios
Com certeza, o que bugou não foi nem o exercicio em si. Mas esse lance de pastas .. kkkk, tem alguma rede social pra trocarmos uma ideia sobre o curso irmão?
POR FAVOR LEIA! Guanabara , não estou conseguindo estudar nos moldes atuais dos exercícios, antigamente, todo conhecimento necessário era passado durante as aulas, então eu criava a minha resposta e só então comparava com a sua, via os acertos e erros e aprendia muito. Quando você começou a introduzir conteúdos dentro dos exercícios eu passei somente a assistir a resolução enquanto digitava simultaneamente e depois tento entender o que digitei, e resultou que o meu entendimento ficou muito mais raso
Realmente achei isso incômodo no inicio, mas depois fui gostando, tentando fazer do meu jeito, me esforçava mais em criar saídas alternativas, acho que mostrar outros métodos nos exercícios é algo que expande e nos ajuda a exercitar a mente com o que a gente já sabe. Também acho que ter conteúdo nos exercicios motiva-nos à olha-los, pois também é uma aula.
@@emilyspecht8818 , Discordo. Eu gostava da forma anterior. Mesmo resolvendo os exercícios, assistia todas as resoluções para ver se havia alguma forma nova de resolver o problema. De qq forma, a aula me dava conhecimento para fazer os exercícios. Eu realmente tinha como exercitar. Nesta nova forma, dando conteúdo apenas no exercício, vc simplesmente fica vendido. Fica perdendo tempo e pode até deixar de resolver sozinho, caso seja novato e não tenha background. *Isso é PÉSSIMO* !!! Achei super errado. Se tem gente que não assiste, não deveria piorar para quem já é interessado e assiste tudo.
@@marcelobhering1600 eu entendo a frustração, também tive dificuldade quando fiz o curso, mas agora que trabalho na área, sei o quão importante é essa autonomia imposta quando somos obrigados a pesquisar uma saída, nós aprendemos pesquisando e aprendemos a pesquisar. Quando você trabalhar na área, vai perceber que vai ter que pesquisar MUITO, e acho que esse é o maior aprendizado para um programador: aprender a pesquisar. Um programador que não sabe pesquisar, o que pesquisar, como pesquisar e onde pesquisar, não vai sair muito do lugar, não vai expandir o conhecimento e talvez não faça bons códigos. Confie em mim, você não vai procurar um emprego de programador apenas quando souber tudo sobre uma linguagem, pois existe um mar infinito de coisas dentro dela. Talvez quando você encontrar um emprego, você tenha que aprender novas tecnologias, e você não vai ter conhecimento. Acredite, ninguém vai te dar o código pronto, você vai ter que pesquisar! Aqui estamos aprendendo na marra a importância da pesquisa, o Guanabara é um baita professor por estar fazendo conteúdo assim. E tem outro ponto que eu gostaria de citar: preparar um conteúdo, gravar e editar não é tão simples. No curso de python, acredito que a maior parte do tempo foi dedicado para produzir os vídeos de exercícios. Mas para que, se pouquíssimos olham? Isso foi uma técnica dele para que mais pessoas olhassem os exercícios.
@@marcelobhering1600 eu entrei na empresa na qual trabalho sabendo python, javascript e a base do react. Tive que aprender na prática, na marra, pesquisando, a codar em flask, a entender e aprender as querys do Mongodb, conceitos mais profundos de python, react e javascript, tive que aprender Sass, aprofundar o conhecimento em git e agora estou tendo que estudar Nextjs. Tu acha que tem tempo de olhar um curso no meio da correria do trabalho? No máximo um curso introdutório, o resto tu aprende na prática, pesquisando muito. Sou desenvolvedora Fullstack. Agradeço ao Guanabara por esse curso incrível, todo o conteúdo de python que levei para a empresa, foi ele quem me dispôs. Sim, dá para arrumar um emprego somente com esse curso que o Guanabara fez, MAS SOMENTE SE VOCÊ SOUBER PESQUISAR. Se não, você não dura uma semana! Aprendi POO em python só pesquisando e olhando código dos outros.
@@emilyspecht8818 , Acho que não me fiz entender. Vou explicar de outra forma. Em nenhum momento eu disse que não é possível entender, pesquisando sozinho. Sei disso na prática porque sou Engenheiro Mecânico pela UFRJ. Basicamente, todo estudante de lá aprendeu sozinho para se formar uma vez que a maioria esmagadora das aulas são PESSIMAMENTE ensinadas. Portanto, é possível, mas o quis dizer é que existem 2 formas de aprender: 1) Alguém ensinado os conceitos e propondo exercícios (=desafios) para vc aplicar os seus conceitos e os solidificar na prática, 2) Vc pesquisando em inúmeros sites, batendo cabeça (muitos são ruins e não respondem a sua dúvida de forma objetiva), até conseguir pegar os conceitos para só depois poder resolver os exercícios propostos, ou seja, um *ENORME* tempo gasto, *que pode ser agravado* caso não se consiga descobrir a solução e o Guanabara demore para lançar o vídeo mostrando como se faz. E neste caso, vc aprederá a solução, mas ficará sem um exercício para praticar o que aprendeu, uma vez que o exercício já foi resolvido. Percebeu a diferença ???🤔 Portanto, a 1º maneira (que o Guanabara fez até um pouco antes do exercício 100 é a forma *mais EFICIENTE* de ensinar. A 2º maneira (a mais comum das vídeos aulas no RUclips) é o famoso "dê um Google". Isso gasta mais tempo para avançar um pequeno passo. Não nos impede de chegar ao objetivo, mas o tempo é maior. *Eficiência em ensinar é criar pontes e incentivar caminhada sobre elas. Se vc ainda precisar fazer a ponte, obviamente, vai gastar mais tempo até poder atravessá-la, ou seja, vai fazer menos resultado com os recursos que se tem* (recurso = tempo) Portanto, a questão não é poder se virar sozinho. A questão é desistir da forma mais EFICIENTE de ensinar, se igualando a maioria que tem por aí, apenas para ganhar views em mais vídeo (vídeos de exercícios). Entendeu agora? 🤔
Esse foi a função que fiz e deu certo da mesma maneira: def moeda(função): return f'R${função:.2f}'.replace('.', ',') Acredito que nos próximos exercícios ele não funcione, já que vamos fazer a conversão de moeda, mas para o momento funcionou perfeitamente.
Parabéns, Guanabara, ótimo trabalho! Mais um pra conta: import moedas p = float(input('Digite o preço em R$ ')) print(f'A metade de {moedas.moeda(p)} é {moedas.moeda(moedas.metade(p))}') print(f'O dobro de {moedas.moeda(p)} é {moedas.moeda(moedas.dobro(p))}') print(f'Aumentando 10%, temos {moedas.moeda(moedas.aumentar(valor=p, p=10))}')
Putz kkkkkk, tava fazendo o ex108 só que nada funcionava. Daí puto da vida, vim aqui ver a resolução, e percebi que estava fazendo alterações no ex108 e executando o ex107 kkkkkkkk
o PyCharm até avisa que vc tem 2 arquivos abertos com o mesmo nome, ele altera o nome do arquivo. Quando vc vai testar, tem que dar run em cima do arquivo atual, se não vc vai rodar o arquivo antigo. Fiquei 3 min mexendo até lembrar kkk
Alô, Mundo! Mestre GG, galera... saudações. Achei muito legal a idéia do REPLACE ponto por vírgula, para a saída formatada. E como tenho tomado "alguns tombos" na hora de digitar valores de ponto flutuante (hábito de digitar vírgulas), fui testar a idéia de dar replace no INPUT. Muitoooo legal, funcionou. (abaixo) p = float(input('Digite preço: R$ ').replace(',','.')) desta forma, se eu esquecer e digitar vírgula (250,25) nunca dá erro (ele transforma para 250.25) ;) Abraços.
Boa, eu tentei usar isso ai, mas n tava conseguindo pq eu tava usando o replace no valor que foi transformado em float. Quando eu vi teu comentario vi q vc colocou dentro da função de float e funcionou kkkkk mó viagem
Meu código: def real (n): n2 = format(n,'.2f') #format(n,'.2f') é pra deixar o codigo com 2 flutuantes depois do ponto ex: disso > 2.0 pra isso > 2.00 n2 = str(n2) n2 = f'R${n2}' n2 = n2.replace('.',',') return n2
Fiz de um modo mais básico, só não sei se tem algum problema com a função desse modo, mas funcionou bem na prática. def moeda(n=0): """ Essa função mostra um valor configurado de modo monetário(com cifrão, vírqula...) :param n: É o valor que será formatado :return: string formatada """ return f'R${n:.2f}'.replace('.', ',')
#minha função de formatar ficou assim (antes de ver o vídeo) def formatar(txt): text = str(txt) pos_virg = text.find(".") if (len(text) - 1) - pos_virg == 0: text += "00" elif (len(text) - 1) - pos_virg == 1: text += "0" texto = text.replace(".", ",") return f"R${texto}"
No vscode tem um erro de ModuleNotFoundError que ele não encontra um modulo chamado ex108. O jeito foi deixar o arquivo teste.py fora da pasta ex108 e não tive mais problema
Eu fiz assim como estou no Android... def dobro(a): return print(f"O dobro de R${a} é R${a * 2:.2f}") def metade(a): return print(f"A metade de R${a} é R${a / 2:.2f} ") def aumentar(a): b = a * 10/100 return print(f"Aumentando em 10%, temos R${b + a:.2f}") n = float(input("Digite o preço:R$")) metade(n) dobro(n) aumentar(n)
Eu compliquei um pouco pra fazer, pq pensei que tinha que ser assim, mas foi até bom pq testei o que imaginei que daria certo e deu mesmo from Desafios.ex107.moeda import * def moeda(n): return f'R${n:.2f}'.replace('.', ',') E com todos os outro fiz isso, não dei ctrl+c, ctrl+v, só importei o ultimo pacote e modifiquei o que precisava
Guanabara, vc poderia facilitar o acesso ao Estudonautas, uma vez q a maioria do seu público é estudante é mt difícil pagar mensalmente um valor de R$60 pois a maioria n tem renda, mas se vc disponibilizasse a compra de cursos separadamente, com a opção de boleto tbm, acredito q facilitaria para muitas pessoas, deixando as 2 opções seu público aumentaria.
Professor Guanabara, poderia fazer um (ou mais) vídeo(s) mostrando como criar executáveis partindo do zero até a interface? Por gentileza e agradecido ^^
é possível fazer dessa maneira também kk p = int(input('Digite o preço: R$')) print(f'A metade de R${p},00 é R${int(moeda.metade(p))},00') print(f'O dobro de R${p},00 é R${moeda.dobro(p)},00') print(f'Aumentando 10%, temos R${int(moeda.aumentar(p, 10))},00')
Inicialmente eu fiz assim: Main: from ex108 import moeda preco = float(input('Digite o preço: R$ ')) print(f'A metade de {moeda.moeda(preco)} é {moeda.moeda(moeda.metade(preco))}') print(f'O dobro de {moeda.moeda(preco)} é {moeda.moeda(moeda.dobro(preco))}') print(f'Aumentando em 10%, temos {moeda.moeda(moeda.aumento(preco, 10))} ') print(f"Diminuindo 13%, temos {moeda.moeda(moeda.diminuir(preco, 13))}") Módulo: def metade(numero): return numero / 2 def dobro(numero): return numero * 2 def aumento(numero, porcentagem): return numero + (porcentagem / 100) * numero def diminuir(numero, porcentagem): return numero - (porcentagem / 100) * numero def moeda(numero): numero = f'{numero:.2f}' numero = str(numero) trocar = numero.replace('.', ',') return f'R${trocar}' Mas depois eu vi o comentario de um cara ai, dai reorganizei o meu módulo na def moeda: def metade(numero): return numero / 2 def dobro(numero): return numero * 2 def aumento(numero, porcentagem): return numero + (porcentagem / 100) * numero def diminuir(numero, porcentagem): return numero - (porcentagem / 100) * numero def moeda(numero): return f'R${numero:.2f}'.replace('.', ',')
Achei muito foda essa resolução. A minha solução ficou meio confusa, comparada a do Guanabara, mas eu consegui fazer usando só um def. ===================================================================== arquivo funções.py ===================================================================== def conta(preço,a): """ O contador retorna apatir de um preço (valor númerico) sua metade seu dobro e um aumento de 10% :param preço: Um valor númmerico base para todos os cálculos :param a: Um identificador de retorno ex: a = 0 then return metade :return: a depender do valor de a, retorna metade, dobro e aumento de 10% """ metade = f"{preço/2:.2f}" dobro = f"{preço*2:.2f}" aumento = f"{preço*1.1:.2f}" preço = f"{preço:.2f}" if a == 0: return f"A metade de R${preço.replace('.',',')} é R${metade.replace('.',',')}" if a == 1: return f"O dobro de R${preço.replace('.',',')} é R${dobro.replace('.',',') }" if a == 2: return f"Aumentando 10% de R${preço.replace('.',',')} temos R${aumento.replace('.',',')}" ===================================================================== arquivo ex108.py ===================================================================== import funções valor = float(input("Digite o preço: ")) for c in range(3): print(funções.conta(valor,c))
#Ex108 >>Já resolvi o problema da virgula, hehehe #Só o código principal pra poupar a leitura '-' import mod p = input('Digite o preço: R$').replace(',', '.') p = float(p) print(f'A metade de {mod.moeda(p)} é {mod.moeda(mod.metade(p))}') print(f'O dobro de {mod.moeda(p)} é {mod.moeda(mod.dobro(p))}') print(f'Aumentar 10% temos {mod.moeda(mod.aumentar(p, 10))}')
#Na aba moeda.py: def metade(n): m = n / 2 return m def dobro(n): d = n * 2 return d def aumentar(n, p): a = n + (n * (p / 100)) return a def reduzir(n, p): a = n - (n * (p / 100)) return a def forma(msg): a = f'R${msg:.2f}' return a #Na aba do exercicio: import moeda v = float(input('Digite o preço: R$')) print(f'A metade de {moeda.forma(v)} é {moeda.forma(moeda.metade(v))}') print(f'O dobro de {moeda.forma(v)} é {moeda.forma(moeda.dobro(v))}') print(f'Aumentando 10%, temos {moeda.forma(moeda.aumentar(v, 10))}') print(f'Diminuindo 13%, temos {moeda.forma(moeda.reduzir(v, 13))}')
ÓLA TEM COMO ME AJUDAR? Meu codigo não funciona no vscode se vc tive a solução por favor me ajuda. Gente estou com dificuldade estou tentando executar o código no vs code e não funciona tentei no pycharm pensando que era alguma coisa da expensão e tbm não pega. acho que estou fazendo algo errado, mas não encontro o erro me ajudem ai por favor se souberem o erro. def diminuir (preço, taxa): r = preço - (preço * taxa/100) return r def aumentar (preço, taxa): r = preço + (preço * taxa/100) return r def dobrar (preço): r = preço * 2 return r def dividir (preço): r = preço / 2 return r
#codigo principal import moeda#codigo preço = float(input('Preço: ')) taxa = int(input('% : ')) print(f'O preço dividido por 2 {dividir(preço)}') print(f'O dobro {dobrar(preço)}') print(f'O aumento com taxa de {taxa} é {aumentar()} ') print(f'E a diminuição com a taxa de {taxa} é de {diminuir(preço, taxa)}')
Adoro seus vídeos, mas poderia ter explicado que a saída de uma F'STRING muda tudo o que tiver dentro para STRING facilitaria minha vida com o simples replace que voçê mostrou trocando ponto por vírgula
a solução que eu usei foi a mais, como a maioria dizem, a correta, usei o modulo LOCALE para fazer ess formatação. no meu módulo MOEDA.PY, ficou assim: import locale locale.setlocale(locale.LC_MONETARY, 'Portuguese_Brazil.1252') def metade(preço=0): return preço/2 def dobro(preço=0): return preço*2 def aumentar(preço=0, taxa=0): return preço + (preço * taxa/100) def reduzir(preço=0, taxa=0): return preço - (preço * taxa/100) def moeda(preço): return f'{locale.currency(preço)}' mas a solução de guanabara tb é boa. mas acredito que seja muito limitada.
Pessoal, sei que a maioria está tendo problemas com o PyCharm porque ele trava demais (talvez um dos motivos é porque ele foi desenvolvido em Java...). Estou fazendo os exercícios e anotações tudos no Jupyter Notebook. É uma boa alternativa...
Digite o preço: R$100 R$100.00 R$50.00 A metade de None é None R$100.00 R$200.00 O dobro de None é None R$113.00 Aumentado 13% temos None R$90.00 Diminuindo 10% temos None o meu tava ficando assim
Bem, criei uma variável global e pus a função moeda() dentro de cada uma outra função. Funcionou (está faltando a definição de 2 decimais, mas vou aprender assistindo à resolução pelo professor, fora alguns aperfeiçoamentos no meu código). def dobro(preco): global dobro moeda(preco) dobro = precoconv*2 return str(dobro).replace('.', ',') def metade(preco): moeda(preco) metade = precoconv*0.5 return str(metade).replace('.', ',') def aumentar(preco): moeda(preco) aumento = precoconv*1.10 return str(aumento).replace('.', ',') def diminuir(preco): moeda(preco) desconto = precoconv*0.90 return str(desconto).replace('.', ',') def moeda(preco): global precoconv preco2 = preco.replace(',', '.') precoconv = float(preco2) ------------------- O programa em si permaneceu o mesmo, só mudei o módulo moedas.py: ''' Adapte o código do desafio 107 criando uma função adicional chamada moeda() que consiga mostrar os valores formatados monetariamente. ''' import moedas preco = str(input('Digite o preco: R$ ')) metade = moedas.metade(preco) dobro = moedas.dobro(preco) aumento = moedas.aumentar(preco) desconto = moedas.diminuir(preco) print(f'A metade de {preco} é {metade}') print(f'O dobro de {preco} é {dobro}') print(f'Preço aumentou 10%, agora custa {aumento}') print(f'Ofereço um desconto de 10%, o preço passa para {desconto}')
Minha função moeda ficou com algumas linhas a mais porque não usei .replace(): def moeda(num=0, moeda='R$'): n = str(moeda) for digt in str(f'{float(num):.2f}'): if digt == '.': n += ',' else: n += digt return n
Eu tava c as duas paginas do 108 abertas, mas tava executando a pagina de 'solução' do 107. Quando abri as novas paginas so fiquei executando e reexecutando ai não via a diferença que eu tinha escrito nas def, quase surto
Saudações meus queridos compartilhadores de conhecimento, somos muitos quando juntos, mas poucos separados então segue a minha solução: no pacote moeda:
Módulo: def formatar(num): a = f'R${num:.2f}'.replace('.', ',') return a def metade(num): resp = num / 2 return resp def dobro(num): resp = num * 2 return resp def aumentar(num, tanto): resp = num + (num * tanto / 100) return resp # ----------------------------------------------------------------------- # programa principal from ex108 import moeda p = float(input('Digite o preço R$:')) print(f'A metade de {moeda.formatar(p)} é {moeda.formatar(moeda.metade(p))}') print(f'O dobro de {moeda.formatar(p)} é {moeda.formatar(moeda.dobro(p))}') print(f'Aumentando 10%, temos {moeda.formatar(moeda.aumentar(p, 10))}')
5 лет назад+1
Professor convida Alfredão para participar de alguma aula de python, vai ser da hora kkkkkk
Agora sim minha dúvida do video anterior foi sanada. Tenho sim que recriar o arquivo moeda. Eu havia feito os exercícios alterando sempre só o arquivo do 107 e importando o 107 em todos os exercícios seguintes 😅
meu def moeda ficou assim: def moeda(preço): res = str(f'{preço:.2f}') if '.' in res: res = res.replace('.', ',') return f'R${res}' mas mais pra frente eu sei que vai complicar rs
Funções --------------------------- def dobro(num): r = num * 2 return r def metade(num): r = num / 2 return r def aumentar(num, porcent): r = num + (porcent/100 * num) return r def diminuir(num, porcent): r = num - (porcent/100 * num) return r def moeda(val, moeda='R$'): return f'{moeda}{val:.2f}'.replace('.', ',') ============================================================== #Enunciado: Adapte o ex107 onde os valores lidos sejam formatados from moeda import * def det(simb='-', comp=60): print(simb * comp) det() num = float(input('Digite um preço: R$')) print(f'O dobro de {moeda(num)} é {moeda(dobro(num))}') print(f'A metade de {moeda(num)} é {moeda(metade(num))}') print(f'{moeda(num)} + 10% é {moeda(aumentar(num, 10))}') print(f'{moeda(num)} - 10% é {moeda(diminuir(num, 10))}') det() ======================================= Essa foi minha resolução
Esse é o último mundo ou terá Mundo 4? Alguém sabe? *Talvez ele tenha dito em algum vídeo quantos serão, mas ainda não comecei o curso e só to perguntando pra eu me organizar e me planejar
fiz os mesmos passos, copiei e colei a pasta e renomeei para ex108, mas ele n reconhece que existe quando faço "from ex108 import moeda" mudou algo em 2021?
SEGUE O EXERCÍCIO DE UMA FORMA MAIS ORGANIZADA: SCRIPT: from pacote.modulo import * preco = float(input('Digite o preço: R$')) print(f'A metade de {moeda(preco)} é {moeda(metade(preco))}') print(f'O dobro de {moeda(preco)} é {moeda(dobro(preco))}') print(f'Aumentando 10% nós temos {moeda(aumentar(preco))}') MÓDULO: def aumentar(valor): return valor + (valor / 100 * 10) def dobro(valor): return valor * 2 def metade(valor): return valor / 2 def moeda(valor): return f'R${valor:.2f}'.replace('.', ',')
E eu que fiquei uns bons minutos com um erro aqui KKKKKK porque a função já retornava com tudo formatado, mas no programa mesmo eu formatava de novo :.2f aí dava erro e era essa miserinha só
Amigo, consegue me dar uma força? Estou tentando usar o replace porém o '.' não é substituído. Meu código: def reais(n): p = str(f'R${n}').replace('.', ',0') return p
No meu módulo "moeda.py", ficou assim: def metade(pre): r = pre / 2 return r def dobro(pre): r = pre * 2 return r def aumentar(pre, taxa): r = pre + (pre * taxa/100) return r def moeda(pre): return f'R${pre:.0f},00'
Olá professor, estou com um pequeno problema na leitura de uma função que criei e não consigo resolver. Toda vez que chamo minha função para formatar um valor em um print formatado ele faz quebra de linhas em todos os valores e eu queria deixa em uma linha única, como faço para resolver?
def metade(num=0): """ Retorna a metade do valor "num" :param num: o número a ser reduzido pela metade :return: retorna um float igual à metade do valor num, com 2 casas decimais """ num = float(num/2) return round(num, 2) def dobro(num=0): """ Retorna o dobro do valor "num" :param num: o valor a ser dobrado :return: retorna um float igual à metade do valor num, com 2 casas decimais """ num = float(num*2) return round(num, 2) def aumentar(num=0, x=0): """ Retorna o valor num + x% :param num: o valor inicial :param x: a porcentagem do aumento de num :return: retorna um float igual a num *= x% """ total = num + (num * x/100) return round(total, 2) def diminuir(num=0, x=0): """ Retorna o valor num - x% :param num: o valor inicial :param x: a porcentagem de diminuição de num :return: retorna um float igual a num / x% """ total = num - (num * x/100) return round(total, 2) def moedas(valor=0): """ Formata o valor em estilo monetário de reais :param valor: o valor em reais a ser formatado :return: Retorna o valor com R$ antes, e com duas casas decimais """ final = f'R${valor:.2f}'.replace(".", ",") return final from modulos.pacote_exercicios.moedas import * p = float(input('Digite um número: ')) print(f'A metade de {moedas(p)} é {moedas(metade(p))}') print(f'O dobro de {moedas(p)} é {moedas(dobro(p))}') print(f'Aumentando 17% de {moedas(p)}, temos {moedas(aumentar(p, 17))}') print(f'Diminuindo 23% de {moedas(p)}, temos {moedas(diminuir(p, 23))}')
Guanabara iniciei o curso de algoritmos, porém não consigo baixar o material do curso lá no teu site, os links estão quebrados, tem como arrumar? Por gentileza!! Desde já agradeço!
Mesma dúvida. Por isso fiz assim: def moeda(n): i = int(n) d = int(100*(n - i)) return f'R$ {i},{d}' Redefini a parte inteira e fracionária do valor como int e construí um retorno que os usasse.
Cara, acho que entendi. O return da função foi declarado na forma de string. Por isso o replace pode ser operado sobre o resultado do return, pois ele trata o resultado do return como uma string que usa floats.
gostaria que me tirassem uma duvida, como que usa o /end pra pular linha? Vi o Guanabara fazendo em alguma aula mas n lembro qual foi, n queria ter que colocar mais print ou coisa assim atoa
a minha resposta do exercicio ficou da seguinte forma: def metade(num): return num/2 def dobro(num): return num*2 def aumentando(num, m): return num + (m/100)*num def diminuindo(num, d): return num - (d/100)*num def moeda(num): return f'R$ {num:.2f}'.replace('.', ',') # programa principal import moeda number = float(input('digite o preço: R$ ')) print(f'A metade de {moeda.moeda(number)} é {moeda.moeda(moeda.metade(number))} ' f'O dobro de {moeda.moeda(number)} é {moeda.moeda(moeda.dobro(number))} ' f'Aumentando 10%, temos {moeda.moeda(moeda.aumentando(number, 10))} ')
Pessoal to postando aqui por ser o mais recente... alguém sabe decifrar este erro, to completamente perdido: Fatal Python error: Py_Initialize: unable to load the file system codec ModuleNotFoundError: No module named 'encodings'
caraca... o comando from ex108 import moeda nao funciona no meu pycharm... ja marquei a pasta como source root e nada faz o IDE reconhecer o arquivo... alguem teve esse problema ae ?
O que eu fiz não se encaixa nem nos padrões de gambiara ; oq eu eu fiz foi esquizofrênico def formatacao(valor): reais = f'{valor:.2f}' final = 'R$' for letra in reais: if letra == '.': letra = ',' final += letra return final
Então eu venho estudando a um tempo com vocês, na verdade desde o inicio e comprei um livro de introdução de Python e encontrei a função.replace( >>>>) e acabei não modificando o escopo local do exercício 107. ficou assim.... OBS: Ao invés de criar uma pasta Moeda() eu criei Uteis(), porque ? também não sei hahahahahah segue o código: import Uteis num = float(input('Digite o preco: R$')) print(f"O valor digitado é de R${num:.2f}".replace('.',',')) print(f'A metade de R${num:.2f} é R${Uteis.divisao(num):.2f}'.replace('.',',')) print(f'O dobro de R${num:.2f} é R${Uteis.multiplicacao(num):.2f}'.replace('.',',')) print(f'Com aumento de 10% fica em R${Uteis.aumento(num, 10):.2f}'.replace('.',',')) print(f'Com reducao de 13% fica em R${Uteis.reducao(num, 13):.2f}'.replace('.',','))
por quê vc exclui o vídeo q ensina tirar o certificado no site? por quê não tô conseguindo tirar o certificado? tô fazendo tudo que o site manda. por quê nunca vi ninguém q conseguiu esse certificado?
Professor, por gentileza, volte a ensinar os conteúdos nas aulas, deixando os exercícios para podermos realmente treinar com as informações passadas. Explicar coisas que "faltam" nos exercícios é terrível e atrapalha a nossa chance de tentar resolver o problema sozinho. Isso fica bem evidente para quem não tem Background pq é novato em programação, e não tem condições para resolver o exercício sem colar. Infelizmente, isso está atrapalhando com a sua didática que sempre foi considerada excepcional... Por favor, volte a forma anterior no Mundo4 !!!
Eu acho que está completamente correto, mas eu gostaria de uma ajuda até pq seu comentario é o mais atual. meu codigo não funciona. todos os arquivos estam no msm diretório mas nao funciona. se tiver a resposta sobre esse erro me ajuda ai por favor. Gente estou com dificuldade estou tentando executar o código no vs code e não funciona tentei no pycharm pensando que era alguma coisa da expensão e tbm não pega. acho que estou fazendo algo errado, mas não encontro o erro me ajudem ai por favor se souberem o erro. def diminuir (preço, taxa): r = preço - (preço * taxa/100) return r def aumentar (preço, taxa): r = preço + (preço * taxa/100) return r def dobrar (preço): r = preço * 2 return r def dividir (preço): r = preço / 2 return r
#codigo principal import moeda#codigo preço = float(input('Preço: ')) taxa = int(input('% : ')) print(f'O preço dividido por 2 {dividir(preço)}') print(f'O dobro {dobrar(preço)}') print(f'O aumento com taxa de {taxa} é {aumentar()} ') print(f'E a diminuição com a taxa de {taxa} é de {diminuir(preço, taxa)}')
@@delvechioduarte1394 , havia alguns erros no seu código, conforme abaixo: *No programa principal* *linha 8* - Faltou a inclusão da variável preço dentro da função aumentar() *linha 8* - faltou a inclusão do 2º parâmetro para a função aumentar(), pq são necessários 2 parâmetros (uma vez que vc não colocou nenhum deles como opcional). Se colocar por exemplo "taxa=0" no módulo aumentar ou diminuir, vc poderia deixar em branco no programa principal como vc fez. Do contrário, dá erro mesmo pq o programa espera 2 parâmetros obrigatórios. *linha 6 até linha 9* - Faltou colocar o caminho correto para o módulo, uma vez que usou o comando "import moeda". A outra opção seria usar o comando "from moeda import dividir, dobrar, aumentar, diminuir". Aí, bastaria colocar como vc escreveu em cada print. Fazendo estas correções (eu já testei) funcionou o seu código. Sugiro melhorar a parte de formatação na hora de "printar". Ficou bem feio (sem o valor %, R$, etc...), mas não mexi pq acho que não seja o foco agora. *Seu código corrigido* #codigo principal import moeda preço = float(input('Preço: ')) taxa = int(input('% : ')) print(f'O preço dividido por 2 {moeda.dividir(preço)}') print(f'O dobro {moeda.dobrar(preço)}') print(f'O aumento com taxa de {taxa} é {moeda.aumentar(preço)} ') print(f'E a diminuição com a taxa de {taxa} é de {moeda.diminuir(preço, taxa)}')
#A mi manera en español def mitad(cant=0): m = cant/2 return m def doble(canti=0): d = canti*2 return d def aumentar(cantid=0,per=0): a = cantid*(1+per/100) return a def disminuir(cantida=0,perc=0): di = cantida*(1-perc/100) return di def moneda(cantidad=0): txt = f'R${cantidad:.2f}' x = txt.replace(".",",") return x
O que eu fiz ficou muito bom: tipo o usuário digitou 3235654 devolve: R$3.235.654,00 def aumentar(preco=0, taxa=0): return preco + (preco * (taxa / 100)) def diminuir(preco=0, taxa=0): return preco - (preco * (taxa / 100)) def metade(preco=0): return preco / 2 def dobro(preco=0): return 2 * preco def moeda(preco=0, moeda1='R$'): valor = '' if int(preco) - preco == 0.0: aux = int(preco) p = str(aux) for i, c in enumerate(p): if (len(p) - (i + 1)) % 3 == 0 and len(p) - i > 2: valor += c + '.' else: valor += c if len(p) - i == 1: valor += ',00' else: inteira = f'{(preco - int(preco)):.2f}' # pega a parte decimal com duas casas que é por exemplo: '0.00' tamamho 4 resto = ',' + inteira[2] + inteira[3] # quarda em resto ',00' por exemplo aux = int(preco) p = str(aux) # 2000000 for i, c in enumerate(p): if (len(p) - (i + 1)) % 3 == 0 and len(p) - i > 2: valor += c + '.' else: valor += c if len(p) - i == 1: valor += resto # concatena o ',00' no final return f'{moeda1}{valor}'
Estude pelo nosso site e tire certificado de 40 horas. Curso completo em:
www.cursoemvideo.com/curso/python-3-mundo-3/
Guanabara. partiu mundo 4?
Estamos esperando em 2022.
o melhor curso de python não pode parar.
e lá se foi mais um ano
Real tem mais algumas palavras chaves disponível no python como o 'class' por exemplo.
É, espero algum dia ver esse mundo [;
eu vi um corte de um podcast dele dizendo que ia sair em 2024@@sirmewth
@@kaiorodrigues7686 to ligado, mas ainda esperando kk
Não costumo comentar em vídeos, mas sem dúvida seu canal me ajudou e muito a crescer como programador e sua didática e sua forma de ensinar é perfeita
Vim aqui porque travei no ex109, e realmente eu estava fazendo de outro jeito mais complicado. Ao invés de copiar o ex107 para o 108, eu importei o moeda107 para o 108, o que fez meu código ficar maior e mais complicado, por isso é sempre bom ver os vídeos de exercícios
Com certeza, o que bugou não foi nem o exercicio em si. Mas esse lance de pastas .. kkkk, tem alguma rede social pra trocarmos uma ideia sobre o curso irmão?
poderia colocar um nome diferente do módulo "moeda" para a função 'moeda'. Tirando isso, perfeito!!!
POR FAVOR LEIA! Guanabara , não estou conseguindo estudar nos moldes atuais dos exercícios, antigamente, todo conhecimento necessário era passado durante as aulas, então eu criava a minha resposta e só então comparava com a sua, via os acertos e erros e aprendia muito. Quando você começou a introduzir conteúdos dentro dos exercícios eu passei somente a assistir a resolução enquanto digitava simultaneamente e depois tento entender o que digitei, e resultou que o meu entendimento ficou muito mais raso
Realmente achei isso incômodo no inicio, mas depois fui gostando, tentando fazer do meu jeito, me esforçava mais em criar saídas alternativas, acho que mostrar outros métodos nos exercícios é algo que expande e nos ajuda a exercitar a mente com o que a gente já sabe. Também acho que ter conteúdo nos exercicios motiva-nos à olha-los, pois também é uma aula.
@@emilyspecht8818 , Discordo. Eu gostava da forma anterior. Mesmo resolvendo os exercícios, assistia todas as resoluções para ver se havia alguma forma nova de resolver o problema. De qq forma, a aula me dava conhecimento para fazer os exercícios. Eu realmente tinha como exercitar.
Nesta nova forma, dando conteúdo apenas no exercício, vc simplesmente fica vendido. Fica perdendo tempo e pode até deixar de resolver sozinho, caso seja novato e não tenha background. *Isso é PÉSSIMO* !!! Achei super errado. Se tem gente que não assiste, não deveria piorar para quem já é interessado e assiste tudo.
@@marcelobhering1600 eu entendo a frustração, também tive dificuldade quando fiz o curso, mas agora que trabalho na área, sei o quão importante é essa autonomia imposta quando somos obrigados a pesquisar uma saída, nós aprendemos pesquisando e aprendemos a pesquisar. Quando você trabalhar na área, vai perceber que vai ter que pesquisar MUITO, e acho que esse é o maior aprendizado para um programador: aprender a pesquisar. Um programador que não sabe pesquisar, o que pesquisar, como pesquisar e onde pesquisar, não vai sair muito do lugar, não vai expandir o conhecimento e talvez não faça bons códigos. Confie em mim, você não vai procurar um emprego de programador apenas quando souber tudo sobre uma linguagem, pois existe um mar infinito de coisas dentro dela. Talvez quando você encontrar um emprego, você tenha que aprender novas tecnologias, e você não vai ter conhecimento. Acredite, ninguém vai te dar o código pronto, você vai ter que pesquisar! Aqui estamos aprendendo na marra a importância da pesquisa, o Guanabara é um baita professor por estar fazendo conteúdo assim.
E tem outro ponto que eu gostaria de citar: preparar um conteúdo, gravar e editar não é tão simples. No curso de python, acredito que a maior parte do tempo foi dedicado para produzir os vídeos de exercícios. Mas para que, se pouquíssimos olham? Isso foi uma técnica dele para que mais pessoas olhassem os exercícios.
@@marcelobhering1600 eu entrei na empresa na qual trabalho sabendo python, javascript e a base do react. Tive que aprender na prática, na marra, pesquisando, a codar em flask, a entender e aprender as querys do Mongodb, conceitos mais profundos de python, react e javascript, tive que aprender Sass, aprofundar o conhecimento em git e agora estou tendo que estudar Nextjs. Tu acha que tem tempo de olhar um curso no meio da correria do trabalho? No máximo um curso introdutório, o resto tu aprende na prática, pesquisando muito.
Sou desenvolvedora Fullstack. Agradeço ao Guanabara por esse curso incrível, todo o conteúdo de python que levei para a empresa, foi ele quem me dispôs.
Sim, dá para arrumar um emprego somente com esse curso que o Guanabara fez, MAS SOMENTE SE VOCÊ SOUBER PESQUISAR. Se não, você não dura uma semana! Aprendi POO em python só pesquisando e olhando código dos outros.
@@emilyspecht8818 , Acho que não me fiz entender. Vou explicar de outra forma. Em nenhum momento eu disse que não é possível entender, pesquisando sozinho. Sei disso na prática porque sou Engenheiro Mecânico pela UFRJ. Basicamente, todo estudante de lá aprendeu sozinho para se formar uma vez que a maioria esmagadora das aulas são PESSIMAMENTE ensinadas. Portanto, é possível, mas o quis dizer é que existem 2 formas de aprender:
1) Alguém ensinado os conceitos e propondo exercícios (=desafios) para vc aplicar os seus conceitos e os solidificar na prática,
2) Vc pesquisando em inúmeros sites, batendo cabeça (muitos são ruins e não respondem a sua dúvida de forma objetiva), até conseguir pegar os conceitos para só depois poder resolver os exercícios propostos, ou seja, um *ENORME* tempo gasto, *que pode ser agravado* caso não se consiga descobrir a solução e o Guanabara demore para lançar o vídeo mostrando como se faz. E neste caso, vc aprederá a solução, mas ficará sem um exercício para praticar o que aprendeu, uma vez que o exercício já foi resolvido. Percebeu a diferença ???🤔
Portanto, a 1º maneira (que o Guanabara fez até um pouco antes do exercício 100 é a forma *mais EFICIENTE* de ensinar. A 2º maneira (a mais comum das vídeos aulas no RUclips) é o famoso "dê um Google". Isso gasta mais tempo para avançar um pequeno passo. Não nos impede de chegar ao objetivo, mas o tempo é maior. *Eficiência em ensinar é criar pontes e incentivar caminhada sobre elas. Se vc ainda precisar fazer a ponte, obviamente, vai gastar mais tempo até poder atravessá-la, ou seja, vai fazer menos resultado com os recursos que se tem* (recurso = tempo)
Portanto, a questão não é poder se virar sozinho. A questão é desistir da forma mais EFICIENTE de ensinar, se igualando a maioria que tem por aí, apenas para ganhar views em mais vídeo (vídeos de exercícios). Entendeu agora? 🤔
Esse foi a função que fiz e deu certo da mesma maneira:
def moeda(função):
return f'R${função:.2f}'.replace('.', ',')
Acredito que nos próximos exercícios ele não funcione, já que vamos fazer a conversão de moeda, mas para o momento funcionou perfeitamente.
Parabéns, Guanabara, ótimo trabalho!
Mais um pra conta:
import moedas
p = float(input('Digite o preço em R$ '))
print(f'A metade de {moedas.moeda(p)} é {moedas.moeda(moedas.metade(p))}')
print(f'O dobro de {moedas.moeda(p)} é {moedas.moeda(moedas.dobro(p))}')
print(f'Aumentando 10%, temos {moedas.moeda(moedas.aumentar(valor=p, p=10))}')
Putz kkkkkk, tava fazendo o ex108 só que nada funcionava. Daí puto da vida, vim aqui ver a resolução, e percebi que estava fazendo alterações no ex108 e executando o ex107 kkkkkkkk
Haaaa isso acontece man sempre em frente nunca desistir
KKKKKKKKKKKKKKKKKKKKKKK, meu amigo você me salvou, eu tava fazendo a mesma coisa, e não tava entendendo pq tava dando errado
Meu amigo, foi exatamente o que eu fiz, li seu comentário e nem vi a resposta do Guanabara, tava acertando sem saber KKKKKKKKKKKKKKK vlw
o PyCharm até avisa que vc tem 2 arquivos abertos com o mesmo nome, ele altera o nome do arquivo. Quando vc vai testar, tem que dar run em cima do arquivo atual, se não vc vai rodar o arquivo antigo. Fiquei 3 min mexendo até lembrar kkk
Dois vídeos na mesma semana?? Deus ouviu minhas preces
Parabéns pela aula , aínda não sei muito sobre python , estou aprendendo c++ , mais assim que terminar vou fazer python do canal Cursos em Vídeo.
Alô, Mundo! Mestre GG, galera... saudações. Achei muito legal a idéia do REPLACE ponto por vírgula, para a saída formatada. E como tenho tomado "alguns tombos" na hora de digitar valores de ponto flutuante (hábito de digitar vírgulas), fui testar a idéia de dar replace no INPUT. Muitoooo legal, funcionou. (abaixo)
p = float(input('Digite preço: R$ ').replace(',','.'))
desta forma, se eu esquecer e digitar vírgula (250,25) nunca dá erro (ele transforma para 250.25) ;)
Abraços.
Boa, eu tentei usar isso ai, mas n tava conseguindo pq eu tava usando o replace no valor que foi transformado em float. Quando eu vi teu comentario vi q vc colocou dentro da função de float e funcionou kkkkk mó viagem
Meu código:
def real (n):
n2 = format(n,'.2f') #format(n,'.2f') é pra deixar o codigo com 2 flutuantes depois do ponto ex: disso > 2.0 pra isso > 2.00
n2 = str(n2)
n2 = f'R${n2}'
n2 = n2.replace('.',',')
return n2
Fiz de um modo mais básico, só não sei se tem algum problema com a função desse modo, mas funcionou bem na prática.
def moeda(n=0):
"""
Essa função mostra um valor configurado de modo monetário(com cifrão, vírqula...)
:param n: É o valor que será formatado
:return: string formatada
"""
return f'R${n:.2f}'.replace('.', ',')
achei ótimo, parabéns o melhor professor de programação da Internet. Se fosse um americano estava milhonário....
Guanabara, Seu curso é muito bom! Poderia dar um curso de React Native?
#minha função de formatar ficou assim (antes de ver o vídeo)
def formatar(txt):
text = str(txt)
pos_virg = text.find(".")
if (len(text) - 1) - pos_virg == 0:
text += "00"
elif (len(text) - 1) - pos_virg == 1:
text += "0"
texto = text.replace(".", ",")
return f"R${texto}"
No vscode tem um erro de ModuleNotFoundError que ele não encontra um modulo chamado ex108. O jeito foi deixar o arquivo teste.py fora da pasta ex108 e não tive mais problema
Estava com o mesmo problema, seu comentário solucionou. Obrigado.
É uma linha de código bem simples:
mas para descobrir por conta própria pode ser dificil:
def moeda(m):
m = float(m)
return f'R${m}'.replace('.', ',')
Eu fiz assim como estou no Android...
def dobro(a):
return print(f"O dobro de R${a} é R${a * 2:.2f}")
def metade(a):
return print(f"A metade de R${a} é R${a / 2:.2f} ")
def aumentar(a):
b = a * 10/100
return print(f"Aumentando em 10%, temos R${b + a:.2f}")
n = float(input("Digite o preço:R$"))
metade(n)
dobro(n)
aumentar(n)
Cara vc é muito conhecido no Senai, e olha q estou fazendo curso de tec. Eletroeletrônica.
Abraço.
Muito obg Guanabara, pelo ótimo conteúdo
Eu compliquei um pouco pra fazer, pq pensei que tinha que ser assim, mas foi até bom pq testei o que imaginei que daria certo e deu mesmo
from Desafios.ex107.moeda import *
def moeda(n):
return f'R${n:.2f}'.replace('.', ',')
E com todos os outro fiz isso, não dei ctrl+c, ctrl+v, só importei o ultimo pacote e modifiquei o que precisava
Guanabara, vc poderia facilitar o acesso ao Estudonautas, uma vez q a maioria do seu público é estudante é mt difícil pagar mensalmente um valor de R$60 pois a maioria n tem renda, mas se vc disponibilizasse a compra de cursos separadamente, com a opção de boleto tbm, acredito q facilitaria para muitas pessoas, deixando as 2 opções seu público aumentaria.
Também concordo se eu tivesse um trabalho eu pagaria, mas não tenho e dependo dos meus pais. Então facilita para nóis aí Sensei Guanabara
Professor Guanabara, poderia fazer um (ou mais) vídeo(s) mostrando como criar executáveis partindo do zero até a interface? Por gentileza e agradecido ^^
Pra isso você precisa usar uma biblioteca que crie janelas, como o tkinter ou o pygame e depois compilar o arquivo py em exe usando o pyinstaller
é possível fazer dessa maneira também kk
p = int(input('Digite o preço: R$'))
print(f'A metade de R${p},00 é R${int(moeda.metade(p))},00')
print(f'O dobro de R${p},00 é R${moeda.dobro(p)},00')
print(f'Aumentando 10%, temos R${int(moeda.aumentar(p, 10))},00')
Esse exercício ele podia ter ensinado usando locale, que é a maneira correta de converter
Bom vídeo. 😁
Inicialmente eu fiz assim:
Main:
from ex108 import moeda
preco = float(input('Digite o preço: R$ '))
print(f'A metade de {moeda.moeda(preco)} é {moeda.moeda(moeda.metade(preco))}')
print(f'O dobro de {moeda.moeda(preco)} é {moeda.moeda(moeda.dobro(preco))}')
print(f'Aumentando em 10%, temos {moeda.moeda(moeda.aumento(preco, 10))} ')
print(f"Diminuindo 13%, temos {moeda.moeda(moeda.diminuir(preco, 13))}")
Módulo:
def metade(numero):
return numero / 2
def dobro(numero):
return numero * 2
def aumento(numero, porcentagem):
return numero + (porcentagem / 100) * numero
def diminuir(numero, porcentagem):
return numero - (porcentagem / 100) * numero
def moeda(numero):
numero = f'{numero:.2f}'
numero = str(numero)
trocar = numero.replace('.', ',')
return f'R${trocar}'
Mas depois eu vi o comentario de um cara ai, dai reorganizei o meu módulo na def moeda:
def metade(numero):
return numero / 2
def dobro(numero):
return numero * 2
def aumento(numero, porcentagem):
return numero + (porcentagem / 100) * numero
def diminuir(numero, porcentagem):
return numero - (porcentagem / 100) * numero
def moeda(numero):
return f'R${numero:.2f}'.replace('.', ',')
top! tem seu grau de dificuldade mas esta otimo
Achei muito foda essa resolução. A minha solução ficou meio confusa, comparada a do Guanabara, mas eu consegui fazer usando só um def.
=====================================================================
arquivo funções.py
=====================================================================
def conta(preço,a):
"""
O contador retorna apatir de um preço (valor númerico) sua metade seu dobro e um aumento de 10%
:param preço: Um valor númmerico base para todos os cálculos
:param a: Um identificador de retorno ex: a = 0 then return metade
:return: a depender do valor de a, retorna metade, dobro e aumento de 10%
"""
metade = f"{preço/2:.2f}"
dobro = f"{preço*2:.2f}"
aumento = f"{preço*1.1:.2f}"
preço = f"{preço:.2f}"
if a == 0:
return f"A metade de R${preço.replace('.',',')} é R${metade.replace('.',',')}"
if a == 1:
return f"O dobro de R${preço.replace('.',',')} é R${dobro.replace('.',',') }"
if a == 2:
return f"Aumentando 10% de R${preço.replace('.',',')} temos R${aumento.replace('.',',')}"
=====================================================================
arquivo ex108.py
=====================================================================
import funções
valor = float(input("Digite o preço: "))
for c in range(3):
print(funções.conta(valor,c))
#Ex108 >>Já resolvi o problema da virgula, hehehe
#Só o código principal pra poupar a leitura '-'
import mod
p = input('Digite o preço: R$').replace(',', '.')
p = float(p)
print(f'A metade de {mod.moeda(p)} é {mod.moeda(mod.metade(p))}')
print(f'O dobro de {mod.moeda(p)} é {mod.moeda(mod.dobro(p))}')
print(f'Aumentar 10% temos {mod.moeda(mod.aumentar(p, 10))}')
#Na aba moeda.py:
def metade(n):
m = n / 2
return m
def dobro(n):
d = n * 2
return d
def aumentar(n, p):
a = n + (n * (p / 100))
return a
def reduzir(n, p):
a = n - (n * (p / 100))
return a
def forma(msg):
a = f'R${msg:.2f}'
return a
#Na aba do exercicio:
import moeda
v = float(input('Digite o preço: R$'))
print(f'A metade de {moeda.forma(v)} é {moeda.forma(moeda.metade(v))}')
print(f'O dobro de {moeda.forma(v)} é {moeda.forma(moeda.dobro(v))}')
print(f'Aumentando 10%, temos {moeda.forma(moeda.aumentar(v, 10))}')
print(f'Diminuindo 13%, temos {moeda.forma(moeda.reduzir(v, 13))}')
ÓLA TEM COMO ME AJUDAR? Meu codigo não funciona no vscode se vc tive a solução por favor me ajuda.
Gente estou com dificuldade estou tentando executar o código no vs code e não funciona tentei no pycharm pensando que era alguma coisa da expensão e tbm não pega. acho que estou fazendo algo errado, mas não encontro o erro me ajudem ai por favor se souberem o erro.
def diminuir (preço, taxa):
r = preço - (preço * taxa/100)
return r
def aumentar (preço, taxa):
r = preço + (preço * taxa/100)
return r
def dobrar (preço):
r = preço * 2
return r
def dividir (preço):
r = preço / 2
return r
#codigo principal
import moeda#codigo
preço = float(input('Preço: '))
taxa = int(input('% : '))
print(f'O preço dividido por 2 {dividir(preço)}')
print(f'O dobro {dobrar(preço)}')
print(f'O aumento com taxa de {taxa} é {aumentar()} ')
print(f'E a diminuição com a taxa de {taxa} é de {diminuir(preço, taxa)}')
Adoro seus vídeos, mas poderia ter explicado que a saída de uma F'STRING muda tudo o que tiver dentro para STRING
facilitaria minha vida com o simples replace que voçê mostrou trocando ponto por vírgula
Utilizei recursividade para resolver o problema
------------------------------------------------------------------------------------------------------------
def formatar(valor):
v = f'R${valor:.2f}'
return v.replace('.', ',')
def almentar(valor, taxa):
r = valor + (valor * taxa / 100)
return formatar(r)
def diminuir(valor, taxa):
r = valor - (valor * taxa / 100)
return formatar(r)
def dobro(valor):
return formatar(valor * 2)
def metade(valor):
return formatar(valor / 2)
---------------------------------------------------------------------------------------------------------
# Script 108 - Formatando moedas em python
from pacote import moeda
preco = float(input('Digite um preço: '))
preco_formatado = moeda.formatar(preco)
dobro = moeda.dobro(preco)
print(f'O dobro de {preco_formatado} é {dobro}')
metade = moeda.metade(preco)
print(f'A metade de {preco_formatado} é {metade}')
a solução que eu usei foi a mais, como a maioria dizem, a correta, usei o modulo LOCALE para fazer ess formatação. no meu módulo MOEDA.PY, ficou assim:
import locale
locale.setlocale(locale.LC_MONETARY, 'Portuguese_Brazil.1252')
def metade(preço=0):
return preço/2
def dobro(preço=0):
return preço*2
def aumentar(preço=0, taxa=0):
return preço + (preço * taxa/100)
def reduzir(preço=0, taxa=0):
return preço - (preço * taxa/100)
def moeda(preço):
return f'{locale.currency(preço)}'
mas a solução de guanabara tb é boa. mas acredito que seja muito limitada.
Pessoal, sei que a maioria está tendo problemas com o PyCharm porque ele trava demais (talvez um dos motivos é porque ele foi desenvolvido em Java...). Estou fazendo os exercícios e anotações tudos no Jupyter Notebook. É uma boa alternativa...
Eu uso o VsCode
Parabéns!!
Quase terminando o curso em 2024
Digite o preço: R$100
R$100.00
R$50.00
A metade de None é None
R$100.00
R$200.00
O dobro de None é None
R$113.00
Aumentado 13% temos None
R$90.00
Diminuindo 10% temos None
o meu tava ficando assim
Bem, criei uma variável global e pus a função moeda() dentro de cada uma outra função. Funcionou (está faltando a definição de 2 decimais, mas vou aprender assistindo à resolução pelo professor, fora alguns aperfeiçoamentos no meu código).
def dobro(preco):
global dobro
moeda(preco)
dobro = precoconv*2
return str(dobro).replace('.', ',')
def metade(preco):
moeda(preco)
metade = precoconv*0.5
return str(metade).replace('.', ',')
def aumentar(preco):
moeda(preco)
aumento = precoconv*1.10
return str(aumento).replace('.', ',')
def diminuir(preco):
moeda(preco)
desconto = precoconv*0.90
return str(desconto).replace('.', ',')
def moeda(preco):
global precoconv
preco2 = preco.replace(',', '.')
precoconv = float(preco2)
-------------------
O programa em si permaneceu o mesmo, só mudei o módulo moedas.py:
'''
Adapte o código do desafio 107 criando uma função adicional chamada moeda() que consiga mostrar os valores
formatados monetariamente.
'''
import moedas
preco = str(input('Digite o preco: R$ '))
metade = moedas.metade(preco)
dobro = moedas.dobro(preco)
aumento = moedas.aumentar(preco)
desconto = moedas.diminuir(preco)
print(f'A metade de {preco} é {metade}')
print(f'O dobro de {preco} é {dobro}')
print(f'Preço aumentou 10%, agora custa {aumento}')
print(f'Ofereço um desconto de 10%, o preço passa para {desconto}')
Minha função moeda ficou com algumas linhas a mais porque não usei .replace():
def moeda(num=0, moeda='R$'):
n = str(moeda)
for digt in str(f'{float(num):.2f}'):
if digt == '.':
n += ','
else:
n += digt
return n
Mto bom o conteúdo!
Ótima aula como sempre!! (nem assisti ainda mas confio na qualidade do canal e do professor rs)
Eu tava c as duas paginas do 108 abertas, mas tava executando a pagina de 'solução' do 107. Quando abri as novas paginas so fiquei executando e reexecutando ai não via a diferença que eu tinha escrito nas def, quase surto
# Data: 20.06.21 20:32.. 22:25
# Aula 22 - Módulos e Pacotes Exercício 107
# Music: where’s my love;
def metade(num=0.0):
return num / 2
def dobro(num=0.0):
return num * 2
def aumentar(num=0.0, aum=0):
aumento = ((num * aum) / 100) + num
return aumento
def diminuir(num=0.0, aum=0):
resultado = num - ((num * aum) / 100)
return resultado
def monetario(num=0.0, moeda='R$'):
return f'{moeda}{num}'.replace('.', ',')
Saudações meus queridos compartilhadores de conhecimento, somos muitos quando juntos, mas poucos separados então segue a minha solução:
no pacote moeda:
Módulo:
def formatar(num):
a = f'R${num:.2f}'.replace('.', ',')
return a
def metade(num):
resp = num / 2
return resp
def dobro(num):
resp = num * 2
return resp
def aumentar(num, tanto):
resp = num + (num * tanto / 100)
return resp
# -----------------------------------------------------------------------
# programa principal
from ex108 import moeda
p = float(input('Digite o preço R$:'))
print(f'A metade de {moeda.formatar(p)} é {moeda.formatar(moeda.metade(p))}')
print(f'O dobro de {moeda.formatar(p)} é {moeda.formatar(moeda.dobro(p))}')
print(f'Aumentando 10%, temos {moeda.formatar(moeda.aumentar(p, 10))}')
Professor convida Alfredão para participar de alguma aula de python, vai ser da hora kkkkkk
Esse eu achei fácil... :)
Agora sim minha dúvida do video anterior foi sanada.
Tenho sim que recriar o arquivo moeda.
Eu havia feito os exercícios alterando sempre só o arquivo do 107 e importando o 107 em todos os exercícios seguintes 😅
Na real tanto faz
meu def moeda ficou assim:
def moeda(preço):
res = str(f'{preço:.2f}')
if '.' in res:
res = res.replace('.', ',')
return f'R${res}'
mas mais pra frente eu sei que vai complicar rs
Criei a função sem utilizar dois parâmetros
def moeda(n):
aux = f'R${n:.2f}'.replace('.', ',')
return aux
Funções ---------------------------
def dobro(num):
r = num * 2
return r
def metade(num):
r = num / 2
return r
def aumentar(num, porcent):
r = num + (porcent/100 * num)
return r
def diminuir(num, porcent):
r = num - (porcent/100 * num)
return r
def moeda(val, moeda='R$'):
return f'{moeda}{val:.2f}'.replace('.', ',')
==============================================================
#Enunciado: Adapte o ex107 onde os valores lidos sejam formatados
from moeda import *
def det(simb='-', comp=60):
print(simb * comp)
det()
num = float(input('Digite um preço: R$'))
print(f'O dobro de {moeda(num)} é {moeda(dobro(num))}')
print(f'A metade de {moeda(num)} é {moeda(metade(num))}')
print(f'{moeda(num)} + 10% é {moeda(aumentar(num, 10))}')
print(f'{moeda(num)} - 10% é {moeda(diminuir(num, 10))}')
det()
=======================================
Essa foi minha resolução
cara, achei a explicação inicial muito confusa, pois deu a entender que era pra importar o ex107 e não criar uma copia
Fiz assim
def metade(msg = 0):
msg = (msg / 2)
return f'{msg}0'.replace('.', ',')
def dobro(msg = 0):
msg = (msg * 2)
return f'{msg}0'.replace('.', ',')
def aumento(msg = 0):
msg = ((10 / 100 * msg) + msg)
return f'{msg}0'.replace('.', ',')
def moeda(preço=0, moeda='R$'):
return f'{moeda}{preço}0'.replace('.', ',')
Não entendi o motivo de colocar o valor padrão na hora de definir as funções. Perdi algum detalhe?
Esse é o último mundo ou terá Mundo 4? Alguém sabe?
*Talvez ele tenha dito em algum vídeo quantos serão, mas ainda não comecei o curso e só to perguntando pra eu me organizar e me planejar
ele disse na aula 22
A aula 22 foi a última desse mundo, o mundo 4 será sobre POO(Programação Orientada a Objetos)
@@zica800 obrigado!
@@victor.melquiades ja se foi 2 anos
fiz os mesmos passos, copiei e colei a pasta e renomeei para ex108, mas ele n reconhece que existe quando faço "from ex108 import moeda" mudou algo em 2021?
atualizando:
consegui fazendo assim:
from Pythonexercises.ex108.moeda108 import diminuir, aumentar, diminuir, dobro, metade, moeda
Aleluia!!!!!
Professor Gustavo, na playlist do mundo 3 não está listado todos os vídeos.
#Jose.
def moeda(valor):
f = f'R${valor}'
return f
06/08/24
😂
SEGUE O EXERCÍCIO DE UMA FORMA MAIS ORGANIZADA:
SCRIPT:
from pacote.modulo import *
preco = float(input('Digite o preço: R$'))
print(f'A metade de {moeda(preco)} é {moeda(metade(preco))}')
print(f'O dobro de {moeda(preco)} é {moeda(dobro(preco))}')
print(f'Aumentando 10% nós temos {moeda(aumentar(preco))}')
MÓDULO:
def aumentar(valor):
return valor + (valor / 100 * 10)
def dobro(valor):
return valor * 2
def metade(valor):
return valor / 2
def moeda(valor):
return f'R${valor:.2f}'.replace('.', ',')
obg hagrid sua resolução ficou mais simples. abraço
Fiquei perdido nesses moeda.moeda e tive que assistir a solução
Ave, fiz assim cho
def moeda(t):
t = f' R${t:.2f}'
return t
E eu que fiquei uns bons minutos com um erro aqui KKKKKK porque a função já retornava com tudo formatado, mas no programa mesmo eu formatava de novo :.2f aí dava erro e era essa miserinha só
*principal.py*
from modulo import moeda
num=float(input('Digite um valor: R$ '))
print(f'O dobro de R${moeda.transformar(num)} é: R${moeda.dobro(num)}')
print(f'A metade de R${moeda.transformar(num)} é: R${moeda.metade(num)}')
moeda.aumento(num)
moeda.desconto(num)
*moeda.py*
def transformar(arg):
trans=str(round(arg,2))
trans=trans.replace('.',',')
return trans
def dobro(arg):
return transformar(arg*2)
def metade(arg):
return transformar(arg/2)
def aumento(arg):
aumpor=float(input('Acréscimo de quantos %: '))
aumento = arg * (1 + aumpor / 100)
print(f"R${arg} com aumento de {aumpor}% é: R${transformar(aumento)}")
def desconto(arg):
despor=float(input('Desconto de quantos %: '))
des = arg * (1 - despor / 100)
print(f'R${arg} com desconto de {despor}% é: R${transformar(des)}')
Repositório com exercícios e aulas github.com/emanoeldelfino/pycev
Amigo, consegue me dar uma força? Estou tentando usar o replace porém o '.' não é substituído.
Meu código:
def reais(n):
p = str(f'R${n}').replace('.', ',0')
return p
esse bagui de dar o msm nome para pasta moeda e do Def moeda ficou mt confuso
No meu módulo "moeda.py", ficou assim:
def metade(pre):
r = pre / 2
return r
def dobro(pre):
r = pre * 2
return r
def aumentar(pre, taxa):
r = pre + (pre * taxa/100)
return r
def moeda(pre):
return f'R${pre:.0f},00'
professor no curso de algoritmos não estamos conseguindo baixa o visualg
Olá professor, estou com um pequeno problema na leitura de uma função que criei e não consigo resolver. Toda vez que chamo minha função para formatar um valor em um print formatado ele faz quebra de linhas em todos os valores e eu queria deixa em uma linha única, como faço para resolver?
Like!
def calcular(valor= 0, taxa= 0):
print(f'A metade de R$ {valor:.2f} é igual a R$ {valor/2:.2f}'.replace('.', ','))
print(f'O dobro de R$ {valor:.2f} é igual a R$ {valor *2:.2f}'.replace('.', ','))
print(f'Aumentando R$ {taxa}%, temos R$ {((valor * taxa)/100) + (valor):.2f}'.replace('.', ','))
print(f'Diminuindo R$ {taxa}%, temos R$ {(valor) - ((valor * taxa)/100):.2f}'.replace('.', ','))
# Programa Principal
valor = float(input('Valor desejado: R$ '))
taxa = float(input('Taxas cobradas: R$ '))
calcular(valor, taxa)
def metade(num=0):
"""
Retorna a metade do valor "num"
:param num: o número a ser reduzido pela metade
:return: retorna um float igual à metade do valor num, com 2 casas decimais
"""
num = float(num/2)
return round(num, 2)
def dobro(num=0):
"""
Retorna o dobro do valor "num"
:param num: o valor a ser dobrado
:return: retorna um float igual à metade do valor num, com 2 casas decimais
"""
num = float(num*2)
return round(num, 2)
def aumentar(num=0, x=0):
"""
Retorna o valor num + x%
:param num: o valor inicial
:param x: a porcentagem do aumento de num
:return: retorna um float igual a num *= x%
"""
total = num + (num * x/100)
return round(total, 2)
def diminuir(num=0, x=0):
"""
Retorna o valor num - x%
:param num: o valor inicial
:param x: a porcentagem de diminuição de num
:return: retorna um float igual a num / x%
"""
total = num - (num * x/100)
return round(total, 2)
def moedas(valor=0):
"""
Formata o valor em estilo monetário de reais
:param valor: o valor em reais a ser formatado
:return: Retorna o valor com R$ antes, e com duas casas decimais
"""
final = f'R${valor:.2f}'.replace(".", ",")
return final
from modulos.pacote_exercicios.moedas import *
p = float(input('Digite um número: '))
print(f'A metade de {moedas(p)} é {moedas(metade(p))}')
print(f'O dobro de {moedas(p)} é {moedas(dobro(p))}')
print(f'Aumentando 17% de {moedas(p)}, temos {moedas(aumentar(p, 17))}')
print(f'Diminuindo 23% de {moedas(p)}, temos {moedas(diminuir(p, 23))}')
nem sabia que dava pra criar uma f-string sem o print...
Guanabara iniciei o curso de algoritmos, porém não consigo baixar o material do curso lá no teu site, os links estão quebrados, tem como arrumar? Por gentileza!! Desde já agradeço!
A função replace() eu não conhecia. Tentei fazer de outro jeito, mas tive dificuldade.
Esta função foi ensinada no Mundo1 em alguns exercícios. Vc provavelmente não fez o Mundo1
@@marcelobhering1600 Eu fiz todos os mundos. Talvez eu só não tenha prestado atenção em uma das aulas, mas eu fiz todos.
Não entendi como o replace altera o o número float?
Mesma dúvida.
Por isso fiz assim:
def moeda(n):
i = int(n)
d = int(100*(n - i))
return f'R$ {i},{d}'
Redefini a parte inteira e fracionária do valor como int e construí um retorno que os usasse.
Cara, acho que entendi.
O return da função foi declarado na forma de string. Por isso o replace pode ser operado sobre o resultado do return, pois ele trata o resultado do return como uma string que usa floats.
gostaria que me tirassem uma duvida, como que usa o /end pra pular linha? Vi o Guanabara fazendo em alguma aula mas n lembro qual foi, n queria ter que colocar mais print ou coisa assim atoa
para quebrar linha eu normalmente uso o
no lugar em que quero que quebre.
Você pode usar tanto assim:
print('Hello', end='
')
print('World')
Quanto assim:
print('Hello')
print('
World')
a minha resposta do exercicio ficou da seguinte forma:
def metade(num):
return num/2
def dobro(num):
return num*2
def aumentando(num, m):
return num + (m/100)*num
def diminuindo(num, d):
return num - (d/100)*num
def moeda(num):
return f'R$ {num:.2f}'.replace('.', ',')
# programa principal
import moeda
number = float(input('digite o preço: R$ '))
print(f'A metade de {moeda.moeda(number)} é {moeda.moeda(moeda.metade(number))}
'
f'O dobro de {moeda.moeda(number)} é {moeda.moeda(moeda.dobro(number))}
'
f'Aumentando 10%, temos {moeda.moeda(moeda.aumentando(number, 10))}
')
Pessoal to postando aqui por ser o mais recente... alguém sabe decifrar este erro, to completamente perdido:
Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'
Cria o arquivo de novo, na mesma pasta do exercício/ módulo
ainda nao consigo usar os modulos
caraca... o comando from ex108 import moeda nao funciona no meu pycharm... ja marquei a pasta como source root e nada faz o IDE reconhecer o arquivo... alguem teve esse problema ae ?
Não seria "from ex107 import moeda"? O exercício pode estar em uma pasta diferente do arquivo das suas funções.
@@Bitcoio não não... Eh q tô no ex 108 mesmo!
vc criou um arquivo novo? Ele nao pode estar junto daqueles exercicios que a gente tava fazendo, senao da erro mesmo
@@daichilino5401 nao, esta em pasta separada assim como na explicação do professor.
@@BrunoDias-ng1bn eita que estranho, tentou criar outro projeto?
Esta errado o jeito q fiz?
def moeda(n = 0):
return f'R${n}'
O unity lê arquivo em Python?
Não, Unity funciona com C#
eu fiz de outro jeito.
O que eu fiz não se encaixa nem nos padrões de gambiara ; oq eu eu fiz foi esquizofrênico
def formatacao(valor):
reais = f'{valor:.2f}'
final = 'R$'
for letra in reais:
if letra == '.':
letra = ','
final += letra
return final
Vai ter poo com python?
Ele ja falou q sim, mundo 4.
@@victorrrabelo Valeu mru peixe
kkkkkkk quase fico parado em 2 linhas:
def moeda(preco=0, simbolo='R$'):
return f'{simbolo}{preco:.2f}'.replace('.', ',')
Mano valeu cara, tava procurando o erro e não achava kk
@@New-sd2vw kkkkkk tmj boa sorte nos estudos
Então eu venho estudando a um tempo com vocês, na verdade desde o inicio e comprei um livro de introdução de Python e encontrei a função.replace( >>>>) e acabei não modificando o escopo local do exercício 107.
ficou assim....
OBS: Ao invés de criar uma pasta Moeda() eu criei Uteis(), porque ? também não sei hahahahahah
segue o código:
import Uteis
num = float(input('Digite o preco: R$'))
print(f"O valor digitado é de R${num:.2f}".replace('.',','))
print(f'A metade de R${num:.2f} é R${Uteis.divisao(num):.2f}'.replace('.',','))
print(f'O dobro de R${num:.2f} é R${Uteis.multiplicacao(num):.2f}'.replace('.',','))
print(f'Com aumento de 10% fica em R${Uteis.aumento(num, 10):.2f}'.replace('.',','))
print(f'Com reducao de 13% fica em R${Uteis.reducao(num, 13):.2f}'.replace('.',','))
por quê vc exclui o vídeo q ensina tirar o certificado no site?
por quê não tô conseguindo tirar o certificado? tô fazendo tudo que o site manda.
por quê nunca vi ninguém q conseguiu esse certificado?
Eu já tirei 2 certificados: Mundo 1 e Mundo 2, faz 1 mês...
Professor, por gentileza, volte a ensinar os conteúdos nas aulas, deixando os exercícios para podermos realmente treinar com as informações passadas. Explicar coisas que "faltam" nos exercícios é terrível e atrapalha a nossa chance de tentar resolver o problema sozinho. Isso fica bem evidente para quem não tem Background pq é novato em programação, e não tem condições para resolver o exercício sem colar. Infelizmente, isso está atrapalhando com a sua didática que sempre foi considerada excepcional... Por favor, volte a forma anterior no Mundo4 !!!
Eu acho que está completamente correto, mas eu gostaria de uma ajuda até pq seu comentario é o mais atual.
meu codigo não funciona. todos os arquivos estam no msm diretório mas nao funciona. se tiver a resposta sobre esse erro me ajuda ai por favor.
Gente estou com dificuldade estou tentando executar o código no vs code e não funciona tentei no pycharm pensando que era alguma coisa da expensão e tbm não pega. acho que estou fazendo algo errado, mas não encontro o erro me ajudem ai por favor se souberem o erro.
def diminuir (preço, taxa):
r = preço - (preço * taxa/100)
return r
def aumentar (preço, taxa):
r = preço + (preço * taxa/100)
return r
def dobrar (preço):
r = preço * 2
return r
def dividir (preço):
r = preço / 2
return r
#codigo principal
import moeda#codigo
preço = float(input('Preço: '))
taxa = int(input('% : '))
print(f'O preço dividido por 2 {dividir(preço)}')
print(f'O dobro {dobrar(preço)}')
print(f'O aumento com taxa de {taxa} é {aumentar()} ')
print(f'E a diminuição com a taxa de {taxa} é de {diminuir(preço, taxa)}')
@@delvechioduarte1394 , havia alguns erros no seu código, conforme abaixo:
*No programa principal*
*linha 8* - Faltou a inclusão da variável preço dentro da função aumentar()
*linha 8* - faltou a inclusão do 2º parâmetro para a função aumentar(), pq são necessários
2 parâmetros (uma vez que vc não colocou nenhum deles como opcional). Se colocar por exemplo "taxa=0" no módulo aumentar ou diminuir, vc poderia deixar em branco no programa principal como vc fez. Do contrário, dá erro mesmo pq o programa espera 2 parâmetros obrigatórios.
*linha 6 até linha 9* - Faltou colocar o caminho correto para o módulo, uma vez que usou o comando "import moeda". A outra
opção seria usar o comando "from moeda import dividir, dobrar, aumentar, diminuir". Aí, bastaria colocar como vc escreveu em cada print.
Fazendo estas correções (eu já testei) funcionou o seu código. Sugiro melhorar a parte de formatação na hora de "printar". Ficou bem feio (sem o valor %, R$, etc...), mas não mexi pq acho que não seja o foco agora.
*Seu código corrigido*
#codigo principal
import moeda
preço = float(input('Preço: '))
taxa = int(input('% : '))
print(f'O preço dividido por 2 {moeda.dividir(preço)}')
print(f'O dobro {moeda.dobrar(preço)}')
print(f'O aumento com taxa de {taxa} é {moeda.aumentar(preço)} ')
print(f'E a diminuição com a taxa de {taxa} é de {moeda.diminuir(preço, taxa)}')
@@delvechioduarte1394 , desistiu ???🤔
🖖 Olá grande gafanhoto 🐝
#A mi manera en español
def mitad(cant=0):
m = cant/2
return m
def doble(canti=0):
d = canti*2
return d
def aumentar(cantid=0,per=0):
a = cantid*(1+per/100)
return a
def disminuir(cantida=0,perc=0):
di = cantida*(1-perc/100)
return di
def moneda(cantidad=0):
txt = f'R${cantidad:.2f}'
x = txt.replace(".",",")
return x
from moeda import moeda as moeda
moeda = 'moeda'
print(moeda.moeda(moeda.moeda(moeda)))
# m o e d a
O que eu fiz ficou muito bom: tipo o usuário digitou 3235654 devolve: R$3.235.654,00
def aumentar(preco=0, taxa=0):
return preco + (preco * (taxa / 100))
def diminuir(preco=0, taxa=0):
return preco - (preco * (taxa / 100))
def metade(preco=0):
return preco / 2
def dobro(preco=0):
return 2 * preco
def moeda(preco=0, moeda1='R$'):
valor = ''
if int(preco) - preco == 0.0:
aux = int(preco)
p = str(aux)
for i, c in enumerate(p):
if (len(p) - (i + 1)) % 3 == 0 and len(p) - i > 2:
valor += c + '.'
else:
valor += c
if len(p) - i == 1:
valor += ',00'
else:
inteira = f'{(preco - int(preco)):.2f}' # pega a parte decimal com duas casas que é por exemplo: '0.00' tamamho 4
resto = ',' + inteira[2] + inteira[3] # quarda em resto ',00' por exemplo
aux = int(preco)
p = str(aux) # 2000000
for i, c in enumerate(p):
if (len(p) - (i + 1)) % 3 == 0 and len(p) - i > 2:
valor += c + '.'
else:
valor += c
if len(p) - i == 1:
valor += resto # concatena o ',00' no final
return f'{moeda1}{valor}'
Acabei fazendo meu módulo de uma forma mais complicada (me embananei com o print formatado e nem lembrei do replace). Meu módulo ficou assim:
def metade(valor):
return moeda(valor / 2)
def dobro(valor):
return moeda(valor * 2)
def aumentar(valor, taxa):
return moeda(valor * (100 + taxa) / 100)
def diminuir(valor, taxa):
return moeda(valor * (100 - taxa) / 100)
def moeda(numero):
texto = str(round(numero, 2))
resp = ""
contador = 0
virgula = False
for char in texto:
if char == '.':
resp += ','
virgula = True
continue
else:
resp += char
if virgula == True:
contador += 1
if contador == 0:
resp += ',00'
elif contador == 1:
resp += '0'
return resp
Depois deixei igual sua resolução (para simplificar). Por último, minha função principal ficou:
from modulos import moeda2
print('=' * 12 + 'Desafio 108' + '=' * 12)
moeda = input('Digite a moeda: ')
numero = float(input(f'Digite o valor em {moeda}: '))
numero = round(numero, 2)
print(f'O dobro de {moeda} {moeda2.moeda(numero)} é {moeda} {moeda2.dobro(numero)}.')
print(f'A metade de {moeda} {moeda2.moeda(numero)} é {moeda} {moeda2.metade(numero)}.')
print(f'Aumentando 10% de {moeda} {moeda2.moeda(numero)}, temos {moeda} {moeda2.aumentar(numero, 10)}.')
print(f'Diminuindo 10% de {moeda} {moeda2.moeda(numero)}, temos {moeda} {moeda2.diminuir(numero, 10)}.')
#CursoPython
420 ;-)