web-dev-qa-db-fra.com

Erreur: l'objet 'int' n'est pas souscriptable - Python

J'essayais un simple morceau de code, obtenais le nom et l'âge de quelqu'un et le lui faisais savoir quand il aurait 21 ans… sans tenir compte des négatifs et de tout ça, juste au hasard.

Je continue à avoir ce 'int' object is not subscriptable Erreur.

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."
37
Gal Appelbaum

Le problème est dans la ligne,

int([x[age1]])

Ce que tu veux c'est

x = int(age1)

Vous devez également convertir le int en chaîne pour la sortie ...

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

Le script complet ressemble,

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."
32
Charles

Lorsque vous tapez x = 0 qui crée une nouvelle variable int (nom) et lui attribue un zéro.

Lorsque vous tapez x[age1] qui tente d'accéder au age1 _ e entrée, comme si x était un tableau.

56
Jonathon Reinhart

Quand vous écrivez x = 0, x est un int ... vous ne pouvez donc pas faire x[age1] parce que x est int

8
TJD

Qu'est-ce que vous essayez de faire ici: int([x[age1]]) ?? Cela n'a aucun sens.

Il vous suffit de convertir l’âge en tant que 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)
1
juliomalegria

Vous devez convertir age1 en int d'abord, pour que vous puissiez faire le moins. Après cela, retournez le résultat en chaîne pour l'affichage:

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."
0
勿绮语

Eh bien, toutes ces réponses sont correctes, mais voici une façon plus moderne de le faire!

name1 : str = input("What's your name? ")
age1 : int = int(input ("how old are you? "))
twentyone : int = 21 - age1
print('Hi, {}, you will be 21 in: {} years'.format(name1, age1))
0
Andrej Hatzi
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")
0
Jacob Morgan