2011-11-22 11 views
21

Estaba intentando un código simple, obtengo el nombre y la edad de alguien y le hago saber cuándo cumplen 21 ... sin considerar los negativos y todo eso, al azar.Error: el objeto 'int' no es subscriptible

Sigo recibiendo este 'int' object is not subscriptable error.

name1 = raw_input("What's your name? ") 
age1 = raw_input ("how old are you? ") 
x = 0 
int([x[age1]]) 
twentyone = 21 - x 
print "Hi, " + name1+ " you will be 21 in: " + twentyone + " years." 
+0

¿Por qué dice que no se subscriptable en lugar de decir que no es indexable? – nog642

Respuesta

19

El problema está en la línea,

int([x[age1]]) 

Lo que queremos es

x = int(age1) 

También es necesario convertir el int a una cadena para la salida ...

print "Hi, " + name1+ " you will be 21 in: " + str(twentyone) + " years." 

El guión completo parece,

name1 = raw_input("What's your name? ") 
age1 = raw_input ("how old are you? ") 
x = 0 
x = int(age1) 
twentyone = 21 - x 
print "Hi, " + name1+ " you will be 21 in: " + str(twentyone) + " years." 
29

Al escribir x = 0 que está creando un nuevo int variable (nombre) y asignando un cero a la misma.

Cuando escribe x[age1] que está intentando acceder a la entrada age1, como si x fuera una matriz.

+5

La única respuesta para explicar realmente lo que está sucediendo, debe estar en la parte superior. – Caelum

6

Cuando se escribe x = 0, x es un int ... por lo que no se puede hacer porque x[age1]x es int

0

¿Qué está tratando de hacer aquí: int([x[age1]]) ?? No tiene sentido.

sólo hay que echar la entrada de la edad como un int:

name1 = raw_input("What's your name? ") 
age1 = raw_input ("how old are you? ") 
twentyone = 21 - int(age1) 
print "Hi, %s you will be 21 in: %d years." % (name1, twentyone) 
0

necesita convertir int edad1 en primer lugar, por lo que ha de hacer el signo menos. Después de que gire el resultado de nuevo a la cadena a mostrar:

name1 = raw_input("What's your name? ") 
age1 = raw_input ("how old are you? ") 
twentyone = str(21 - int(age1)) 
print "Hi, " + name1+ " you will be 21 in: " + twentyone + " years." 
1
name1 = input("What's your name? ") 
age1 = int(input ("how old are you? ")) 
twentyone = str(21 - int(age1)) 

if age1<21: 
    print ("Hi, " + name1+ " you will be 21 in: " + twentyone + " years.") 

else: 
    print("You are over the age of 21") 
Cuestiones relacionadas