Ошибка: объект 'int' не может быть подписан - Python - PullRequest
34 голосов
/ 22 ноября 2011

Я пытался написать простой код, узнать чье-либо имя и возраст и сообщить ему / ей, когда им исполнится 21 год ... не учитывая негативы и все такое, просто случайный.

Я получаю эту '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."

Ответы [ 7 ]

55 голосов
/ 22 ноября 2011

Когда вы набираете x = 0, это создает новую переменную int (имя) и присваивает ей ноль.

Когда вы набираете x[age1], который пытается получить доступ к age1 -ой записи, как если бы x был массивом.

28 голосов
/ 22 ноября 2011

Проблема в линии,

int([x[age1]])

То, что вы хотите, это

x = int(age1)

Вам также нужно преобразовать int в строку для вывода ...

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

Полный скрипт выглядит так:

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."
8 голосов
/ 22 ноября 2011

Когда вы пишете x = 0, x является целым числом ... поэтому вы не можете сделать x[age1], потому что x равно int

1 голос
/ 22 ноября 2011

Что вы пытаетесь сделать здесь: int([x[age1]]) ??Это не имеет смысла.

Вам просто нужно привести возрастное значение как 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 голосов
/ 20 февраля 2019

Ну, все эти ответы верны, но вот более современный способ сделать это!

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 голосов
/ 27 января 2017
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 голосов
/ 22 ноября 2011

Вам нужно сначала преобразовать age1 в int, чтобы он мог использовать минус. После этого переведите результат обратно в строку для отображения:

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