2011-11-22 9 views
21

Stavo provando un semplice pezzo di codice, ho ottenuto il nome e l'età di qualcuno e glielo faccio sapere quando compiono 21 anni ... non considerando i negativi e tutto il resto, solo casuali.Errore: l'oggetto 'int' non è indicativo

Continuo a ricevere questo errore 'int' object is not subscriptable.

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

Perché si dice che non è subscriptable invece di dire che non è indicizzabile? – nog642

risposta

19

Il problema è nella linea,

int([x[age1]]) 

quello che vuoi è

x = int(age1) 

È inoltre necessario convertire l'int in una stringa per l'uscita ...

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

Lo script completo assomiglia,

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

Quando si digita x = 0 che sta creando una nuova int variabile (nome) e l'assegnazione di uno zero ad esso.

Quando si digita x[age1] che sta tentando di accedere alla voce age1, come se x fosse una matrice.

+5

L'unica risposta per spiegare effettivamente cosa sta succedendo, dovrebbe essere al top. – Caelum

6

Quando si scrive x = 0, x è un int ... quindi non si può fare perché x[age1]x è int

0

Che cosa stai cercando di fare qui: int([x[age1]]) ?? Non ha senso.

Non vi resta che lanciare l'ingresso età come 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

è necessario convertire AGE1 in int prima, in modo che possa fare il segno meno. Dopo di che girare il risultato di nuovo a stringa per la visualizzazione:

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") 
Problemi correlati