‘int’ object is not subscriptable. Listas en Python

publicado por: Anonymous

Buenas tardes, estoy haciendo un programa sencillo a modo didáctico que se encarga de llegar a un numero X con ciertas operaciones.
Mi código es el siguiente:

##Los numeros de la persona
numeroP1 = [0,0,0,0]
numeroP2 = [0,0,0,0]
##Los numeros de la computadora
numeroC1 = [0,0,0,0]
numeroC2 = [0,0,0,0]
numeroC3 = [0,0,0,0]

primerNumero = int(input("Ingresa un numero de 4 digitos "))


if primerNumero >= 1111 and primerNumero <= 9999: ##len() no funciona para int
    numeroP1[0] = primerNumero[0]
    numeroP1[1] = primerNumero[1]
    numeroP1[2] = primerNumero[2]
    numeroP1[3] = primerNumero[3]

    print ("El primer numero es: " , numeroP1[0])
    print ("El segundo  numero es: " , numeroP1[1])
    print ("El tercer numero es: " , numeroP1[2])
    print ("El cuarto numero es: " , numeroP1[3])

    numeroC2[0] = 9 - numeroP1[0]
    print ("La resta da: " , numeroC2[0])



else:
    print ("No has ingresado un numero de 4 digitos")

Necesito lograr que en numeroC2[0] se guarde y se muestre el resultado de (9 – numeroP1[0]). Es aquí donde me salta el error “TypeError: ‘int’ object is not subscriptable”. El mismo se encuentra en esta linea

numeroP1[0] = primerNumero[0]

Probe de esta forma pero tampoco funciono:

numeroP1[0] = int(primerNumero[0])

solución

El problema es que estás tratando el entero primerNumero como una lista. Para coger los dígitos, debes utilizar el módulo y divisiones enteras entre 10.

numeroP1[3] = primerNumero % 10
numeroP1[2] = primerNumero // 10 % 10
numeroP1[1] = primerNumero // 100 % 10
numeroP1[0] = primerNumero // 1000 % 10
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *