Ajuda no código Python, alguém por favor pode me dizer o que tem de errado nesse código

Python

Helpers

PyUnit

29/06/2020

lista1 = [10, 9, 8, 7, 6, 5, 4, 3, 2]
lista2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]

soma1 = 0
soma2 = 0

cpf = input("Digite o CPF: ")

for i in range(9):

print("CPF", int(cpf[i]), "*", lista1[i], "=", int(cpf[i]) * lista1[i])
soma1 = soma1 + (int(cpf[i])*lista1[i])

print("Soma da validação ", soma1)

validacao1 = (soma1*10)/11

print("Resultado da ((primeira soma * 10)/11) = ", validacao1)

resto_validacao1 = (soma1*10) % 11

print("Resto da primeira validação: "), resto_validacao1

if resto_validacao1==10:
resto_validacao1=0

if resto_validacao1==(int(cpf[9])):
print("Validação confirmada!!")

else:
print("CPF invalido..")

for i in range(10):
print("CPF ", int(cpf[i]), "Multiplicador", lista2[i], "resulta", int(cpf[i])*lista2[i])
soma2 = soma2 + (int(cpf[i]) * lista2[i])

print("Soma da segunda verificação: ", soma2)

validacao2 = (soma2*10)/11

print("Resultado da segunda soma ", validacao2)

resto_validacao2 = (soma2*10) % 11

if resto_validacao2==10:
resto_validacao2=0

print("Resto da segunda verificação: ", resto_validacao2)

if resto_validacao2 == (int(cpf[10])):
print("Validação confirmada!")

else:
print("CPF invalido. Por favor informe outro CPF...")
Enrico

Enrico

Curtidas 0

Melhor post

Marcos Junior

Marcos Junior

29/06/2020

Boa noite...
O erro acontece pois no inicio do seu código você coloca um valor do range = 9 quer dizer que ele vai de 0 a 8 que equivale a 9 posições. Olha como fica seu código abaixo.:
lista1 = [10, 9, 8, 7, 6, 5, 4, 3, 2]
lista2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]

soma1 = 0
soma2 = 0

cpf = input("Digite o CPF: ")

for i in range(9):
print("cpf", int(cpf[i]), "*", lista1[i], "=", int(cpf[i]) * lista1[i])

soma1 = soma1 + (int(cpf[i])*lista1[i])
print("Soma da validação ", soma1)

validacao1 = (soma1*10)/11
print("Resultado da ((primeira soma * 10)/11) = ", validacao1)

resto_validacao1 = (soma1*10) % 11
print("Resto da primeira validação: ", resto_validacao1)

if resto_validacao1 == 10:
resto_validacao1 = 0

if resto_validacao1 == (int(cpf[8])):
print("Validação confirmada!!")
else:
print("CPF invalido..")

for i in range(9):
print("CPF ", int(cpf[i]), "Multiplicador", lista2[i], "resulta", int(cpf[i]) * lista2[i])

soma2 = soma2 + (int(cpf[i]) * lista2[i])
print("Soma da segunda verificação: ", soma2)

validacao2 = (soma2 * 10) / 11
print("Resultado da segunda soma ", validacao2)

resto_validacao2 = (soma2 * 10) % 11

if resto_validacao2 == 10:
resto_validacao2 = 0

print("Resto da segunda verificação: ", resto_validacao2)

if resto_validacao2 == (int(cpf[8])):
print("Validação confirmada!")
else:
print("CPF invalido. Por favor informe outro CPF...")


obs.: eu creio que o valor da quantidade de posições deveria ser 11 pois é a quantidade de caracteres que um cpf tem.
GOSTEI 1

Mais Respostas

Enrico

Enrico

29/06/2020

Obrigado, realmente não tinha visto isso, mas ainda assim o codigo não está verificando corretamente só fica dando invalido você tem alguma ideia do que pode ser??




Boa noite...
O erro acontece pois no inicio do seu código você coloca um valor do range = 9 quer dizer que ele vai de 0 a 8 que equivale a 9 posições. Olha como fica seu código abaixo.:
lista1 = [10, 9, 8, 7, 6, 5, 4, 3, 2]
lista2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]

soma1 = 0
soma2 = 0

cpf = input("Digite o CPF: ")

for i in range(9):
print("cpf", int(cpf[i]), "*", lista1[i], "=", int(cpf[i]) * lista1[i])

soma1 = soma1 + (int(cpf[i])*lista1[i])
print("Soma da validação ", soma1)

validacao1 = (soma1*10)/11
print("Resultado da ((primeira soma * 10)/11) = ", validacao1)

resto_validacao1 = (soma1*10) % 11
print("Resto da primeira validação: ", resto_validacao1)

if resto_validacao1 == 10:
resto_validacao1 = 0

if resto_validacao1 == (int(cpf[8])):
print("Validação confirmada!!")
else:
print("CPF invalido..")

for i in range(9):
print("CPF ", int(cpf[i]), "Multiplicador", lista2[i], "resulta", int(cpf[i]) * lista2[i])

soma2 = soma2 + (int(cpf[i]) * lista2[i])
print("Soma da segunda verificação: ", soma2)

validacao2 = (soma2 * 10) / 11
print("Resultado da segunda soma ", validacao2)

resto_validacao2 = (soma2 * 10) % 11

if resto_validacao2 == 10:
resto_validacao2 = 0

print("Resto da segunda verificação: ", resto_validacao2)

if resto_validacao2 == (int(cpf[8])):
print("Validação confirmada!")
else:
print("CPF invalido. Por favor informe outro CPF...")


obs.: eu creio que o valor da quantidade de posições deveria ser 11 pois é a quantidade de caracteres que um cpf tem.
GOSTEI 0
Marcos Junior

Marcos Junior

29/06/2020

Boa tarde...
Nobre Enrico, veja o meu código que postei ou copie e cole e bote para roda, você verá que ele vai rodar sem erros, a unica maneira de haver erros é se você digitar a quantidade de caracteres do cpf diferente de 9 ou se você não organizar a indentação. Observe o código é veja o que está diferente do seu, e depois da um feedback aqui se deu certo...
GOSTEI 0
POSTAR