Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

SyntaxError: leading zeros in decimal integer> Solução dada, mas e o usuário?

Olá, tudo bem? Então..

Eu entendi como é solucionado este erro lendo um tópico do fórum.

Segundo o colega, "o que muda é passá-lo utilizando as aspas(tanto faz se for duplas ou simples). Utilizando a sintaxe acima será possível trabalhar com cpfs que comecem com zero". https://cursos.alura.com.br/forum/topico-cpf-iniciado-com-zero-nao-esclarecido-no-topico-anterior-101199

E de fato, isto soluciona o problema.

Porém, eu gostaria de saber se isso vai interferir na utilização do usuário. Pois ao colocar o cpf, ele não faz a diferenciação entre int e str. Ele só colocará os números.

Se alguém puder explicar como funciona. Desde já, muitooo obrigada! :D

4 respostas

Olá Lais, tudo bem com você?

Quando utilizamos a interação com o usuário solicitando valores através do input esses valores por padrão serão salvos como str, assim o usuário poderá informar um número de CPF que inicie com zero. Exemplo:

cpf = input('informe um CPF: ')
print(cpf)
print(type(cpf))

Resultado:

informe um CPF: 00014500036
00014500036
<class 'str'>

Por via de regra, a escolha de valores do tipo str ou int dever deverá responder à seguinte pergunta:

Precisarei fazer operações matemáticas com esse valor?

Caso a resposta acima seja sim, ou seja, que iremos precisar de realizar operações matemáticas, o valor deverá ser do tipo int. Mas caso não sejam realizadas operações matemáticas, devemos fazer o uso de valores do tipo str.

Quando trabalhamos com números eles irão representar quantidade, já o CPF representa um identificador que não será somado, adicionado, multiplicado ou dividido, por isso um CPF é do tipo str.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Entendo, mas então existe um jeito de implementar um input para obtenção do parâmetro na classe para criação de um objeto? É a minha primeira formação, ainda não vi nada nesse sentido.

solução!

Olá Lais,

Fico feliz em saber que essa é sua primeira formação, meus parabéns pelo empenho demonstrado, continue nesse caminho, buscando sempre conhecer mais sobre a linguagem de programação e buscando novos horizontes de aprendizado, conte sempre com a Alura nessa jornada.

Podemos sim fazer o uso do input para que o usuário informe os valores para os parâmetros que serão utilizados na criação do objeto. Para que isso seja possível, devemos salvar as entradas do usuário em variáveis, e usarmos essas variáveis como parâmetro. Como abaixo onde é solicitado um número de CPF para o usuário e o valor informado será salvo na variável cpf_input.

cpf_input = input("Informe o CPF: ")

Implementando na criação de um objeto usando uma classe de nome Cpf, teremos o seguinte o código:

class Cpf:
    def __init__(self, cpf):
        self.cpf = cpf

    def imprime(self):
        print(self.cpf)


cpf_input = input("Informe o CPF: ")

obj_cpf = Cpf(cpf_input)
obj_cpf.imprime()

Reultado

Informe o CPF: 00012345678
00012345678

Ao executar o código acima, será solicitado um número de CPF esse número é salvo na variável cpf_input após o usuário digitar o número e pressionar enter, na linha seguinte, a variável cpf_input é fornecida como parâmetro da classe Cpf e é criado o obj_cpf, logo após o método imprime() é invocado para imprimir o valor salvo no atributo cpf.

Como apresentado acima, construímos nosso objeto a partir do valor fornecido pelo input, caso a classe necessite de múltiplos parâmetros, basta criarmos outras interações com o uso do input e salvarmos cada interação em uma variável e fornecermos essas variáveis como parâmetro.

Seria essa a sua ideia de uso do input na criação de um objeto?

Fico à disposição.

Abraços e bons estudos.

Isso mesmo! Mais simples do que imaginei!Muito obrigada, ajudou bastante!

Abraços.