chore(i18n,curriculum): update translations (#44138)
This commit is contained in:
@ -8,22 +8,86 @@ dashedName: budget-app
|
||||
|
||||
# --description--
|
||||
|
||||
Crie uma classe Category que pode ser usada para criar diferentes categorias de orçamento.
|
||||
|
||||
Você pode acessar [a descrição completa do projeto e o código inicial no Replit](https://replit.com/github/freeCodeCamp/boilerplate-budget-app).
|
||||
|
||||
Depois de ir para esse link, faça fork no projeto. Depois que você completar o projeto com baseado nas instruções do 'README.md', envie o link do seu projeto abaixo.
|
||||
Você [trabalhará neste projeto com nosso código inicial do Replit](https://replit.com/github/freeCodeCamp/boilerplate-budget-app).
|
||||
|
||||
Ainda estamos desenvolvendo a parte instrucional interativa do currículo Python. Por enquanto, aqui estão alguns vídeos no canal do freeCodeCamp.org do YouTube que ensinarão tudo o que você precisa saber para completar este projeto:
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href='https://www.freecodecamp.org/news/python-for-everybody/'>Curso de Python em vídeo para todos</a> (14 horas)
|
||||
</li>
|
||||
<li>
|
||||
<a href='https://www.freecodecamp.org/news/learn-python-basics-in-depth-video-course/'>Curso em vídeo Aprenda Python</a> (2 horas)
|
||||
</li>
|
||||
</ul>
|
||||
- [Curso de Python em vídeo para todos](https://www.freecodecamp.org/news/python-for-everybody/) (14 horas)
|
||||
|
||||
- [Curso Aprenda Python em vídeo](https://www.freecodecamp.org/news/learn-python-video-course/) (10 horas)
|
||||
|
||||
# --instructions--
|
||||
|
||||
Complete a classe `Category` no `budget.py`. Ela deve ser capaz de instanciar objetos com base em diferentes categorias de orçamento, como *alimentos* (food), *vestuário* (clothing) e *entretenimento* (entertainment). Quando os objetos são criados, eles são passados com o nome da categoria. A classe deve ter uma variável de instância chamada `ledger` que seja uma lista. A classe também deve conter os seguintes métodos:
|
||||
|
||||
- Um método`deposit`, que aceita um valor e uma descrição. Se nenhuma descrição for dada, o padrão deverá ser uma string vazia. O método deve acrescentar um objeto à lista ledger na forma de `{"amount": amount, "description": description}`.
|
||||
- Um método `withdraw`, semelhante ao método `deposit`, mas a quantia passada deve ser armazenada no ledger como um número negativo. Se não houver fundos suficientes, nada deve ser adicionado ao ledger. Este método deve retornar `True` se a retirada acontecer e, caso contrário, `False`.
|
||||
- Um método `get_balance`, que retorna o saldo atual da categoria de orçamento com base nos depósitos e retiradas que ocorreram.
|
||||
- Um método `transfer`, que aceita um valor e outra categoria de orçamento como argumentos. O método deverá adicionar uma retirada com o valor e a descrição "Transfer to [categoria de destino no orçamento]". O método deve, então, adicionar um depósito à outra categoria do orçamento, com o valor e a descrição "Transfer from [categoria de origem no orçamento]". Se não houver fundos suficientes, nada deve ser adicionado ao ledger. Este método deve retornar `True` se a transferência acontecer e, caso contrário, `False`.
|
||||
- Um método `check_funds` que aceita um valor como um argumento. Ele retorna `False` se o valor for maior que o saldo da categoria do orçamento e, caso contrário, retorna `True`. Este método deve ser usado tanto pelo método `withdraw` como pelo método `transfer`.
|
||||
|
||||
Quando o objeto de orçamento for impresso, ele deve mostrar:
|
||||
|
||||
- Uma linha com título de 30 caracteres em que o nome da categoria é centralizado em uma linha com `*` caracteres.
|
||||
- Uma lista dos itens no ledger. Cada linha deve mostrar a descrição e o valor. Os primeiros 23 caracteres da descrição devem ser exibidos e, depois, o valor. O valor deve estar alinhado corretamente, conter duas casas decimais e exibir um máximo de 7 caracteres.
|
||||
- Uma linha que exibe o total da categoria.
|
||||
|
||||
Aqui está um exemplo de resultado:
|
||||
|
||||
```bash
|
||||
*************Food*************
|
||||
initial deposit 1000.00
|
||||
groceries -10.15
|
||||
restaurant and more foo -15.89
|
||||
Transfer to Clothing -50.00
|
||||
Total: 923.96
|
||||
```
|
||||
|
||||
Além da classe `Category`, crie uma função (fora da classe) chamada `create_spend_chart`, que recebe uma lista de categorias como um argumento. Ela deve retornar uma string, que é um gráfico de barras.
|
||||
|
||||
O gráfico deve mostrar a porcentagem gasta em cada categoria passada para a função. A porcentagem gasta deve ser calculada apenas com retiradas, não com depósitos. No lado esquerdo do gráfico, deve haver rótulos de 0 a 100. As "barras" no gráfico de barras devem ser feitas com o caractere "o". A altura de cada barra deve ser arredondada para baixo para o 10 mais próximo. A linha horizontal abaixo das barras deve ir dois espaços além da barra final. O nome de cada categoria deve ser escrito verticalmente abaixo da barra. Deve haver um título no topo que diz "Percentage spent by category" (Porcentagem gasta por categoria).
|
||||
|
||||
Esta função será testada com até quatro categorias.
|
||||
|
||||
Olhe atentamente para o exemplo de resultado abaixo e certifique-se de que o espaçamento do resultado corresponde exatamente ao exemplo.
|
||||
|
||||
```bash
|
||||
Percentage spent by category
|
||||
100|
|
||||
90|
|
||||
80|
|
||||
70|
|
||||
60| o
|
||||
50| o
|
||||
40| o
|
||||
30| o
|
||||
20| o o
|
||||
10| o o o
|
||||
0| o o o
|
||||
----------
|
||||
F C A
|
||||
o l u
|
||||
o o t
|
||||
d t o
|
||||
h
|
||||
i
|
||||
n
|
||||
g
|
||||
```
|
||||
|
||||
Os testes unitários para este projeto estão em `test_module.py`.
|
||||
|
||||
## Desenvolvimento
|
||||
|
||||
Escreva seu código em `budget.py`. Para o desenvolvimento, você pode usar `main.py` para testar sua classe `Category`. Clique no botão "Run" e `main.py` será executado.
|
||||
|
||||
## Testes
|
||||
|
||||
Importamos os testes de `test_module.py` em `main.py` para a sua conveniência. Os testes serão executados automaticamente sempre que você clicar no botão "Run".
|
||||
|
||||
## Envio
|
||||
|
||||
Copie o URL do seu projeto e envie-o para o freeCodeCamp.
|
||||
|
||||
# --hints--
|
||||
|
||||
|
Reference in New Issue
Block a user