2011-11-22 75 views
21

我正在尝试一段简单的代码,获取某人的姓名和年龄,并让他/她知道他们何时21岁......不考虑负面信息和所有这些,只是随机。错误:'int'对象不是可订阅的

我一直收到这个'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

为什么它说,它不会代替标化说这是不是可转位的? – nog642

回答

19

的问题是在该行,

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

当你键入x = 0是创建一个新的int变量(名称),并为其分配一个零。

当您键入试图访问age1'th条目的x[age1]时,就好像x是一个数组。

+5

实际解释发生了什么的唯一答案应该在顶部。 – Caelum

6

当你写x = 0x是一个int ...所以你不能这样做,因为x[age1]xint

0

什么是你想在这里做的: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

你需要先转换AGE-1转换成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." 
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")